Docker 的安装

 2017年01月27日    2219     声明


Docker的安装非常的简单和快捷,当前Docker已支持大多数Linux发行版,包括:UbuntuRed HatCentOSSUSEFedoraDebian等,也可以在AWS、Aliyun等云平台安装。Docker基于LXC实现容器相关功能,要在Mac OS XWindows中运行Docker就需要借助Docker Toolbox等工具模拟一个Docker虚拟环境。

  1. Docker安装条件
  2. CentOS安装Docker
  3. Ubuntu安装Docker
  4. Mac OS X安装Docker
  5. Docker的简单使用

1. Docker安装条件

通过上一篇Docker介绍,我可以了解到Docker对运行环境有一些要求,具体如下:

  • 64位CPU,当前只支持amd64x86_64
  • 3.0+版本的Linux内核,虽然一些老版本(如:2.6.x或其后)的版本的内核也能运行,便会有各种问题,不建议使用
  • Linux内核必须支持cgroupnamespace
  • 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

关于yumrpm的一些参考:


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.1015.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,确保已安装httpsCA支持:

$ 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 MacDocker Toolbox两种工具软件。简单介绍如下:

Docker Toolbox依赖VirtualBox实现运行环境的模拟,Docker Toolbox安装后会在Mac的/usr/local/bin目录下安装:dockerdocker-composedocker-machine三个软件,当然还会安装VirtualBox。Docker Engine就运行在VirtualBox之上。

Docker for Mac是一个Mac原生应用,会被安装到/Applications目录下。安装时会在/usr/local/bin目录下创建dockerdocker-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

Docker for Mac [stable]


4.3 安装运行Docker for Mac

1. 双击安装包Docker.dmg,将Docker.app程序拖拽到Applications文件夹下,完成安装。

Docker for Mac

安装时可能会要求你输入系统密码,按要求输入系统使安装程序获取相关权限。

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安装后首次启动时,会显示以下界面,可以单击[]图标将其关闭。

Docker for Mac


5. Docker的简单使用

到此为止,我们已经掌握了在CentOS、Ubuntu等Linux环境或Mac环境下安装Docker。完成安装后,来简单使用一下Docker

示例一:版本查看

在控制台查看dockerdocker-composedocker-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启动一个nginxWeb服务器:

$ docker run -d -p 80:80 --name webserver nginx

如果本地没有找到镜像,会自动从Docker Hub下载,启动完成后,在浏览器输入http://localhost/查看运行效果。

docker nginx webserver

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、镜像名、运行状态、绑定端口等。当前系统中有一个nginxWeb服务器正在运行,所以只有一行记录。

要查看系统中的所有容器,需要添加-a参数:

$ docker ps -a

3. 容器的停止与启动

nginxWeb服务器会在持续运行在你绑定的端口上,直到你停止或移除容器。

停止容器,可以全使用以下命令:

$ 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拉取镜像。比如,再次启动nginxWeb服务器:

$ docker run -d -p 80:80 --name webserver nginx
eae491311de68246fc89adad2895f176296a82b5d7c9176739a67e0103813847

5. 移除镜像

当镜像不再需要时,我们可以将镜像移除。移除镜像使用rmi命令:

$ docker rmi nginx