Docker官网上并没有提供关于 Deepin 的 Docker 安装教程,由于 Deepin 是基于 Debian 的,所以可以参照官网 Debian的安装教程安装,但 Deepin 在定制过程中进行了大量修改,所以使用官方教程可能会失败,所以这里记录下 Deepin 下的 Docker 安装。
一.认识 Docker
简介:Docker 是一个开源的应用容器引擎,提供了一种能够让应用程序相互隔离地、安全地运行在容器中的方法且其包含了应用程序运行所需的所有运行环境。
更具体的信息可以查看 Docker 官方文档
以下相关信息参考来自深度官网
二. 关于 Deepin 中的 Docker
深度官方 Deepin 的应用仓库已经集成了docker,但不是类似于 docker-ce 这样的最新版本。要想使用最新版可以参考官网 debian 安装教程安装,不过由于深度 Deepin 15.4 基于 sid 版本开发,通过 $(lsb_release -cs) 获取的版本信息为 unstable,而 docker 官方源并没提供 sid 这种 unstable 版本的 docker,所以使用官方教程是安装不成功的。
这里可以看出获取的版本信息为 unstable ,下图为博主安装的 Docker CE 版本,博主系统为 Deepin 15.5
三. 在 Deepin 中安装最新的 Docker
1.如果以前安装过老版本,可以先卸载以前版本
sudo apt-get remove docker docker-engine
2.安装 docker-ce 和密钥管理以及下载相关的工
说明: 这里主要是提供 curl命令、提供add-apt-repository工具的software-properties-common包 和密钥管理工具。
sudo apt-get install apt-transport-https ca-certificates curl python-software-properties software-properties-common
3.下载并安装密钥
注意: 密钥能否安装成功与网络环境相关,请选择合适的时间短安装,如果安装失败,请继续执行这一步。
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
4.查看密钥是否安装成功
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 通过搜索指纹的最后8个字符,确认您现在拥有指纹的密钥 。
sudo apt-key fingerprint 0EBFCD88
如果安装成功,会出现如下内容:
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
呃,好像跟官方说的不太一样呢!不过不影响
5.添加 docker 官方仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian wheezy stable"
Note: 这点很奇怪,官方在wheezy 位置使用的是 $(lsb_release -cs),而在 deepin下执行lsb_release -cs 这个命令时,deepin 显示的是 unstable,而默认 debian 根据正式发行版本会显示是jessie或者wheezy的。这个如果不更改成特定版本信息,在 sudo apt-get update 更新时就不起作用。 更正: 之所以获取的 unstable 不成功,是因为 docker 官方没有提供 sid 版本的docker。想安装必须将该部分替换成相应版本。
Note:这里例子的 debian 的版本代号是wheezy,应该替换成 deepin 基于的 debian 版本对应的代号,查看版本号命令:cat /etc/debian_version,再根据版本号对应的代号替换上面命令的 wheezy即可。 更正: 按上面的方法操作,例如我操作上面的命令得到 debain 版本是 8.0 ,修改后填入到上面命令中发现,是无法安装 docker 的,但把 8.0 换成 wheezy ,则可以正常安装 docker ,当前 docker 的版本为17.12.0-ce。
这里,叨叨絮絮那么多。本人系统 Deepin 15.5,安装时直接运行了以上命令而没有进行任何修改,仍然正常运行与安装。查看以下图。
成功添加 docker 官方仓库
6.更新仓库
sudo apt-get update
7.安装 docker-ce
Note:由于网络不稳定,可能会下载失败。如果下载失败了,可以多试几次或者找个合适的时间继续。
sudo apt-get install docker-ce
8.启动 docker-ce
systemctl start docker
Note:在安装完后启动报错,查看 docker.service 的 unit文件,路径为 /lib/systemd/system/docker.service,把 ExecStart=/usr/bin/dockerd -H fd:// 修改为ExecStart=/usr/bin/dockerd,则可以正常启动 docker 。
启动 Docker
这里在启动的时候并没有遇到如上问题,查看下图
9.查看安装的版本信息
docker version
好的,如你所见这里出现了小小的 bug,出现 deny 信息。查看下一步解决。
10.设置 docker 非 root 用户
如安装的流程可知,一路上都是以sudo 超级用户进行的配置。那么,在普通用户登入的情况下可能会出现以下错误信息
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/version: dial unix /var/run/docker.sock: connect: permission denied
查看一下是否有 docker 用户组
cat /etc/group | grep docker
如图,图中已显示存在相应用户组
如果没有,可以通过以下命令创建
sudo groupadd -g 999 docker
将当前用户加入用户组
sudo gpasswd -a ${USER} docker
查看 docker.sock 文件权限
cd /var/run
ll | grep docker.
可以看到其属主为 root,权限为 rw,可读可写;其属组为 docker,权限为 rw,可读可写。如果要当前用户可直接读取该文件,那么就把当前用户添加到 docker 属组即可。上面已经说明。
修改 docker.sock 的权限
sudo chmod a+rw /var/run/docker.sock
可以通过此命令设置文件权限
设置非 root 用户运行已经不报错误信息
11.验证docker是否被正确安装并且能够正常使用
sudo docker run hello-world
如图,已经成功安装
四. 更换国内docker加速器
如果使用docker官方仓库,速度会很慢,所以更换国内加速器就不可避免了。
方式一:使用阿里云的docker加速器。
1.在阿里云申请一个账号 打开连接 https://cr.console.aliyun.com/#/accelerator 拷贝您的专属加速器地址。
2.修改修改 daemon 配置文件 /etc/docker/daemon.json 来使用加速器(下面是4个命令,分别单独执行)
注意: 这里的 https://jxus37ad.mirror.aliyuncs.com 是申请者的加速器地址,在此仅仅用于演示,而使用者要个根据自己的使用的情况填写自己申请的加速器地址。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://jxus37ad.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
方式二:使用 docker-cn 提供的镜像源
1.编辑 /etc/docker/daemon.json 文件,并输入docker-cn 镜像源地址
sudo nano /etc/docker/daemon.json
输入以下内容
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
快捷键 ctrl+x 退出,Y 确定保存并退出。
2.重启docker服务
sudo service docker restart
五. 禁止开机自启
默认情况下 Docker 是开机自启的,如果我们想禁用开机自启,可以通过安装 chkconfig 命令来管理 Deepin 自启项。
# 安装chkconfig
sudo apt-get install chkconfig
# 移除自启
sudo chkconfig --del docker