1. Docker Hub

我们从Docker hub拉取镜像,
我们也可以拉取镜像
首先我们有dockerhub账号

https://hub.docker.com/

image.png

要求

我们镜像tag的格式需要是你Dockerhub的id/镜像名字
例如我的就是 sixmillions/centos-vim

上传镜像

用到命令是 docker image push 可以简写成 docker push
image.png
提示告诉我们怎用了.
但是我们首先要登录dockerhub

  1. docker login
  2. # 输入用户名和密码
  3. # push 镜像
  4. docker push sixmillions/hello

image.png
查看
image.png
谁需要拉取这个镜像的时候就直接

docker pull sixmillios/hello

关联github

上面我们直接上传镜像,别人会觉得有病毒,也不知道你是怎么构建的.
所以我们可以关联github,将构建镜像的Dockerfile上传到github,
dockerhub绑定了github后,dockerhub会根据我们的dockerfile帮我们构建.我们只需要维护dockerfile就可以了.
具体不演示了.

2. 搭建私有的仓库

获取镜像

docker pull registry

创建仓库

# 创建映射路径
mkdir -p /sixmillions/registry

# 运行容器
docker run -d -v /sixmillions/registry:/var/lib/registry \
        -p 5000:5000 --restart=always --privileged=true --name registry \
        registry:latest

5. 镜像发布(dockerhub和私有仓库) - 图5

上传

docker tag centos 122.112.140.159:5000/centos:latest

docker push 122.112.140.159:5000/centos:latest

抱错

The push refers to repository [122.112.140.159:5000/centos]
Get https://122.112.140.159:5000/v2/: http: server gave HTTP response to HTTPS client

image.png
原因,默认是https.
修改master节点

修改https

vi /etc/docker/daemon.json
# 添加
"insecure-registries":["122.112.140.159:5000"]

image.png
重启

systemctl daemon-reload
systemctl restart docker

再上传

docker push 122.112.140.159:5000/centos:latest

image.png

查看

curl http://122.112.140.159:5000/v2/_catalog

ls /sixmillions/registry/docker/registry/v2/repositories

image.pngimage.png

下载镜像

docker pull 122.112.140.159:5000/centos:latest
# 如果忘记版本就用下面命令查看
curl 122.112.140.159:5000/v2/centos/tags/list

image.png

删除私有仓库镜像

参照:

下载脚本

# 下载脚本
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null

# 赋予可执行权限
chmod 755 /usr/local/bin/delete_docker_registry_image

image.png

设置仓库

根据自己实际情况设置私有仓库的路径的环境变量

export REGISTRY_DATA_DIR=/sixmillions/registry/docker/registry/v2

删除私有仓库镜像

### 检查会删除那些数据
delete_docker_registry_image --image centos --dry-run


### 硬删除(建议先关闭私有仓库)
docker stop registry
delete_docker_registry_image --image centos
docker start registry

### 删除镜像tag
delete_docker_registry_image --image centos:latest