安装与配置 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 证书。
$ sudo apt-get update
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
然后使用官方脚本
使用脚本自动安装
在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror
选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本
# $ 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 文件配置使该命令不需要输入密码.
- 创建
/etc/sudoers.d/docker
文件 (!注意文件不可包含符号.
和符号~
) 否则不会生效
sudo vi /etc/sudoers.d/docker
- 将以下内容写入
/etc/sudoers.d/docker
# 用户($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
- 根据 sudoers 的推荐设置, 修改
/etc/sudoers.d/docker
的权限,
sudo chmod 0440 /etc/sudoers.d/docker
配置 Docker 自启动
实现 Docker for Linux自启动的方式有很多,下面介绍三种方式
配置使用 systemd
配置
~/.bashrc
或者/etc/profile
等文件
2.1 直接添加启动代码到 .bashrc
中, 每次启动终端都会运行一次, 比较多余.
echo "sudo service docker start" | tee -a ~/.bashrc >/dev/null
2.2 直接添加启动代码到 /etc/profile
中, 启动 WSL 时运行一次, 稍显合理.
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
下面的文件
# 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