1、搭建镜像仓库
1.1、拉取仓库镜像
# 拉取私有镜像库:
docker pull registry
1.2、修改docker配置文件,指定镜像仓库ip
# 修改daemon.json文件
vim /etc/docker/daemon.json
添加"insecure-registries":["*.*.*.*:5000"]配置使私有镜像仓库支持http请求。
示例:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"], # 拉取镜像从配置的镜像源拉取
"insecure-registries":["*.*.*.*:5000"] #使私有镜像仓库支持http请求
}
1.3、运行镜像仓库
docker run -d -p 5000:5000 --name my_registry --restart always \
-v /opt/docker/myregistry:/var/lib/redistry --privileged=true registry
1.4、查看私服仓库中镜像列表
在镜像仓库成功启动之后,可以通过 get 请求,查看私服仓库中的镜像列表。
curl -XGET http://*.*.*.*:5000/v2/_catalog
2、镜像打 tag 并推送到私有仓库
2.1、给镜像打 tag
# 将已经存在的镜像:镜像:tag 打tag成名为:ip:5000/镜像:tag
docker tag 镜像:tag ip:5000/镜像:tag
2.2、推送私服仓库
docker push ip:5000/镜像:tag
2.3、从私服中拉取镜像
docker pull ip:5000/镜像:tag
注: 如果使用的是公共仓库,推送镜像需要登录才能有权限推送,使用 docker login/logout,按照提示输入用户名和密码即可。
3、其他机器访问私服仓库配置
搭建好私服仓库以后,要使得其他机器使用私服仓库,需要增加以下配置。
# 修改daemon.json文件,vim /etc/docker/daemon.json
添加"insecure-registries":["*.*.*.*:5000"]配置
重新加载配置: systemctl daemon-reload
重启docker服务: systemctl restart docker.service
3.1、修改配置后,出现问题记录
1、配置完重启出错:
Active: failed (Result: start-limit) since Fri 2021-12-31 11:35:48 +08; 14s ago
Docs: https://docs.docker.com
Process: 296743 ExecStart=/usr/bin/dockerd --selinux-enables=false
--insecure-registry=ip (code=exited, status=1/FAILURE)
# 配置私服仓库,daemon.json和/etc/systemd/system/docker.service文件中ExecStart中的配置,
配置一个就行(注:只能配置一个。)
2、出现Error starting daemon: SELinux is not supported with the overlay2 graph driver
on this kernel. Either boot into a newer kernel or disabl...nabled=false)
# 新增(修改)/etc/sysconfig/docker文件,添加以下内容(注:docker文件和docker.service可以同时包含--selinux-enabled=false,一般配置在docker.service中):
vim /etc/sysconfig/docker
OPTIONS='--selinux-enabled=false --log-driver=journald --signature-verification=false'
if [ -z "${DOCKER_CERT_PATH}" ]; then
DOCKER_CERT_PATH=/etc/docker
fi
### 注:修改完配置文件都要执行以下两行命令
重新加载配置: systemctl daemon-reload
重启docker服务: systemctl restart docker.service
4、安装可视化工具
使用可视化工具对docker进行管理,能够更加便捷操作镜像和容器。
# 1、拉取 portainer/portainer 镜像并运行
docker run -d -p 8000:8000 -p 9000:9000 -v /opt/docker/portainer:/data \
-v /var/run/docker.sock:/var/run/docker.sock --name my_portainer \
--restart always portainer/portainer
# 2、登录:使用9000端口号登录(密码至少12位:123456123456)
总结:在无法使用公共仓库的条件下,通过搭建私服仓库对镜像进行统一管理便于维护,本文只是简单搭建私服仓库,相关技术需要更加深入学习。