前戏
前面我们自己做了个docker镜像,我们可以上传到docker hub,别人就可以下载使用了
发布到docker hub
我们前面使用docker search 查找的镜像都是从docker hub进行查找的,这里管理着最全的docker镜像,我们也可以上传我们的镜像
docker hub官网:https://hub.docker.com/
1.先登录docker hub
[root@HH tmp]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: zouzou0214 Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded
2.更改镜像名称(tag是账户名)
注意要保证image的tag是账户名,如果镜像名字不对,需要改一下tag
docker tag zz/my-docker-flask zouzou0214/my-docker-flask
语法是: docker tag 仓库名 账户名/仓库名
docker tag zouzu0214/my-docker-flask:latest zouzou0214/my-docker-flask
3.推送到自己的docker hub上
[root@HH tmp]# docker push zouzou0214/my-docker-flask The push refers to repository [docker.io/zouzou0214/my-docker-flask] ed6d87727896: Pushed d715287dbe47: Pushed 75cf052a90dc: Pushed a7ced2beb634: Pushed 3d55a1be5031: Pushed b1febd32aebe: Pushed 877b494a9f30: Pushed latest: digest: sha256:70e7f41a767c333bb36dedadedee9655f64de8580a693f0a511925d8ce9eead6 size: 1784
4.登录https://hub.docker.com/查看自己推送的公网镜像
# 1.注册docker id后,在linux中登录dockerhub docker login 注意要保证image的tag是账户名,如果镜像名字不对,需要改一下tag docker tag docker-flask zouzou0214/my-docker-flask 语法是: docker tag 仓库名 用户名/仓库名 # 2.推送docker image到dockerhub docker push yuchao163/centps-cmd-exec:latest # 3.在dockerhub中检查镜像 https://hub.docker.com/ # 4.删除本地镜像,测试下载pull 镜像文件 docker pull zouzou0214/my-docker-flask
发布到私有仓库
发布到docker hub上其他人也是可以下载,并不安全,因此还可以使用docker registry官方提供的私有仓库。
构建公司私有docker仓库,其实就是搭建一个api服务器,通过api可以下载镜像
# 1.下载docker官方提供的私有仓库镜像 docker pull registry # 2.查看镜像 docker images # 3.启动一个私有仓库容器 docker run -d \ -p 5000:5000 \ -v /opt/data/registry:/var/lib/registry \ registry # 4.此时可以检查容器进程 docker ps # 5.此时私有仓库就打开了5000端口,通过端口映射,访问宿主机的5000端口,查看是否通信 yum install telnet -y telnet 127.0.0.1 5000 #检测5000端口是否通信 # 6.修改本地镜像的tag标签,标注我要往哪push镜像 docker tag docker.io/hello-world 192.168.12.96:5000/s14-hello # 7.修改docker配置,允许非安全的传输方式 1.vim /etc/docker/daemon.json,写入信息,私有仓库地址,都得改成自己的 {"registry-mirrors": ["http://95822026.m.daocloud.io"], "insecure-registries":["192.168.12.96:5000"] } 2.修改docker.server vim /lib/systemd/system/docker.service #写入如下信息,请在[service]中写入 [Service] EnvironmentFile=/etc/docker/daemon.json # 8.重启docker服务,使得生效 systemctl daemon-reload #重新加载docker配置文件 systemctl restart docker #重启docker服务 # 9. #重启docker服务,会停止容器,因此要再次启动 docker ps -a docker start b23bcfe42e80 #启动这个私有仓库容器 # 10.推送本地镜像到 私有仓库 192.168.12.96:5000 docker push 192.168.12.96:5000/s14-hello # 11.此时访问api接口,查看私有仓库的数据 http://192.168.12.96:5000/v2/_catalog
-v 参数 挂载宿主机的文件:容器内的文件夹
docker run -p 8000:8080 -v /opt/zou:/opt/data/ -d 43d
启动容器,通过-v参数挂载
挂载容器内的/opt/data/文件夹,其实访问的是宿主机的/opt/zou/
查看镜像
登录到私有仓库
# 登录到私有仓库 docker login https://release-ci.xxx.io/
退出私有仓库
# 退出私有仓库,要加仓库地址,要不然退出的是 dockerhub docker logout https://release-ci.xxx.io/
登录成功之后就可以 push 了
docker push release-ci.xxx.io/common-ci/dependabot-gitlab:0.16.0
# 之前登录过别的账号,如果没有权限,就要先退出 [root@dce-10-6-215-10 ~]# docker logout https://release-ci.xxx.io/ Removing login credentials for release-ci.daocloud.io # 登录私有仓库 [root@dce-10-6-215-10 ~]# docker login https://release-ci.xxx.io/ Username: Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded # 推送到私有仓库 [root@dce-10-6-215-10 ~]# docker push release-ci.xxx.io/common-ci/dependabot-gitlab:0.16.0 The push refers to repository [release-ci.daocloud.io/common-ci/dependabot-gitlab] 2f9867aad46b: Preparing 6d7e6a41e83d: Preparing 89f043bc3918: Preparing bdf858b0aaa2: Preparing