@

目录

  • 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运行正常。

docker pull 指定私有库 docker push到私有仓库_docker

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 中写入如下内容(如果文件不存在请新建该文件),也可以使用图形界面配置,

docker pull 指定私有库 docker push到私有仓库_私有仓库_02

{
  "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