Docker官网上并无提供关于 Deepin 的 Docker 安装教程,因为 Deepin 是基于 Debian 的,因此能够参照官网 Debian的安装教程安装,但 Deepin 在定制过程当中进行了大量修改,因此使用官方教程可能会失败,因此这里记录下 Deepin 下的 Docker 安装。php
简介:Docker 是一个开源的应用容器引擎,提供了一种可以让应用程序相互隔离地、安全地运行在容器中的方法且其包含了应用程序运行所需的全部运行环境。python
更具体的信息能够查看 Docker 官方文档linux
如下相关信息参考来自深度官网docker
深度官方 Deepin 的应用仓库已经集成了docker,但不是相似于 docker-ce 这样的最新版本。要想使用最新版能够参考官网 debian 安装教程安装,不过因为深度 Deepin 15.4 基于 sid 版本开发,经过 $(lsb_release -cs) 获取的版本信息为 unstable,而 docker 官方源并没提供 sid 这种 unstable 版本的 docker,因此使用官方教程是安装不成功的。shell
这里能够看出获取的版本信息为 unstable ,下图为博主安装的 Docker CE 版本,博主系统为 Deepin 15.5json
1.若是之前安装过老版本,能够先卸载之前版本安全
sudo apt-get remove docker docker-engine
网络
2.安装 docker-ce 和密钥管理以及下载相关的工curl
说明: 这里主要是提供 curl命令、提供add-apt-repository工具的software-properties-common包 和密钥管理工具。socket
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加速器。
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