docker 安装

Docker 安装与配置

Docker 安装过程需要使用 root 权限, 主要有两种安装方式:

Ubuntu 软件源安装

使用 Ubuntu 系统默认自带的 docker.io 安装包安装 Docker,但版本可能相对较旧. 命令行操作过程如下:

sudo apt-get update
sudo apt-get -y install docker.io
sudo service docker.io status # (检查 Docker 服务的状态)
sudo docker run hello-world # (测试 Docker 安装是否成功 )

Docker 官网安装

采用 Docker官网 安装方式可以获取最新版本 Docker. 有两个版本:

[1] - Docker Community Edition(CE)

[2] - Docker Enterprise Edition(EE)

这里安装 Docker CE,最新版本支持 Ubuntu Disco 19.04、Ubuntu 18.10、Ubuntu Bionic 18.04 (LTS) 和 Ubuntu Xenial 16.04 (LTS)的 64 位系统.

  1. 卸载旧版本 docker

Docker 旧版本叫作 docker 或 docker-engine,在安装前需要先卸载旧版本.

sudo apt-get remove docker docker-engine docker.io containerd runc

在 /var/lib/docker 路径中,保留了镜像 images,容器 containers,卷 volumes,以及网络 networks,等.

Docker CE 新版本叫作 docker-ce.

  1. Docker 仓库设置

在安装 Docker 之前需要配置 Docker 官方仓库,然后从该仓库进行获取与安装.

# Docker 仓库设置
sudo apt-get update
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

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

# 验证 fingerprint
sudo apt-key fingerprint 0EBFCD88

# 添加 Docker CE 的 stable 版本的仓库
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  1. Docker CE 最新版本安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 存在多个 Docker 仓库时,会安装最新版本的 docker-ce
  1. Docker CE 指定版本安装

[1] - 列出仓库中所有的 Docker CE 版本

apt-cache madison docker-ce

 docker-ce | 5:19.03.5~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:19.03.4~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:19.03.3~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:19.03.2~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:19.03.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:19.03.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.9~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.8~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.7~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.6~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.5~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.4~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.3~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.2~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.06.3~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.06.2~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.03.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 18.03.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.12.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.12.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.09.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.09.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.2~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.1~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.06.0~ce-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.3~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.2~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
 docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages

[2] - 安装 Docker CE 指定版本

sudo apt-get install \
    docker-ce=<VERSION_STRING> \
    docker-ce-cli=<VERSION_STRING> \
    containerd.io

# 如:
sudo apt-get install \
    docker-ce=18.09.1~3-0~ubuntu-xenial \
    docker-ce-cli=18.09.1~3-0~ubuntu-xenial \
    containerd.io
  1. Docker CE deb 安装(强烈推荐)

Ubuntu16.04 - amd 对应 Docker deb 下载路径:

https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/

Ubuntu 其他版本 Docker deb 下载路径:

https://download.docker.com/linux/ubuntu/dists/

选择对应的 Ubuntu 版本号,依次选择下载列表.

Docker deb 安装:

sudo dpkg -i /path/to/docker-ce.deb
# 查看 Docker 状态
sudo service docker status
sudo docker info

阿里云加速器设置

由于官方 Docker Hub 网络速度较慢,这里使用阿里云提供的 Docker Hub. 需要配置阿里云加速器.

推荐安装 Docker CE > 1.10.0 版本.

通过修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器:

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://fird1mfg.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Issue

  1. python 提示错误 UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position

    docker 中 python 代码的 print(“中文”) 出现错误,但宿主机不会出现该错误,如下:

     UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-127: ordinal not in range(128)
    

    原因:

    因为 locale 的设置导致 shell 的stdin/stdout/stderr 的默认编码为 ascii,当用ascii编码去解释 python3 默认 unicode 编码的时候,则会有问题

    解决方法:

    python3 的解决方式是 容器在初始化时候 需要设置 shell 的 stdin/stdout/stderr 的默认编码方式为 utf-8, 需要重启容器

     # docker run 方式
     docker run -e PYTHONIOENCODING=utf-8 m_container:latest my-python3
     # docker-compose 方式
     environment:
     - PYTHONIOENCODING=utf-8
    
Table of Contents