准备工作

由于apt官方库里的docker版本可能比较旧,所以先卸载可能存在的旧版本:

sudo apt-get remove docker docker-engine docker-ce docker.io

APT安装

更新apt包索引:

sudo apt-get update

安装以下包以使apt可以通过HTTPS使用存储库(repository):

sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

鉴于国内网络问题,强烈建议使用国内源

为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥:

curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 官方源
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

source.list中添加 Docker 软件源:

sudo add-apt-repository \
    "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

# 官方源
  sudo add-apt-repository \
    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    $(lsb_release -cs) \
    stable"

安装最新版本的Docker CE:

sudo apt-get update

sudo apt-get install -y docker-ce

启动 Docker CE

sudo systemctl enable docker

sudo systemctl start docker

建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

sudo groupadd docker

将当前用户加入 docker 组:

sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

验证docker

查看docker服务是否启动:

systemctl status docker

若未启动,则启动docker服务:

sudo systemctl start docker

测试 Docker 是否安装正确:

sudo docker run hello-world

有以下输出,表示docker安装成功.

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://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

镜像加速器

国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。国内很多云服务商都提供了国内加速器服务,例如:

由于镜像服务可能出现宕机,建议同时配置多个镜像。各个镜像站测试结果请到 docker-practice/docker-registry-cn-mirror-test 查看。

国内各大云服务商均提供了 Docker 镜像加速服务,建议根据运行 Docker 的云平台选择对应的镜像加速服务,具体请参考官方文档。

本节我们以 Azure 中国镜像 https://dockerhub.azk8s.cn 为例进行介绍。

添加源

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://hub-mirror.c.163.com"
  ]
}

注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。

重新启动服务

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

注意:如果您之前查看旧教程,修改了 docker.service 文件内容,请去掉您添加的内容(--registry-mirror=https://dockerhub.azk8s.cn)。

卸载Docker

1. 删除某软件,及其安装时自动安装的所有包

sudo apt-get autoremove docker docker-ce docker-engine  docker.io  containerd runc

2. 删除docker其他没有没有卸载

dpkg -l | grep docker

3.卸载没有删除的docker相关插件(结合自己电脑的实际情况)

root@baidu:~# dpkg -l | grep docker
rc  docker-ce                          5:19.03.8~3-0~ubuntu-xenial                amd64        Docker: the open-source application container engine

继续删除

sudo apt-get autoremove docker-ce-*

4.删除docker的相关配置&目录

sudo rm -rf /etc/systemd/system/docker.service.d
sudo rm -rf /var/lib/docker

5.确定docker卸载完毕

docker -v

https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html
https://yeasy.gitbooks.io/docker_practice/install/mirror.html