# Docker
:一个管理镜像、容器的软件。
- 官方文档 (opens new window)
- 发音为
/ˈdɒkə(r)/
。 - 采用 Golang 语言开发,通过名为 Moby 的项目开源。
- 提供了用于 Linux、MacOS、Windows 系统的软件安装包。
# 安装
在 CentOS 上安装:
yum install -y yum-utils # 安装 yum-config-manager yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 添加 docker 的官方镜像源 yum install -y docker-ce # 下载 docker 社区版 systemctl start docker # 启动 dockerd systemctl enable docker # 使 dockerd 开机自启
在 ubuntu 上,可以用官方脚本自动安装:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
# 版本
- 2013 年,dotCloud 公司发布 Docker 软件。
- 2017 年 3 月,Docker 的软件版本号从 v1.13 升级到 17.03 ,从数字编号改为日期格式。并且分为两种发行版:
- Docker CE :社区版(Community Edition),免费提供。
- Docker EE :企业版(Enterprise Edition),增加了一些收费的功能。
# 配置
dockerd 的配置文件默认位于
/etc/docker/daemon.json
,且默认未创建。内容示例:{ // dockerd 配置 // "containerd": "/run/containerd/containerd.sock", // "containerd-namespace": "docker", // "data-root": "/var/lib/docker", // dockerd 的数据目录 // "log-level": "info", // "debug": false, // 是否开启调试模式 // "exec-root": "/var/run/docker", // dockerd 的工作目录 "insecure-registries" : ["10.0.0.1:80"], // dockerd 默认以 HTTPS 方式访问镜像仓库服务器。如果服务器不支持 SSL 认证,则需要将其地址加入白名单 "live-restore": true, // 当 dockerd 终止时,是否保持容器运行。默认为 false ,建议启用,方便重启 dockerd // "oom-score-adjust": -500, // dockerd 的 oom_score_adj // "selinux-enabled": false, "registry-mirrors": [ // docker 默认采用官方镜像仓库 docker.io ,这里可添加对该仓库的镜像代理,需要部署官方 registry 服务器。只能 pull 不能 push ,不支持代理第三方仓库 "https://harbor.test.com" ], // 网络配置 // "bridge": "bridge", // 新建容器时采用的 docker network 。默认为 bridge ,改为 none 则无网络 "default-address-pools": [ // docker network 的虚拟子网范围,默认为 172.[17-31].0.0/16 和 192.168.[0-240].0/20 { "base": "172.30.0.0/16", // 可在该范围创建子网,比如 172.30.0.0/24、172.30.1.0/24 "size": 24 // 子网掩码的长度,增加其值有利于创建更多子网 } ], // "ip-forward": true, // 是否开启 net.ipv4.ip_forward // "ip-masq": true, // 是否自动配置 iptables 规则来实现 masquerade ,使得只有私有 IP 的容器能够与其它主机通信 // "iptables": true, // 是否允许 dockerd 自动配置 iptables 规则来维护容器网络 // 创建容器时的默认配置。修改这些配置不会影响已创建的容器,只会影响到新创建的容器 // "default-runtime": "runc", // "default-shm-size": "64M", // "default-ulimits": { // "nofile": { // "Name": "nofile", // "Hard": 64000, // "Soft": 64000 // } // }, // "dns": ["8.8.8.8"], // 容器默认的 DNS 服务器 "log-driver": "json-file", // 设置日志驱动器的类型,默认为 json-file "log-opts": { "max-size": "50m" // 日志文件的最大大小。超过该大小则滚动一次,创建一个新日志文件继续写入 "max-file": "2" // 最多保留多少份日志文件。至少为 2 份才支持滚动 }, // "shutdown-timeout": 15, // 停止容器时的超时时间 // 是否启用可选功能 // "features": { // "buildkit": false // } }
- 修改配置之后,需要重启 dockerd 。
- 当 dockerd 运行出错时,建议执行
journalctl -u docker.service
看详细日志,还可设置"log-level": "debug"
。
docker 命令的配置文件存放在
$HOME/.docker/
目录下。如果想让 dockerd 使用代理,需要在
/usr/lib/systemd/system/docker.service
中加入环境变量:[Service] Environment="HTTP_PROXY=socks5://10.0.0.1:1080"
然后重启 dockerd :
systemctl daemon-reload systemctl restart docker
- 同理,也可以在容器内添加环境变量 HTTP_PROXY ,一些容器内应用支持通过这种方式配置代理。