官方文档:https://docs.docker.com/
中文社区:https://www.docker.org.cn/index.html
安装/卸载
安装
-
进入官方文档
-
打开侧边栏
-
Get Docker-> Docker Engine – Community或 Docker Enterprise-> 选择属于自己操作系统的教程进行安装
本地步骤(20190804)
-
更新包列表
$ sudo apt-get update
-
安装包以允许通过HTTPS使用存储库
$ sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
-
添加官方 GPG 密钥
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
搜索指纹的最后 8 个字符验证密钥指纹$ sudo apt-key fingerprint 0EBFCD88
-
设置稳定版(stable)的存储库,另外还可以设置每日最新版本(nightly)或测试版本(test)
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
-
更新包列表
$ sudo apt-get update
-
开始安装 Docker Engine
$ sudo apt-get install -y docker-ce docker-ce-cli containerd.io
-
另外建议做一下添加用户至 docker 组和更改 docker 镜像源
需注意的步骤
-
添加
GPG
密钥的时候使用国内GPG$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
-
向 sources.list中添加Docker软件源,参考
-
安装完成后添加当前用户进docker组,以后就不用每次输命令都用
sudo
啦,参考
Code01
$ sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
Code02
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
# 注销,重新登录
$ init 5
修改镜像源(可选)
这部分内容主要是为了加速镜像源的下载,否则直接下载下载速度可能会很低,毕竟docker服务器在国外。
国内的镜像源有
-
docker官方中国区:https://registry.docker-cn.com
-
网易:http://hub-mirror.c.163.com
-
ustc:http://docker.mirrors.ustc.edu.cn
-
阿里云:http://<你的ID>.mirror.aliyuncs.com
方法一(推荐)
修改 /etc/docker/daemon.json 文件
docker默认的源为国外官方源,下载速度较慢,可改为国内镜像加速下载镜像
华中科大官方文档:https://lug.ustc.edu.cn/wiki/mirrors/help/docker
Linux 编辑该文件:/etc/docker/daemon.json
Windows 编辑该文件:%programdata%\docker\config\daemon.json
# 推荐华中科大,网易的不稳定
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
ubuntu14.04 以下使用下面的方法
对于使用 upstart 的系统而言,编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
方法二
修改 /etc/default/docker 文件
$ sudo echo "DOCKER_OPTS=\"--registry-mirror=http://hub-mirror.c.163.com\"" >> /etc/default/docker
方法三
在下载的时候,指定镜像源
$ docker run hello-world --registry-mirror=https://docker.mirrors.ustc.edu.cn
方法四
systemctl 处设置启动参数
$ sudo systemctl edit docker.service
$ /etc/systemd/system/docker.service.d/override.conf
# 加入以下内容
[Service]
ExecStart=/usr/bin/docker -d -H fd:// --registry-mirror=https://docker.mirrors.ustc.edu.cn
完成后重启docker
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
脚本安装
官方脚本地址:https://github.com/docker/docker-install
-
官方安装:
$ curl -sSL https://get.docker.com/ | sh
-
阿里云安装(20190801安装失败):
$ curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
-
DaoCloud安装(20191024安装失败):
$ curl -sSL https://get.daocloud.io/docker | sh
-
官方安装,指定阿里源安装(20200214安装失败):
$ curl -fsSL https://get.docker.com -o get-docker.sh | sudo sh get-docker.sh --mirror Aliyun
速食命令
# step 1: 安装必要的一些系统工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates $ curl software-properties-common
# step 2: 安装GPG证书
$ curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
$ sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
$ sudo apt-get -y update
$ sudo apt-get -y install docker-ce
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
# docker-ce | 17.03.1~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# docker-ce | 17.03.0~ce-0~ubuntu-xenial | http://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]
卸载
-
卸载软件包
$ sudo apt-get purge docker-ce
-
主机上的镜像、容器、卷或自定义配置文件不会自动删除。要删除所有镜像,容器和卷使用该命令
$ sudo rm -rf /var/lib/docker
服务命令
summary
常用命令
docker 相关
-
拉取容器
$ docker pull <container-name>
-
运行容器
$ docker run <container-name>
-
运行容器在停止后自动销毁
$ docker run --rm <container-name>
-
后台运行容器并映射端口
$ docker run -d -p <container-port1>:<host-port1> -p <container-port2>:<host-port2> <container-name>
-
后台运行容器并映射目录
$ docker run -d -v <host-dir1>:<container-dir1> -v <host-dir2>:<container-dir2> <container-name>
-
测试容器连通性
$ docker exec -it <source-container-name> ping <target-container-name>
-
容器错误排查
$ docker logs <container-name>
-
查看已有网络
$ docker network ls
-
杀死所有正在运行的容器
$ docker kill $(docker ps -a -q)
-
删除所有已经停止的容器
$ docker rm $(docker ps -a -q)
-
删除所有未打 dangling 标签的镜像
$ docker rmi $(docker images -q -f dangling=true)
-
删除所有镜像
$ docker rmi $(docker images -q)
-
进入容器
$ docker exec -it <target-container-name> /bin/bash
-
查看容器进程
$ docker top <target-container-name>
-
查看容器挂载的目录
$ docker inspect <target-container-name> | grep Mounts -A 20
-
查看容器地址
$ docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
-
其它方法:
$ docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
-
显示所有:
$ docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)
-
命令创建别名
# ~/.bash_aliases
# 杀死所有正在运行的容器.
alias dockerkill='docker kill $(docker ps -a -q)'
# 删除所有已经停止的容器.
alias dockercleanc='docker rm $(docker ps -a -q)'
# 删除所有未打标签的镜像.
alias dockercleani='docker rmi $(docker images -q -f dangling=true)'
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean='dockercleanc || true && dockercleani'
compose 相关
-
如果compose文件名字非默认的 docker-compose.yml或 docker-compose.yaml,需要在
docker-compose
命令后面加上-f <compose-filename>
参数。 -
在命令后面可加上
container-name
指定要操作的容器,如:docker-compose logs <container-name>
-
构建启动容器
docker-compose up -d
-
暂停容器
docker-compose pause
-
恢复容器
docker-compose unpause
-
删除容器
docker-compose rm
-
停止容器
docker-compose stop
-
启动容器
docker-compose start
-
登录到容器中
docker-compose exec bash
-
删除所有容器,镜像
docker-compose down
-
显示所有容器
docker-compose ps
-
重新启动容器
docker-compose restart
-
在 php-fpm中不启动关联容器,并容器执行
$ php -v
执行完成后删除容器docker-compose run --no-deps --rm php-fpm php -v
-
构建镜像
docker-compose build
-
不带缓存的构建
docker-compose build --no-cache
-
查看的日志
docker-compose logs
-
验证配置文件
docker-compose config -q
-
以json的形式输出的docker日志
docker-compose events --json
docker 命令
官方文档:https://docs.docker.com/ee/
参考地址:http://www.runoob.com/docker/docker-command-manual.html
dockerfile 指令解析
官方文档:https://docs.docker.com/engine/reference/builder/
参考地址:https://yeasy.gitbooks.io/docker_practice/image/dockerfile/
python 模板
FROM python:3.7
COPY ./pip.conf /root/.config/pip/
WORKDIR /source_code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
构建
-
新建文件夹
mkdir <dirname>
(可选,但推荐) -
在目标目录中创建 Dockerfile文件
$ vim Dockerfile
-
写入自定义配置内容…
-
使用
docker build .
命令构建新的镜像,注意那个点,表示使用当前目录配置文件,若在构建时需要对镜像命名,则使用-t
参数docker build -t <image-name> .
-
使用
docker run -it <image-name> bash
进入系统
在构建部分有版本要求的镜像时尽量不要用 lastst版本,为了配置个国内源,曾在寻找 ubuntu:lastst 版本号中消耗大量时间
compose 命令解析
官方文档:https://docs.docker.com/compose/compose-file/
参考地址:https://www.jianshu.com/p/2217cfed29d7
注意:配置版本有区别
volumes
共享卷
example
version: "3.2"
services:
web:
image: nginx:alpine
volumes:
- type: volume
source: mydata
target: /data
volume:
nocopy: true
- type: bind
source: ./static
target: /opt/app/static
db:
image: postgres:latest
volumes:
- "/var/run/postgres/postgres.sock:/var/run/postgres/postgres.sock"
- "dbdata:/var/lib/postgresql/data"
volumes:
mydata:
dbdata:
短语法
volumes:
# 在指定路径创建一个卷
- /var/lib/mysql
# 指定绝对路径映射
- /opt/data:/var/lib/mysql
# 主机上相对于合成文件的路径
- ./cache:/tmp/cache
# 用户相对路径
- ~/configs:/etc/configs/:ro
# 命名卷
- datavolume:/var/lib/mysql
长语法
-
type -> 装载类型卷、绑定或tmpfs
-
source -> 装载源、绑定装载主机上的路径或顶层卷密钥中定义的卷的名称。不适用于tmpfs安装
-
target -> 安装卷的容器中的路径
-
read_only -> 是否只读
-
bind -> 配置其他绑定选项
-
propagation -> 用于绑定的传播模式
-
-
volume -> 配置其他卷选项
-
nocopy -> 创建卷时禁止从容器复制数据
-
-
tmpfs -> 配置其他的 tmpfs 选项
-
size -> tmpfs 装载的大小(以字节为单位)
-
nginx 配置模板
version: "3"
services:
nginx:
image: nginx
ports:
- "80:80"
- "443:443"
networks:
- www
volumes:
# 主配置文件
- "./nginx/nginx.conf:/etc/nginx/nginx.conf"
# 站点配置文件
- "./nginx/conf.d:/etc/nginx/conf.d"
# 日志文件
- "./nginx/log:/var/log/nginx"
# 运行文件
- "./nginx/run:/run"
networks:
www:
python 模板
version: "3"
services:
backend:
build: ./backend/
networks:
- www
networks:
www:
来源:freebuf.com 2021-01-18 08:36:17 by: 0xn0ne
请登录后发表评论
注册