Docker远程私有镜像仓库搭建
使用Docker进行打包应用后,自然不能上传至公用的镜像仓库,考虑到安全和方便,可以简单的采用一台服务器作为私有镜像仓库。
当然第一步需要安装docker,可以使用官方包进行安装,或者一条命令完事。
yum -y install docker
systemctl start docker
接下来需要使用docker下载官方提供的registry镜像,作为母镜像。
docker pull registry
完成后,建立相关的配置文件夹,这里建立在/docker/registry/auth
文件夹中
mkdir -p /docker/registry/auth
mkdir -p /docker/registry/config
vim /docker/registry/config/config.yml
编写内容config.yml
version: 0.1
log:
fields:
service: registry
storage:
delete:
enabled: true
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
生成用户名和密码,并输出到文件。
docker run --entrypoint htpasswd registry:latest -Bbn 用户名 密码 >> /docker/registry/auth/htpasswd
接着使用下方的命令进行容器的启动,通过-p参数可以指定不同的端口绑定,如果提示启动失败提示已经启动,则可能是安装registry时自动创建了一个容器已经
自动在运行,可以使用需要使用docker rm xxx
命令进行删除后重新执行。
docker run -d -p 5000:5000 --restart=always --name=registry -v /docker/registry/config/:/etc/docker/registry/ -v /docker/registry/auth/:/auth/ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /docker/registry/:/var/lib/registry/ registry
接着需要配置客户端的信任列表,setting中的Docker Engine,配置完重启即可。
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"http://182.254.xxx.xxx:5000"
],
"insecure-registries": [
"182.254.xxx.xxx:5000"
],
"debug": true,
"experimental": true
}
使用docker login 182.254.xxx.xxx:5000
进行登录,输入用户名和密码后,提示Login Succeeded
推送镜像。
docker tag web:latest 182.254.XXX.XXX:5000/web:latest
docker push 182.254.XXX.XXX:5000/web:latest
Done!