这篇文章真不知道怎么写描述,很尴尬的开头。
只是简单的记录一下 Docker 的安装和常用的操作命令。

安装

这里安装的是 Docker-ce,满足我们的学习需求是完全没有问题的

我使用的是 Ubuntu 17.04

系统要求

Docker 要求我们的操作系统(Ubuntu)必须是 64-bit,同时必须是下面这些版本:

  • Artful 17.10 (Docker CE 17.11 Edge and higher only)
  • Zesty 17.04
  • Xenial 16.04 (LTS)
  • Trusty 14.04 (LTS)

虽然可能不是这些版本也能安装成功,但是可能官方文档上的一些操作可能会执行失败,所以最妥当的方法就是使用长期支持版本(LTS)

卸载旧版本

Docker 目前版本和之前的版本名称有改变,所以需要卸载以前的版本,如果这是你第一次安装的话,可以跳过。
终端执行一下命令:

1
$ sudo apt remove docker docker-engine docker.io

你的镜像、容器等不会被一起清除,它们还呆在 /var/lib/docker/ 目录下

安装

安装方式有 从源安装安装包安装 两种,这里选择前者进行演示。

配置源

更新源
1
$ sudo apt-get update
安装 HTTPS 证书
1
2
3
4
5
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
添加 Docker 官方 GPG 密钥
1
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

如果密钥添加成功,那么源列表里面会有指纹(fingerprint)为 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 的 key,这里通过搜索后八位指纹来验证下:

1
2
3
4
5
6
$ 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) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
配置稳定版的源

因为机器属于 x86_64/amd64 所以执行:

1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

开始安装

再次更新源列表
1
$ sudo apt-get update
安装指定版本 Docker

因为生产环境中最好是选定一个版本后就基本保持不变,所以这里来制定安装版本,而不是一股脑直接装最新版。

先执行一下命令看看有哪些版本可供选择:

1
2
3
4
5
6
7
8
$ apt-cache madison docker-ce

docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages
docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages
docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages
docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages
docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages
docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu zesty/stable amd64 Packages

输出中 17.12.0~ce-0~ubuntu 的字样就是版本号了,这里选择最新的版本安装:

1
$ sudo apt install docker-ce=17.12.0~ce-0~ubuntu

= 号后面接你想安装的版本

验证

跑一个 HelloWorld 看看 Docker 有没有安装成功:

1
$ sudo docker run hello-world

如果得到下面的输出就证明安装成功了,否则再回过头看看哪里出了错:

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
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/

后续配置

完成基本安装后,还可以通过一些设置来提高使用的便捷性。

添加当前用户到 docker 用户组

完成最基本的安装后,虽然可以使用,但是每次都需要加上 sudo ,这是因为 docker daemon 进程是绑定在 Unix socket 上,并且默认地 Unix socket 属于 root 用户。如果想避免每次都使用 sudo 进行操作,可以创建一个叫 docker 的 Unix 用户组,然后将当前登录的用户添加进去:

1
2
$ sudo groupadd docker
$ sudo usermod -aG docker $USER

开机自启

大多数 Linux 发行版(RHEL,CentOS,Fedora,Ubuntu1604及以上)使用 systemd 管理开机自启的服务:

1
$ sudo systemctl enable/disable docker

到这里也就安装好了。

关于 docker 提供的其他命令,建议直接看 官方文档 里介绍.