@
目录
- Mac os 搭建docker私人仓库,并把修改的容器提交镜像push到私人仓库
- 一.搭建docker私人仓库
- 1. 安装docker
- 2. 运行docker私人仓库
- 3. 在私有仓库上传、搜索、下载镜像
- 二.使用内网地址作为仓库地址
- 三.修改后的容器怎么push到私人仓库
Mac os 搭建docker私人仓库,并把修改的容器提交镜像push到私人仓库
一.搭建docker私人仓库
1. 安装docker
`brew cask isntall docker`
2. 运行docker私人仓库
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库
# 拉取私人仓库镜像
docker pull registry:2
# run
sudo docker run -d -v /Users/chenbing/Desktop/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2`
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的桌面目录/Users/xxx/Desktop/registry目录挂载到该目录,即可实现将镜像保存到主机的/Users/xxx/Desktop/registry目录了。
浏览器访问http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常。
3. 在私有仓库上传、搜索、下载镜像
- 创建好私有仓库之后,就可以使用 docker tag 来标记一个镜像,然后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000。
- 先在本机查看已有的镜像。
- 这里我们重新拉一个镜像试试就可以
docker pull nginx
docker images
docker tag nginx:latest 127.0.0.1:5000/nginx:latest
docker push 127.0.0.1:5000/nginx:latest
访问 http://127.0.0.1:5000/v2/_catalog查看私有仓库目录,可以看到刚上传的镜像了
下载私有仓库的镜像,使用如下命令:
docker pull 127.0.0.1:5000/镜像名:版本号
例如
docker pull 127.0.0.1:5000/nginx:latest
二.使用内网地址作为仓库地址
如果你不想使用 127.0.0.1:5000 作为仓库地址,比如想让本网段的其他主机也能把镜像推送到私有仓库。你就得把例如 192.168.199.100:5000 这样的内网地址作为私有仓库地址,这时你会发现无法成功推送镜像。
这是因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制.
在/etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件),也可以使用图形界面配置,
{
"registry-mirror": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
],
"insecure-registries": [
"192.168.199.100:5000"
]
}
然后重启docker
注意,我只在Mac上配置了发现还是会报错,所以要在需要push镜像的内网主机也要添配置。
参考文献:Docker 私有仓库搭建
Docker —— 从入门到实践
三.修改后的容器怎么push到私人仓库
参考[通过容器提交镜像(docker commit)以及推送镜像(docker push)笔记]()
这里借用这个例子,后面我们push到自己的私人仓库,注意docker tag修改的格式就行
docker run -ti --name myubuntu -d docker.io/ubuntu
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
651a8541a47d docker.io/ubuntu "/bin/bash" 37 seconds ago Up 36 seconds myubuntu
docker commit :从容器创建一个新的镜像。
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
根据这个myubuntu容器提交镜像
docker commit -a "wangshibo" -m "this is test" 651a8541a47d 192.168.199.100:5000/myubuntu:v1
# 注意我的修改的tag
再次查看镜像,发现镜像192.168.199.100:5000/myubuntu:v1已经提交到本地了
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.199.100:5000/myubuntu v1 6ce4aedd12cd 59 seconds ago 84.1 MB
docker.io/ubuntu 16.04 7aa3602ab41e 5 weeks ago 115 MB
push到私人仓库
docker push 192.168.199.100:5000/myubuntu:v1