红联Linux门户
Linux帮助

Install Docker on Ubuntu系统

发布时间:2016-08-05 15:20:30来源:linux网站作者:张洪海
目前支持的 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 文档(https://docs.docker.com/engine/admin/systemd/#custom-docker-daemon-options)
Install Docker on Ubuntu系统
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
必须手动删除用户创建的配置文件。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/23025.html