Docker 学习之旅(一):Docker 的安装

所以之前弄得都差不多算是白弄了,一切还需要从头开始。

由于使用的环境为 Ubuntu 的 16.10 最新稳定版本,所以打开 Ubuntu 的文档进行安装,以下命令全部来源于官方文档。

为了防止惨剧的再次发生,记录下此时的版本,页面右上角显示为 Docker 17.03。

卸载旧版本

文档链接:https://docs.docker.com/engine/installation/linux/ubuntu/#uninstall-old-versions

因为安装了旧版本的 Docker,所以需要先卸载老版本,当然没有安装过就不需要进行这一步了。

1
$ sudo apt-get remove docker docker-engine

安装 Docker

文档链接:https://docs.docker.com/engine/installation/linux/ubuntu/#install-docker

因为 Docker 是有 Ubuntu 的源的,所以直接采用 apt 安装,方便快捷。

之前忘记说了,此次更新 Docker 有了两个版本,分别是 Docker CE 和 Docker EE。从名字其实就可以大概猜出,一个是普通版(其实是社区版)一个是企业版。所以,当然是选择社区版,而且官方提到了社区版和企业版的安装是有所不同的,在此只记录社区版的安装。

添加源

1
2
3
4
5
6
7
8
9
10
11
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo apt-key fingerprint 0EBFCD88
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

其中 sudo apt-key fingerprint 0EBFCD88 是用来验证源的 key 信息是否匹配,正确的信息应该为 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88

这边使用的是 stable 版本,若要使用更新更快的 edge 版本,只需在最后一行的 stable 后面添加 edge 即可。对于这两个版本,官方解释如下。

1
2
3
Docker CE gives you the option to run stable or edge builds.
* Stable builds are released once per quarter.
* Edge builds are released once per month.

安装 Docker

1
2
$ sudo apt-get update
$ sudo apt-get install docker-ce

这样默认安装的总是最新版本的 Docker ,如果你想安装特定版本的 Docker ,可以使用 sudo apt-get install docker-ce=<VERSION> ,使用 apt-cache madison docker-ce 来显示可以安装的 Docker 版本。

可以通过运行 hello-world 镜像来确认已将 Docker CE 正确安装。

1
$ sudo docker run hello-world

更新 Docker

首先运行 sudo apt-get update,然后根据安装指南选择想要安装的新版本。

Linux 下的可选安装步骤

文档链接:https://docs.docker.com/engine/installation/linux/linux-postinstall/

此处只列出个人所使用的可选安装。

使用非 root 用户管理 Docker

通过文档我们得知 docker 的守护进程绑定的是 Unix socket,默认情况下该 Unix socket 是属于 root 用户,其他用户只能通过 sudo 进行访问,而 docker 的守护进程一直是由 root 用户运行的。所以如果想不使用 sudo 来使用 Docker,可以把用户添加到 docker 用户组。

1
2
$ sudo groupadd docker # 此处已经存在docker组可不执行操作
$ sudo usermod -aG docker $USER

注销重新登入系统来使用户组更新。

通过不加 sudo 命令的 docker 命令来验证。

1
$ docker run hello-world

使 Docker 开机自启

对于大多数的发行版本(RHEL, CentOS, Fedora, Ubuntu 16.04 and higher)使用 systemd 来管理开机自启动的服务,Ubuntu 14.10 及以下版本使用 upstart

  • systemd
1
2
$ sudo systemctl enable docker # 开启自启动
$ sudo systemctl disable docker # 关闭自启动
  • upstart

Docker 自动使用 upstart 配置自启动,通过以下命令来禁用。

1
$ echo manual | sudo tee /etc/init/docker.override
  • chkconfig
1
$ sudo chkconfig docker on

设置 HTTP 代理

因为 Docker 的服务器在国外,所以直连的速度很慢,就需要用国内的镜像或者使用 HTTP 代理,这里选择的是使用 HTTP 代理。该文档不在上面的可选安装步骤里,在后面的 Admin Guide 里面,链接:https://docs.docker.com/engine/admin/systemd/#http-proxy

1
2
$ mkdir -p /etc/systemd/system/docker.service.d
$ vi /etc/systemd/system/docker.service.d/http-proxy.conf

添加下列内容,按实际情况修改。

1
2
[Service]
Environment="HTTP_PROXY=http://proxy.example.com:80/"

或者使用以下内容设置不通过代理的地址。

1
Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"

然后继续操作完成配置。

1
2
3
$ sudo systemctl daemon-reload
$ systemctl show --property=Environment docker # 验证配置是否已经重载,将显示上面配置的信息
$ sudo systemctl restart docker