Docker
的安装非常的简单和快捷,当前Docker
已支持大多数Linux发行版,包括:Ubuntu
、Red Hat
、CentOS
、SUSE
、Fedora
、Debian
等,也可以在AWS、Aliyun等云平台安装。Docker
基于LXC
实现容器相关功能,要在Mac OS X
或Windows
中运行Docker
就需要借助Docker Toolbox
等工具模拟一个Docker
虚拟环境。
1. Docker
安装条件
通过上一篇对Docker
介绍,我可以了解到Docker
对运行环境有一些要求,具体如下:
- 64位CPU,当前只支持
amd64
、x86_64
3.0+
版本的Linux内核,虽然一些老版本(如:2.6.x或其后)的版本的内核也能运行,便会有各种问题,不建议使用- Linux内核必须支持
cgroup
和namespace
- Linux内核必须支持以下存储驱动之一:
Device Mapper
(默认)Device Manager
AUFS
vfs
btrfs
自2017年3月起,Docker发行版分成了CE
(Community Edition)和EE
版(Enterprise Edition),在本文示例中,我们使用CE
版本的。
2. CentOS
安装Docker
2.1 环境检查
系统需求
官方提供支持的CentOS
系统当前只有64位的CentOS 7
发行版。当然这不并意味你不能CentOS 6
等其它CentOS
中使用,理论上讲只要满足Docker
安装条件,都可以安装Docker
,只是你可能需要自己进行更新。
移除非官方Docker
包
一些yum
源中包含了一个版本较旧的Docker
包,其包名是docker
而不是官方的docker-engine
。我们需要先移除它:
$ sudo yum -y remove docker\ docker-common \ container-selinux \ docker-selinux \ docker-engine
2.2 yum
源安装Docker
使用yum
源安装Docker
,首先要设置yum
,设置后就可以基于源进行安装、更新、降级等操作。
1. 安装yum-utils
工具
安装yum-utils
,它提供了yum-config-manager
工具:
$ sudo yum install -y yum-utils
2. 设置yum
源
以下命令会设置一个稳定版(stable)的源:
$ sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
在以上示例中,我们添加了就添加了一个CE
版本的yum源。
注意:非稳定版(testing)的Docker
源默认未启用,可以通过以下命令启用:
$ sudo yum-config-manager --enable docker-ce-edge
关闭非稳定版(testing)的源使用以下命令:
$ sudo yum-config-manager --disable docker-ce-edge
3. 更新yum
包索引
$ sudo yum makecache fast
4. 安装Docker
最新版安装
使用以下命令,可以安装最新版本的Docker
:
$ sudo yum -y install docker-ce
指定版本安装
在生产环境中,我们会安装指定版本的Docker
而不总是安装最新版。可以通过以下命令查看可用的安装版本:
$ yum list docker-ce.x86_64 --showduplicates |sort -r
在安装时可以指定版本号来安装指定版本的Docker
:
$ sudo yum -y install docker-ce-<VERSION_STRING>
5. 验证安装
可以通过hello-world
镜像来验证Docker安装是否成功:
$ sudo docker run hello-world
如果验证成功,则会看到类似如下输出:
Unable to find image 'hello-world:latest' locally latest: Pulling from library/hello-world 78445dd45222: Pull complete Digest: sha256:c5515758d4c5e1e838e9cd307f6c6a0d620b5e07e6f927b07d05f6d12a1ac8d7 Status: Downloaded newer image for hello-world:latest Hello from Docker! This message shows that your installation appears to be working correctly. ……
如果输出如下,则说明docker
服务还未运行,需要启动docker
服务:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. See 'docker run --help'.
启动docker
服务:
$ sudo service docker start
6. 升级安装
使用yum
源安装的Docker
升级非常简单,使用以下命令即可完成Docker
的升级更新:
$ sudo yum makecache fast
2.3 rpm
包安装Docker
除了使用Docker
源安装外,还可以下载适用于你的系统版本.rpm
文件来安装
1. 下载.rpm
文件
Docker
官方提供了CentOS 6/7
两个发行版的.rpm
二进制安装文件及src
源安装文件,可以通过以下网址查找并下载适用的安装包:
https://yum.dockerproject.org/repo/main/centos/
2. .rpm
安装Docker
下载.rpm
文件后,使用yum
命令进行安装。安装时注意将.rpm
文件路径修改为实际路径:
$ sudo yum -y install /path/to/package.rpm
3. 验证安装
同样使用hello-world
镜像来验证Docker
安装是否成功:
$ sudo docker run hello-world
4. Docker
升级
使用.rpm
包安装的Docker
不支持在线升级,升级时同样需要下载新的安装文件并使用yum -y upgrade
命令进行升级安装:
$ sudo yum -y upgrade /path/to/package.rpm
关于yum
及rpm
的一些参考:
2.4 Docker
的卸载
卸载Docker
时,除了要卸载Docker
程序外,还要手工删除使用过程中产生的镜像
、容器
、卷
及自定义配置文件中。
1. 卸载Docker
程序包
$ sudo yum -y remove docker-ce
2. 删除Docker
镜像等
$ sudo rm -rf /var/lib/docker
3. Ubuntu
安装Docker
本文使用Ubuntu 16.04.1 LTS
系统演示安装Docker
。目前Docker
官方提供支持的Ubuntu
版本有:
- Yakkety 16.10(64位)
- Ubuntu Xenial 16.04 (LTS)(64位)
- Ubuntu Trusty 14.04 (LTS)(64位)
其它64位版本的Ubuntu
版本(如:14.10
、15.04
)也并不是不能安装Docker
,只要有APT
源就可以安装,只是Docker
官不会或以后不会再维护APT
源更新,因此建议使用官方推荐版本的系统。
3.1 环境检查
Docker
依赖64位操作系统及3.10
及以上版本的内核,使用uname
命令检查当前环境是否满足:
$ uname -a Linux ubuntu 4.4.0-31-generic #50-Ubuntu SMP Wed Jul 13 00:07:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
3.2 安装准备
更新apt
源、安装依赖包
更新apt
包索引:
$ sudo apt-get update
sudo apt-get install curl \ linux-image-extra-$(uname -r) \ linux-image-extra-virtual
注意:apt
源更新需要root
权限,此外Docker
相关操作大多都需要root
权限,不再特别说明。
在Ubuntu中安装Docker
,有以下几种安装方式:
- 使用
apt
源安装 - 使用
DEB
包安装 - 在
14.04+
版本中,已经自带了docker.io
,也可使用sudo apt-get install -y docker.io
命令直接安装
3.3 apt
源安装Docker
1. https
支持
Docker
安装需要支持https
,确保已安装https
及CA
支持:
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
2. 添加Docker官方GPG
密钥
添加Docker
仓库的GPG
密钥:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
验证的Key输出是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
,验证结果如下:
$ sudo apt-key fingerprint 0EBFCD88 pub 4096R/0EBFCD88 2017-02-22 Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid Docker Release (CE deb)sub 4096R/F273FCD8 2017-02-22
3. 添加Docker
源
使用以下命令,添加Docker
的最新稳定源:
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
添加后,更新apt
:
$ sudo apt-get update
4. 安装Docker
最新版安装
可以使用以下命令,安装最新版本的Docker
:
$ sudo apt-get install docker-ce
指定版本安装
或使用以下命令,查看所有可用的安装版本:
$ apt-cache madison docker-ce docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
如果需要安装指定版本的Docker
,在安装时指定版本号即可:
$ sudo apt-get -y install docker-ce=<VERSION_STRING>
5. 验证安装
可以通过hello-world
镜像来验证Docker安装是否成功:
$ sudo docker run hello-world
以上命令会下载并在一个容器中运行测试镜像,该容器运行后会输出一些日志信息,类似如下:
Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: ……
6. 升级安装
对于使用apt
源安装的Docker
,我们可以使用以下命令对Docker
升级更新:
$ sudo apt-get update
3.4 deb
包安装Docker
Docker
还支持使用.deb
文件安装,使用.deb
安装后,以后每次更新都需要下载一个新文件来更新已安装的Docker。
1. 下载.deb
文件
通过以下网址,查找并下载一个所需安装版本的Docker
:
https://apt.dockerproject.org/repo/pool/main/d/docker-engine/
2. 使用.deb
文件安装Docker
使用以下命令安装Docker
,注意将路径修改为你所下载的.deb
文件的路径:
$ sudo dpkg -i /path/to/package.deb
3. 验证安装
使用hello-world
镜像来验证Docker安装是否成功:
$ sudo docker run hello-world
3.5 Docker
的卸载
1. 卸载Docker
安装包
$ sudo apt-get purge docker-ce
2. 卸载Docker
镜像等
在Docker
的使用过程中,会存在镜像
、容器
、卷
及自定义配置文件中。这些文件我们需要手工移除:
$ sudo rm -rf /var/lib/docker
4. Mac OS X
安装Docker
Docker
依赖于LXC
,这并不是说其不能用于Mac OS X
系统中
4.1 工具的选择
要在MAC
中使用Docker
,官方提供了Docker for Mac
及Docker Toolbox
两种工具软件。简单介绍如下:
Docker Toolbox
依赖VirtualBox
实现运行环境的模拟,Docker Toolbox
安装后会在Mac的/usr/local/bin
目录下安装:docker
、docker-compose
和docker-machine
三个软件,当然还会安装VirtualBox
。Docker Engine就运行在VirtualBox
之上。
Docker for Mac
是一个Mac原生应用,会被安装到/Applications
目录下。安装时会在/usr/local/bin
目录下创建docker
和docker-compose
的软件连接,该连接会绑定到/Applications/Docker.app/Contents/Resources/bin.
目录下的Mac应用。
Docker for Mac
不需要VirtualBox
,但依赖HyperKit,一个轻量的构建于Hypervisor.framework
的MacOS虚拟化解决方案。Docker for Mac
仅适用于2010年之后的机型,MacOS 10.10.3 Yosemite
及以上版本的系统。
在本文,我们将使用Docker for Mac
来构建Docker
环境。
4.2 下载Docker for Mac
可以通过以下连接下载最新稳定版的Docker for Mac
:
4.3 安装运行Docker for Mac
1. 双击安装包Docker.dmg
,将Docker.app
程序拖拽到Applications
文件夹下,完成安装。
安装时可能会要求你输入系统密码,按要求输入系统使安装程序获取相关权限。
2. 安装完成后,在LaunchPad
中双击Docker
图标启动Docker
。
Docker
运行后,会在顶部的状态栏显示[]图标,通过这个图标可以查看
Docker
状态或进行其它操作。Docker
处于运行状态时,可以在控制台中访问。如,查看Docker
信息:
$ docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 1.13.0 ……
Docker
安装后首次启动时,会显示以下界面,可以单击[]图标将其关闭。
5. Docker
的简单使用
到此为止,我们已经掌握了在CentOS、Ubuntu等Linux环境或Mac环境下安装Docker
。完成安装后,来简单使用一下Docker
。
示例一:版本查看
在控制台查看docker
、docker-compose
和docker-machine
的版本信息:
$ docker --version Docker version 1.13.0, build 49bf474 $ docker-compose --version docker-compose version 1.10.0, build 4bd6f1a $ docker-machine --version docker-machine version 0.9.0, build 15fd4c7
示例二:Docker
容器管理
1. 启动一个容器
用Docker
启动一个nginx
Web服务器:
$ docker run -d -p 80:80 --name webserver nginx
如果本地没有找到镜像,会自动从Docker Hub下载,启动完成后,在浏览器输入http://localhost/
查看运行效果。
2. 容器信息查看
使用docker ps
查看所有正在运行的容器:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c3830eb3e36c nginx "nginx -g 'daemon ..." 24 minutes ago Up 24 minutes 0.0.0.0:80->80/tcp, 443/tcp webserver
通过docker ps
命令,我们可以查看容器的相关信息,如:容器Id、镜像名、运行状态、绑定端口等。当前系统中有一个nginx
Web服务器正在运行,所以只有一行记录。
要查看系统中的所有容器,需要添加-a
参数:
$ docker ps -a
3. 容器的停止与启动
nginx
Web服务器会在持续运行在你绑定的端口上,直到你停止或移除容器。
停止容器,可以全使用以下命令:
$ docker stop webserver
停止后,查看运行状态:
$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
再次启动容器:
$ docker start webserver
4. 容器的移除与恢复
停止并移除容器:
$ docker rm -f webserver
docker rm
会移除容器,但会保留镜像。可以使用docker images
命令查看所有本地镜像:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest a39777a1a4a6 6 days ago 182 MB
我们可能有会需要保留镜像,这样下次创建容器时就不需要再从Docker Hub拉取镜像。比如,再次启动nginx
Web服务器:
$ docker run -d -p 80:80 --name webserver nginx eae491311de68246fc89adad2895f176296a82b5d7c9176739a67e0103813847
5. 移除镜像
当镜像不再需要时,我们可以将镜像移除。移除镜像使用rmi
命令:
$ docker rmi nginx