CentOS7.x安装Docker
原创大约 3 分钟
安装配置docker
> uname -r
> yum update
# 卸载旧版本(如果安装过旧版本的话)
> yum remove docker docker-common docker-selinux docker-engine
# 安装需要的软件包,yum-util提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
> yum install yum-utils device-mapper-persistent-data lvm2 -y
# 设置yum源
> yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 或者
> yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装
> yum install docker-ce -y
# 启动并加入开机启动
> systemctl start docker
> systemctl enable docker
# 测试docker是否正常安装和运行
> docker version
# 或者
> docker run hello-world
# 卸载docker-ce
> yum remove docker-ce
# 卸载后,`images`,`containers`,`volumes`,`configuration files`是不能自动删除的
> rm -rf /var/lib/docker
# 如果安装时报错,可能是因为之前已经安装过旧版本的Docker,需要卸载后重新安装
> yum erase docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
# 默认配置下,如果在CentOS使用Docker CE看到下面的这些警告信息
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
# 添加内核配置参数以启用这些功能
> tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
# 重新加载
> sysctl -p
可选步骤
# 开放管理端口映射
> vi /lib/systemd/system/docker.service
# 将第11行的`ExecStart=/usr/bin/dockerd`替换为
# `2375`是管理端口,`7654`是备用端口
> ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock -H tcp://0.0.0.0:7654
# 在/etc/profile中写入docker管理端口
> vi /etc/profile
export DOCKER_HOST=tcp://0.0.0.0:2375
> source /etc/profile
# 设置镜像加速
> vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://aj2rgad5.mirror.aliyuncs.com"]
}
# 重启docker
> systemctl daemon-reload && service docker restart
安装docker compose
> yum install python-pip -y
> pip install --upgrade pip
> pip install docker-compose
> pip install --upgrade docker-compose
> docker-compose -v
# 卸载docker-compose
> pip uninstall docker-compose
安装配置harbor
# 下载并解压
> cd /home/work
> wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.6.1.tgz
> tar -zxvf harbor-offline-installer-v1.6.1.tgz
> rm -rf harbor-offline-installer-v1.6.1.tgz
# 修改配置文件,因为hostname中有域名,因此需要修改/etc/hosts中的映射关系
> cd harbor
> vi harbor.cfg
hostname = 12.34.56.78
# 邮箱配置
email_server = smtp.qq.com
email_server_port = 25
email_username = 125043411@qq.com
email_password =12345678
email_from = xiongkf <125043411@qq.com>
email_ssl = false
# 禁止用户注册
self_registration = off
# 设置只有管理员可以创建项目
project_creation_restriction = adminonly
# 最后执行安装脚本
> ./install.sh
安装完成后可用浏览器访问http://12.34.56.78/harbor/sign-in。
默认账号名和密码是admin / Harbor12345
。
Harbor
的启动和停止。
> cd /home/work/harbor
> docker ps -a
# 或者
> docker-compose ps -a
# 再执行
> docker-compose up -d | docker-compose down -v
# 另一种方式
> docker-compose start | stop | restart
上传和下载镜像
在浏览器中访问http://IP/harbor/projects。
依次选择项目
-> 新建项目
-> docker-repo
。
# 设为私有项目
> docker tag openjdk:8u181-jdk-alpine 12.34.56.78/docker-repo/jdk:8u181
> docker push 12.34.56.78/docker-repo/jdk:8u181
如果出现Get https://12.34.56.78/v2/: dial tcp 12.34.56.78:443: connect: connection refused
,说明需要以https
方式访问。
安装harbor前修改配置
> cd /home/work/harbor
> vi harbor.cfg
hostname = 12.34.56.78
ui_url_protocol = https
ssl_cert = /etc/certs/ca.crt
ssl_cert_key = /etc/certs/ca.key
# 创建自签名证书key文件
> mkdir /etc/certs
> openssl genrsa -out /etc/certs/ca.key 2048
# 创建自签名证书crt文件
> openssl req -x509 -new -nodes -key /etc/certs/ca.key -subj "/CN=12.34.56.78" -days 5000 -out /etc/certs/ca.crt
# 开始安装harbor
> ./install.sh
# 客户端配置
> mkdir -p /etc/docker/certs.d/12.34.56.78
> scp /etc/certs/ca.crt root@12.34.56.78:/etc/docker/certs.d/12.34.56.78/
# 重启客户端docker
> systemctl restart docker
# 测试是否支持https访问,如果显示Login Succeeded则配置成功
> docker login 12.34.56.78
# 在docker启动的配置仓库地址添加如下内容
> vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --insecure-registry 12.34.56.78
# 重启docker
> systemctl daemon-reload && service docker restart
# 修改/etc/docker/daemon.json文件,增加insecure-registries项
> vi /etc/docker/daemon.json
{
"insecure-registries":["12.34.56.78"]
}
# 重启docker
> systemctl daemon-reload && service docker restart
# 如果在/root/.docker目录中存在config.json文件,则执行
> mv config.json config.json.bak
# 再用docker客户端登录私有镜像仓库
> docker login 12.34.56.78
# 输入账号密码,成功则会显示
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
此时在/root/.docker
目录会重新生成config.json
文件,记录的就是登录12.34.56.78
的信息。
> cat /root/.docker/config.json
{
"auths": {
"12.34.56.78": {
"auth": "YWRtaW46SGFyYm9yMTIzNDU="
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.1-ce (linux)"
}
}
# 再次执行
> docker push 12.34.56.78/docker-repo/jdk:8u181
感谢支持
更多内容,请移步《超级个体》。