安装与配置 Docker for liunx wsl

上一级页面:index-wsl

前置工作

下文将其称为Docker for Linux,安装文档见Docker install

安装与配置 Docker for Linux

这种方式是原生Linux的,下文将其称为Docker for Linux,安装过程见

官方文档:Docker install

推荐看这篇教程,写的很好Ubuntu - Docker — 从入门到实践 (gitbook.io)

安装

看官网文档:https://docs.docker.com/engine/install/ubuntu/#install-using-the-convenience-script

推荐看这篇教程,写的很好Ubuntu - Docker — 从入门到实践 (gitbook.io)

以Ubuntu为例:

由于 apt 源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

1
2
3
4
5
6
7
8
$ sudo apt-get update

$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release

然后使用官方脚本

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:

若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本

1
2
3
4
5
# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
# $ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。

安装过后,怎么查看Docker for Linux安装在哪

在终端里面执行df -Th,会发现增加了一些新的与docker有关的挂载点。

可以手动启动docker服务,输入命令:service docker start即可。

取消 service docker start 需要密码的机制

使用 service docker start 命令时, 需要使用 sudo 来执行. 而 sudo 需要输入密码. 阻碍了我们自动化开启 Docker.

下面使用 sudoers 文件配置使该命令不需要输入密码.

  1. 创建 /etc/sudoers.d/docker 文件 (!注意文件不可包含符号 . 和符号 ~ ) 否则不会生效
1
sudo vi /etc/sudoers.d/docker
  1. 将以下内容写入 /etc/sudoers.d/docker
1
2
# 用户($USER)在所有计算机(ALL)下可以使用root(root)的身份权限且不需要输入密码(NOPASSWD)来运行/usr/sbin/service(`which service`), 且限定参数为docker和一个任意参数(如:start,stop,status)
echo "$USER ALL=(root) NOPASSWD: `which service` docker *" | sudo tee /etc/sudoers.d/docker
  1. 根据 sudoers 的推荐设置, 修改 /etc/sudoers.d/docker 的权限,
1
sudo chmod 0440 /etc/sudoers.d/docker

配置 Docker 自启动

实现 Docker for Linux自启动的方式有很多,下面介绍三种方式

  1. 配置使用 systemd

  2. 配置 ~/.bashrc 或者 /etc/profile 等文件

2.1 直接添加启动代码到 .bashrc 中, 每次启动终端都会运行一次, 比较多余.

1
echo "sudo service docker start" | tee -a ~/.bashrc >/dev/null

2.2 直接添加启动代码到 /etc/profile 中, 启动 WSL 时运行一次, 稍显合理.

1
echo "sudo service docker start" | tee -a /etc/profile >/dev/null

2.3 保持 /etc/profle 无污染,加启动代码加到 /etc/profile.d/docker.sh中. bash 会在读取 /etc/profile 时自动加载 profile.d 下面的文件

1
2
3
4
# echo "service docker start" | tee -a ~/.bashrc >/dev/null
sudo touch /etc/profile.d/docker-start.sh && \
chmod 644 /etc/profile.d/docker-start.sh && \
echo "sudo service docker start" | tee -a /etc/profile.d/docker-start.sh >/dev/null