Install Docker on Ubuntu
目前支持的 Ubuntu 版本:
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Wily 15.10
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Precise 12.04 (LTS)
Prerequisites
内核版本不能低于 3.10
$ uname -r 3.11.0-15-generic
如果之前使用 APT 安装过 Docker,需确保更新 APT 源至新的 Docker repository。
Update your apt sources
1、使用 sudo 权限或 root 用户登录
2、开启一个终端窗口
3、更新包信息,确保 APT 以 https 方式工作,安装 CA 证书
$ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates
4、添加新的 GPG key
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
5、编辑 /etc/apt/sources.list.d/docker.list 文件,如果不存在就创建一个
6、删除所有已存在的条目
7、添加一条
# On Ubuntu Trusty 14.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-trusty main
# On Ubuntu Xenial 16.04 (LTS)
deb https://apt.dockerproject.org/repo ubuntu-xenial main
8、保存并关闭 /etc/apt/sources.list.d/docker.list 文件
9、更新 APT 包索引
$ sudo apt-get update
10、清空旧的 repo(如果存在的话)
$ sudo apt-get purge lxc-docker
11、验证 repository 生效
$ apt-cache policy docker-engine
Prerequisites by Ubuntu Version
对于 Ubuntu 14.04、15.10、16.04,建议安装 linux-image-extra 内核包,linux-image-extra 包使你可以使用 aufs 存储驱动。
1、开启一个终端窗口
2、更新包管理器
$ sudo apt-get update
3、安装建议的包
$ sudo apt-get install linux-image-extra-$(uname -r)
4、继续安装 Docker
如果是 Ubuntu 14.04 或 12.04,需要安装 apparmor
apt-get install apparmor
Install
确保先决条件已经满足,然后开始安装 Docker
1、使用 sudo 权限用户登录
2、更新 APT 包索引
$ sudo apt-get update
3、安装 Docker
$ sudo apt-get install docker-engine
4、启动 Docker 守护进程
$ sudo service docker start
5、验证 Docker 是否正确安装
$ sudo docker run hello-world
这个命令会下载一个测试镜像并在容器内运行,它会输出一组信息到屏幕,然后退出。
Optional configurations
Create a Docker group
Docker 守护进程与 Unix socket 绑定,而不是 TCP 端口。默认情况下 Unix socket 属于 root 用户,其他用户可以通过 sudo 命令进行访问。因此,Docker 守护进程一直是以 root 用户的身份运行。
为了避免每次使用 docker 命令需要 sudo,可以创建一个名字是 docker 的 Unix 组,把用户加到这个组里。这样,当 docker 守护进程启动时,它会给这个组赋予 Unix socket 的读写权限。
警告:docker 组相当于 root 用户,这对于你的系统有哪些安全影响,详细细节请参照 Docker Daemon Attack Surface 文档。
创建 docker 组并添加用户:
1、使用 sudo 权限用户登录
2、创建 docker 组
$ sudo groupadd docker
3、将用户添加到 docker 组
$ sudo usermod -aG docker $USER
4、注销重新登陆
5、验证不需要 sudo 就可以执行 docker 命令
$ docker run hello-world
如果失败提示如下类似信息:
Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
检查 DOCKER_HOST 环境变量是否已设置。
Adjust memory and swap accounting
运行 docker 时,可能会收到如下警告:
WARNING: Your kernel does not support cgroup swap limit. WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.
为避免出现此类信息,需要在你的系统上启用 memory and swap accounting。
启用后,会增加内存开销和性能下降,即时 docker 没在运行的时候。内存开销会增加约 1%,性能下降约 10%。
1、使用 sudo 权限用户登录
2、编辑 /etc/default/grub 文件
3、设置 GRUB_CMDLINE_LINUX 的值如下
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
4、保存并关闭文件
5、更新 GRUB
$ sudo update-grub
6、重启系统
Enable UFW forwarding
如果有在使用 UFW 防火墙,还需要做些额外的配置。Docker 使用 bridge 来管理容器网络,默认情况下 UFW 会丢弃所有的转发流量,因此需要配置 UFW 的转发策略。
同样的,UFW 的默认规则会拒绝所有入站流量。远程连接 Docker,启用 TLS 时的默认端口是 2376,未启用时是 2375。Docker 默认不启用 TLS,未启用 TLS 时,通讯是不加密的。
配时 UFW 允许入站的连接:
1、使用 sudo 权限用户登录
2、确认 UFW 是否安装并启用
$ sudo ufw status
3、编辑 /etc/default/ufw 文件
$ sudo nano /etc/default/ufw
4、设置 DEFAULT_FORWARD_POLICY 为:
DEFAULT_FORWARD_POLICY="ACCEPT"
5、保存并关闭文件
6、重新加载 UFW
$ sudo ufw reload
7、允许 Docker 端口的入站访问
$ sudo ufw allow 2375/tcp
Configure a DNS server for use by Docker
Ubuntu 系统一般都使用 127.0.0.1 作为默认的 nameserver,在 /etc/resolv.conf 中配置。
这样启动容器时会有警告:
WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containers can't use it. Using default external servers : [8.8.8.8 8.8.4.4]
原因是 Docker 容器无法使用本地的 DNS 服务器,默认是使用外部的 DNS。
为避警告,可以指定一个 DNS 服务器或者在 NetworkManager 中禁用 dnsmasq,禁用 dnsmasq 会导致某些网络下 DNS 解析变慢。
Ubuntu 15.10 及以上版本是使用 systemd 作为启动和服务管理器,参照 control and configure Docker with systemd 文档
Ubuntu 14.10 及以下版本配置方法:
1、使用 sudo 权限用户登录
2、编辑 /etc/default/docker 文件
$ sudo nano /etc/default/docker
3、添加一条设置
DOCKER_OPTS="--dns 8.8.8.8"
也可以设置多个 dns 服务器
--dns 8.8.8.8 --dns 192.168.1.1
4、保存并关闭文件
5、重启 Docker 守护进程
$ sudo service docker restart
或者通过禁用 dnsmasq 的方法:
1、编辑 /etc/NetworkManager/NetworkManager.conf 文件
$ sudo nano /etc/NetworkManager/NetworkManager.conf
2、注释掉 dns=dnsmasq 行:
dns=dnsmasq
3、保存并关闭文件
4、重启 NetworkManager 和 Docker
$ sudo restart network-manager $ sudo restart docker
Configure Docker to start on boot
Ubuntu 15.04 版本以上使用 systemd 作为启动和服务管理器,14.10 版本以下使用 upstart。
15.04 以上版本,配置 docker 开机启动
$ sudo systemctl enable docker
14.10 以下版本,通过上述的安装过程会自动配置开机启动
Upgrade Docker
使用 apt-get 安装 Docker 最新版本:
$ sudo apt-get upgrade docker-engine
Uninstallation
卸载 Docker 包:
$ sudo apt-get purge docker-engine
卸载 Docker 及其依赖包:
$ sudo apt-get autoremove --purge docker-engine
上诉命令不会移除镜像、容器、卷和用户创建的配置文件,使用如下命令可删除所有的镜像、容器和卷:
$ rm -rf /var/lib/docker
必须手动删除用户创建的配置文件。