UU Blog

Ubuntu16.04LTS Centos7 安装Docker CE

近日需要频繁测试各种环境,奔波于各种虚拟机之间,虽然自己制作了诸多虚拟机环境模板,平时直接克隆软连接使用。

但是还是感受到了世界满满的恶意。

所以决定安装一下docker 减轻一下工作量。一个人kubernetes就没必要装了吧。

觉得如果用kubernetes去管理团队各个机器的开发者的环境,减轻他们平时环境搭建的麻烦还是挺不错的。

不过,还没到时候。

本文主要参考docker的官方文档。

安装docker ce 社区版

如果之前安装了旧版本的docker,旧版本docker名字是docker或者docker-engine

sudo apt-get remove docker docker-engine

因为新版本的docker仓库改为使用https链接,所以,还要运行以下语句,让apt允许使用https方式链接

1
$ sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

安装官方源的GPG key,关闭GPG check应该也是可以的。

1
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

安装docker源
如果和我一样是使用linux mint的话,$(lsb_release -cs)并不能获取Ubuntu的版本代号,获取的是自己的。
自行修改,比如我的是16.04 那就是 xenial。

1
2
3
4
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
xenial \
stable"

更新源

1
2
3
sudo apt-get update

sudo apt-get install docker-ce

done.

建私有仓库

先下载一个docker的registry镜像。

其实,应该 sudo apt install docker-registry就能直接装一个的,当服务管理。

这里就用docker镜像实现吧。

我直接用root账户用docker

1
2
3
4
5
6
7
8
9
# docker pull registry
# mkdir /e/docker/registry #搞个目录给仓库挂载
# docker run -d -p 5000:5000 -v /e/docker/registry:/tmp/registry registry
# deamon方式运行registry镜像 暴露5000端口
# docker run -d -p 5000:5000 -v /e/docker/registry:/tmp/registry registry
ad0169c6aa3fdf64e00157698f3c4938d55039661916c536b6e2dcce56ab5a40
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ad0169c6aa3f registry "/entrypoint.sh /e..." 14 seconds ago Up 14 seconds 0.0.0.0:5000->5000/tcp musing_davinci

尝试push一个镜像到自己仓库

我本地docker环境IP是 192.168.1.88 那么仓库地址就是 http://192.168.1.88:5000
首先给本地镜像打个tag

1
2
# docker pull centos # 先从官方镜像仓库拉一个centos回来测试
# docker tag centos 192.168.1.88:5000/centos

这个时候 # docker push 192.168.1.88:5000/centos 遇到了错误。

docker现在版本默认仓库都是使用https协议连接的,要使用本地仓库,还能自定义添加非安全的仓库地址。

步骤如下:

1.修改 /etc/default/docker

1
DOCKER_OPTS="--registry-mirror=http://xxxxxxxx.m.daocloud.io --insecure-registry 192.168.1.88:5000 --dns 8.8.8.8 --dns 8.8.4.4"

重点是--insecure-registry 192.168.1.88:5000这句
以往这样修改就没问题了。然而今天发现重启docker后,居然没生效。
systemctl status docker 没看到启动参数有我们添加的内容

2.修改服务文件,增加指定启动参数

其实直接在ExecStart直接添加--insecure-registry 192.168.1.88:5000是一样可以的。
但是为了管理方便,和以后便于修改,就改成如下形式。从/etc/default/docker读取$DOCKER_OPTS的配置。

1
2
3
4
5
# vim /lib/systemd/system/docker.service
EnvironmentFile=/etc/default/docker # 新增加这句到 [service]
ExecStart=-/usr/bin/dockerd -H fd:// $DOCKER_OPTS # 引用 $DOCKER_OPTS
# systemctl daemon-reload
# systemctl restart docker

这个时候再systemctl status docker 就能看到我们添加的参数了。

ps. docker.service文件也可以通过systemctl status docker查看到。

3.Push 到本地仓库

1
2
3
4
# docker push 192.168.1.88:5000/centos
The push refers to a repository [192.168.1.88:5000/centos]
9b198ff9ff5b: Pushed
latest: digest: sha256:d7f3db1caf4ea76117abce89709ebfc66c9339e13866016b8b2e4eee3ab4bea0 size: 529

这个时候就能很愉快地完成push到本地仓库了。

更方便的安装

看到这个的我眼泪留下来,daocloud.io搞的东西。

1
2
3
4
5
6
7
8
9
10
11
在 Linux上 安装 Docker
Docker 的 安装资源文件 存放在Amazon S3,会间歇性连接失败。所以安装Docker的时候,会比较慢。
你可以通过执行下面的命令,高速安装Docker。

curl -sSL https://get.daocloud.io/docker | sh
适用于Ubuntu,Debian,Centos等大部分Linux,会3小时同步一次Docker官方资源

安装体验版或测试版,体验最新Docker。

curl -sSL https://get.daocloud.io/docker-experimental | sh
curl -sSL https://get.daocloud.io/docker-test | sh

Centos7

1
2
3
4
5
6
7
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum makecache fast
#Docker CE
yum install docker-ce
#Docker EE
yum install docker-ee

阿里云无外网IP,内网环境安装Docker

今天遇到,所以补充一下.阿里云提供了一个镜像源https://mirrors.cloud.aliyun.com/docker-ce/

但是没外网的时候是访问不了的,经过一番观察,只需做如下改动即可.

阿里云提供了一个内网访问的域名.将链接改成如下信息即可

http://mirrors.cloud.aliyuncs.com/docker-ce/

1
2
3
4
5
6
7
8
9
10
yum install -y yum-utils
yum-config-manager --add-repo http://mirrors.cloud.aliyuncs.com/docker-ce/linux/centos/docker-ce.repo
# 印象中就改了两处 反正目的就是吧repo的外网链接改为阿里云内网的.
sed -i 's/https/http/g' /etc/yum.repos.d/docker-ce.repo
sed -i 's/aliyun/aliyuncs/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
# Docker CE
yum install docker-ce
# Docker EE
yum install docker-ee

参考资料

给作者打一针鸡血