Skip to content

Docker Install 在 Windows 子系统中的 Ubuntu 里的环境

Windows 10 开启子系统后,在应用商店安装 Ubuntu。

官方文档

bash
# 卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 官方源太慢了,这里使用 aliyun 的源来安装
sudo apt-get update

# apt-get 可以使用https库
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common

# 添加docker的使用的公钥
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 添加docker的远程库
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

sudo apt-get update

# 安装docker-ce
sudo apt-get install -y docker-ce

# 启动 docker(检查 docker 安装成功:docker version)
sudo service docker start

# 设置 docker 开机自动启动 (启动之前先安装 sysv-rc-conf)
sudo sysv-rc-conf docker on
sudo sysv-rc-conf containerd.service on

这个 Ubuntu 中没有 systemctl 命令来启动 docker, 取而代之的是 经典的 SysV init(sysvinit)系统。

Systemd commandSysvinit command
systemctl start ServiceNameservice ServiceName start
systemctl stop ServiceNameservice ServiceName stop
systemctl restart ServiceNameservice ServiceName restart
systemctl status ServiceNameservice ServiceName status
systemctl enable ServiceNamechkconfig ServiceName on
systemctl disable ServiceNamechkconfig ServiceName off

安装 sysv-rc-conf

在这个 ubuntu 版本中,使用 sysv-rc-conf 来代替 chkconfig,所以使用之前需要先安装 sysv-rc-config。 对应上面的命令就变成了:

bash
sysv-rc-conf ServiceName on
sysv-rc-conf ServiceName off

在 ubuntu-18.04.3 版本,安装 sysv-rc-conf 时,报了如下的错:E: Unable to locate package sysv-rc-conf(无法定位 sysv-rc-conf 包)。解决方法如下:

bash
# 打开sources.list文件
sudo vi /etc/apt/sources.list

# 在sources.list文件最后一行中添加如下一列文本
deb http://archive.ubuntu.com/ubuntu/ trusty main universe restricted multiverse

sudo apt-get update

sudo apt-get install sysv-rc-conf

以非 root 用户管理 Docker

安装到上面的步骤后,就已经完成了安装,但是,此时启动,停止 docker 都只能在命令前面添加 sudo 或者使用 root 用户,太麻烦了,所以有以下步骤可选:

bash
# 创建docker组。
sudo groupadd docker

# 将您的用户添加到docker组中。
sudo usermod -aG docker $USER

# 注销并重新登录,以便重新评估您的组成员身份。
# 如果在虚拟机上进行测试,可能需要重新启动虚拟机以使更改生效。
# 在桌面 Linux 环境(如 X Windows)上,完全注销会话,然后重新登录。
# 在 Linux 上,您还可以运行以下命令来激活对组的更改:
newgrp docker

# 验证您是否可以在docker没有sudo(命令前面不要加 sudo)
docker run hello-world

# 此命令下载测试映像并在容器中运行它。当容器运行时,它会打印一条消息并退出。
# 如果您sudo在将用户添加到docker组之前最初运行 Docker CLI 命令,您可能会看到以下错误,这表明您的~/.docker/目录由于sudo命令而使用不正确的权限创建。
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

# 要解决此问题,请删除~/.docker/目录(它会自动重新创建,但所有自定义设置都将丢失),或使用以下命令更改其所有权和权限:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
sudo chmod g+rwx "$HOME/.docker" -R

配置 aliyun 镜像加速器

参考在 CentOS 环境下的安装教程