文章内容
2017/10/26 13:54:59,作 者: 黄兵
Docker的安装,配置,更新和卸载
在Linux中开启Docker引擎
我们可以在Linux中安装Docker并运行Hello world应用程序。通过下面这些操作,我们将会学到更多有关于Docker的基础特征。我们将会学到如何:
- 安装Docker引擎
- 在一个容器中运行软件镜像
- 在Docker Hub中浏览一个镜像
- 创建你的镜像,并且在容器中运行它
- 创建一个Docker Hub账户和一个镜像库
- 创建你自己的镜像
- 将你的镜像放到Docker Hub中让其他人使用
该开始教程是用于减少用户碰到问题的可能性,为了能够测试成功,一定要遵循下面说明的步骤来进行操作。该过程将会消耗大约45分钟。
确保你了解。。。
该开始教程使用命令行来进行相应的操作。你不必特别熟悉命令行,但是你应该了解如何打开shell或终端,并且在那个环境中运行基本的命令。它帮助我们了解如何去导航一个目录树,操作文件,列举运行的进程等等。
安装Docker(在Ubuntu中)
Ubuntu
Docker支持下面的这些Ubuntu操作系统:
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Wily 15.10
- Ubuntu Trusty 14.04 (LTS)
- Ubuntu Precise 12.04 (LTS)
该页指导你使用Docker管理发行包和安装机制来安装Docker。使用这些包能够确保你获得最新的Docker发行版。如果你希望使用Ubuntu管理包进行安装,可以查阅一个UBuntu资料。
- 1
- 2
要求
不管你的Ubuntu版本是什么,Docker要求64位系统安装。除此之外,你的内核最低版本要求为3.10。最近的3.10的较小版本或最新的维护版本都是可以接受的。
版本低于3.10的内核缺少一些运行Docker容器的特征。这些较老版本的内核被了解到,存在一些bug,这些bug将会导致数据丢失;并且在特定条件下,会导致频繁的恐慌。
你可以打开一个终端,使用uname -r
来检查你的当前内核版本。
- 1
- 2
- 3
- 1
- 2
更新你的apt源
Docker的APT
库包含Docker 1.7.1和更高版本。为了设置APT
从最新的库中使用包:
- 使用
sudo
或root
权限,作为一个用户登陆你的机器 - 打开一个终端窗口
- 更新包信息,确定APT以
https
方法工作,并且CA证书已被安装。
- 1
- 2
- 添加新的
GPG
键
- 1
- 使用你喜欢的编辑器打开
/etc/apt/sources.list.d/docker.list
文件。如果文件不存在,则创建他。 - 移除所有存在的条目。
为你的Ubuntu操作系统添加一个条目。
可能的条目为:在Ubuntu Precise 12.04 (LTS)中
- 1
在Ubuntu Trusty 14.04 (LTS)中
- 1
在Ubuntu Wily 15.10中
- 1
在Ubuntu Xenial 16.04(LTS)
- 1
注意:Docker并不为所有的架构提供包。你可以在 https://master.dockerproject.org 中找到构建的二进制。为了在多架构系统上安装docker,向条目中添加一个
[arch=...]
元素。细节参考Debian Multiarch wiki保存和关闭
/etc/apt/sources.list.d/docker.list
文件。- 更新
APT
包索引。
- 1
- 如果旧的repo存在则清除
- 1
- 验证
APT
是否是从正确的库中拉取下来的。
- 1
从现在开始,当你再运行apt-get upgrade
的时候,APT
会从最新的库中拉取出来。
Ubuntu版本的条件
- Ubuntu Xenial 16.04 (LTS)
- Ubuntu Wily 15.10
- Ubuntu Trusty 14.04 (LTS)
对于Ubuntu Trusty,Wily和Xenial来说,我们推荐您安装linux-image-extra
内核包。linux-image-extra
包允许你使用aufs
存储驱动。
为了给您的内核版本安装linux-image-extra
包:
- 在你的Ubuntu系统中打开一个终端。
- 更新你的包管理器。
- 1
- 安装推荐的包
- 1
- 继续安装Docker
如果你正在Ubuntu 14.04或12.04中安装,apparmor
是需要的。你可以使用apt-get install apparmor
来安装它。
Ubuntu Precise 12.04 (LTS)
对于Ubuntu Precise来说,Docker需要3.13的内核版本。如果你的内核版本必3.13低,你必须更新它。查看这个表格来看对于你的环境需要哪些包。
为了更新你的内核和安装额外的包,做下列操作:
- 打开一个终端。
- 更新包管理器
- 1
- 必须的和可选的包都要安装
- 1
依赖于你的环境,你可能需要安装更多,正如在上述表格中描述的。
- 重启你的宿主机。
- 在系统重启之后,继续安装Docker。
安装
确定你已经安装了你Ubuntu版本的必要条件。然后,使用下面的命令安装Docker:
- 使用
sudo
特权作为一个用户登陆你的Ubuntu。 - 更新你的
APT
包索引。
- 1
- 安装Docker。
- 1
- 开启
docker
域
- 1
- 验证
docker
被正确安装
- 1
该命令会向容器中下载一个测试镜像并且运行它。当容器运行成功,就会打印一个信息,然后退出。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
可选配置
该小节包含可选的过程,用于配置你的Ubuntu更好的运行Docker。
- 创建docker组
- 适应内存和交换
- 使能UFW转发
- 配置一个DNS服务器来用
- 配置Docker开机自启
创建一个Docker组
docker
域是和Unix的一个套接字绑定的,而不是一个TCP端口。默认情况下,Unix套接字是属于用户root
的,并且其他用户能够使用sudo
访问他。处于这个原因,docker
域会一直以root
用户运行。
为了避免在使用docker
命令的时候必须要使用sudo
,我们需要创建一个Unix组称作docker
,并且向该组中添加用户。当docker
域启动的时候,Unix套接字的读写所有权由docker
组拥有。
- 1
- 2
为了创建docker
组和添加你的用户:
- 使用
sudo
权限登陆Ubuntu。 - 创建
docker
组
- 1
- 向
docker
组中添加你的用户
- 1
- 登出再登入
这个确保你的用户以正确的权限运行。 - 不使用
sudo
运行docker
来验证您的工作。
- 1
如果失败信息和下面类似:
- 1
检查DOCKER_HOST
环境变量是否被设置,如果为设置,则重新设置。
调整内存和交换分区
当用户运行Docker的时候,当运行一个镜像的时候,他们可能会看到下面这些信息:
- 1
- 2
为了阻止这些信息,就需要使能你系统上的内存和交换分区(memory and swap accounting)。使能内存和交换分区能够引起内存开销和降解性能,即使Docker并没有在使用。内存开销大约是所有可用内存的1%。性能大约降解10%。
为了在使用GNU GRUB的系统上使能内存和交换分区,遵循下面的步骤:
- 作为一个用户使用
sudo
特权来登陆Ubuntu。 - 编辑
/etc/default/grub
文件。 - 像下面这样设置
GRUB_CMDLINE_LINUX
值。
- 1
- 保存并关闭文件
- 更新GRUB
- 1
- 重启系统
使能UFW转发
如果在你运行Docker,在同样的宿主机上使用UFW(Uncomplicated Firewall)的时候,你将需要做额外的配置。Docker使用一个桥来管理容器网络。默认情况下,UFW丢弃所有的转发消息。结果是,当UFW被使能了,Docker要想去运行,你必须设置UFW的转发策略。
UFW的默认设置规则是拒绝所有的进来的消息。如果你想要另一个主机到达你的容器,你需要在Docker端口上允许进入的连接。如果LTS被使能,则Docker的默认端口为2376
,如果没有,则端口为2375
。如果TLS没有被使能,通信是未被加密的。默认情况下,Docker是在TLS未被使能的情况下运行的。
为了配置UFW和在Docker端口上允许进入的连接:
- 作为用户以
sudo
登陆。 - 验证UFW是否被安装和被使能。
- 1
- 打开
/etc/default/ufw
并编辑。
- 1
- 设置
DEFAULT_FORWARD_POLICY
策略为:
- 1
- 保存并关闭文件
- 重新加载UFW来使用新的设置。
- 1
- 在Docker端口上允许进入的连接。
- 1
配置一个DNS服务器让Docker使用
在桌面上运行Ubuntu系统或Ubuntu衍生系统,在/etc/resolv.conf
文件中,典型的使用127.0.0.1
作为默认的nameserver
。网络管理器也会设置dnsmasq
来使用真实的DNS服务器,并且在/etc/resolv.conf
中设置nameserver 127.0.0.1
。
当使用这些配置在桌面机器上开启容器,Docker用户将会看到这个警告:
- 1
- 2
该警告的出现是因为Docker容器不能使用本地的DNS域名服务器。Docker默认使用一个外部的域名服务器。
为了避免这个警告,你可以指定一个DNS服务器让Docker容器来使用。或者是,你可以在网络管理器中禁用dnsmasq
。不过,禁用dnsmasq
可能会导致DNS在一些网络中变慢。
下面的指令描述了如何配置运行在Ubuntu14.10或较低版本的上的Docker域。Ubuntu 15.04和更高版本使用systemd
作为启动和服务管理器。有关与systemd
的配置可以参考这篇文章,control and configure Docker with systemd。
为了指定一个DNS服务器让Docker使用:
- 作为一个用户身份以
sudo
方式登陆系统。 - 打开
/etc/default/docker
文件编辑。 - 添加一个设置。
- 1
使用本地DNS服务器,例如 192.168.1.1
替换8.8.8.8
。你也可以指定多个DNS服务器。将他们之间用空格分离。例如:
- 1
- 1
- 2
- 保存并关闭文件
- 重启Docker域。
- 1
或者是,对之前的操作作为一个可选的选项,就是在网络管理器中禁用dnsmasq
。
- 打开
/etc/NetworkManager/NetworkManager.conf
文件。 - 注释掉
dns=dnsmasq
这一行。 - 保存并且关闭文件。
- 重启网络管理器和Docker.
- 1
- 2
配置Docker开机自启动
Ubuntu 15.04及以上系统使用systemd
作为它的启动和服务管理器,Ubuntu 14.10及其低版本使用upstart
。
对于15.04
及其以上版本来说,为了配置docker
域开机自启,运行:
- 1
对于14.10
及其较低版本,上述的安装方法自动配置upstart
开使docker域开机的时候自动启动。
更新Docker
安装最新版本的Docker使用apt-get
:
- 1
卸载
卸载Docker包:
- 1
卸载Docker包及其以来不再需要使用下面的命令:
- 1
上面的命令不会移除镜像,容器,卷或者是用户创建的配置文件。如果你想删除所有的镜像,容器和卷,运行下面的命令:
- 1
你必须手动删除用户创建的配置文件。
本文转载自:Docker的安装,配置,更新和卸载
评论列表