云原生环境搭建—Docker创建镜像 并推拉Harbor

本文详细介绍了如何通过Dockerfile构建镜像,包括创建Dockerfile、构建镜像的过程。接着演示了基于运行的容器通过docker commit创建镜像,并将镜像推送到Harbor私有仓库的步骤,包括登录Harbor、打标签、推送镜像等操作。同时,还解决了在推送过程中遇到的连接拒绝问题,通过修改daemon.json配置文件实现了对私有仓库的认证。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

创建镜像 

2种方式

1、根据Dockerfile 【build】

2、基于运行的容器修改后 【commit】

镜像与容器关联

一、根据Dockerfile创建镜像

1、mkdir dockerfile/lib/centos7base/

创建目录

2、创建Dockerfile

vim Dockerfile

 

二、构建镜像

docker build -t python.

--tag, -t: 镜像的名字及标签

过程解析
我们看一下docker的编译过程

编译的第一步 会复用之前已经存在的python
重点是第二步
b48566f8cf2c其实是在python镜像的基础上生成的一个临时container的id
我们忽略其中的安装过程,跳到最后

 

最后根据临时生成的container来docker commit 生成镜像文件,最后删除临时container(对照博客开始的图示进行理解)
 

三、根据容器构建镜像

 1、拉去一个镜像

docker run -it centos

(run =(pull start exec))

2、查看vim

3、安装一个vim 

yum install vim

 

 4、退出容器

exit

 5、提交容器


现在根据运行的容器生成的镜像还在本地,下面需要提交推送到私服Harbor

 

四、 推送镜像到Harbor

启动Harbor

执行install.sh也可以启动。

可以看到docker-compose.yml可知使用了docker-compose,可以使用后台启动的方式来实现harbor的启动。

 停止容器

docker-compose stop

后台启动容器

docker-compose up -d

登陆到Harbor

docker login  -u 用户名 -p 密码

举例:

docker login --username=cheergoivan registry.cn-hangzhou.aliyuncs.com

可能的报错问题

[root@k8s-master ~]# docker login 192.168.59.128
Username: admin   
Password:
Error response from daemon: Get https://192.168.59.128/v2/: dial tcp 192.168.59.128:443: connect: connection refused
这里说拒绝连接,因为我是用http部署的harbor,这里是https://进行访问的,所有出现报错

然后解决这个问题其实就在/etc/docker/daemon.json文件下

添加对私有仓库的认证就可以登录了

[root@k8s-master ~]# vim /etc/docker/daemon.json

{
        "registry-mirrors": ["http://f1361db2.m.daocloud.io"],
        "insecure-registries": ["192.168.59.128"]
}

重启docker
[root@k8s-master ~]# systemctl restart docker

登录,这里说你已经登陆了问题解决
[root@k8s-master ~]# docker login 192.168.59.128
Username: admin
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

访问http://192.168.59.128/登录Harbor

 

1、打标签

 docker tag dkcentos:latest 192.168.59.128/dukang/dukcentos:latest

2、推送

docker push 192.168.59.128/dukang/dukcentos


到私服Harbor查看上传的镜像是否OK 

注意点 这里可以看到:推送格式

3、删除本地镜像 (本地无用的镜像可以删除)

(保证该镜像对应的容器都stop)

docker rmi .........

无法删除镜像multiple repositories

原因:对于被删除的ImageID,这里存在多个REPOSITORY名字引用。通过镜像名字删除。

参考文章 https://blog.csdn.net/JackLiu16/article/details/80581709

4、拉取镜像

docker pull 192.168.59.128/dukang/dukcentos:latest

 

总结:

镜像创建

docker build 命令用于使用 Dockerfile 创建镜像。

使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。

docker build -t runoob/ubuntu:v1 . 

docker commit :从容器创建一个新的镜像。

将容器a404c6c174a2 保存为新的镜像mymysql:v1 ,并添加提交人信息和说明信息。
docker commit -a "runoob.com" -m "my apache" a404c6c174a2  mymysql:v1 
  • -a :提交的镜像作者;

  • -c :使用Dockerfile指令来创建镜像;

  • -m :提交时的说明文字;

  • -p :在commit时,将容器暂停。

Harbor相关

1、登录

docker login http://xxxxx.com

2、登录私有hub创建项目

   例如项目叫:abc-dev

2、给镜像打tag

  docker tag 2e25d8496557 xxxxx.com/abc-dev/arc:1334

  2e25d8496557:IMAGE ID,可以用docker images 查看

  xxxxx.com:私有hub域名

  abc-dev:项目名称

  arc:镜像名称

  1334:镜像版本号

4、推送

  docker push xxxxx.com/abc-dev/arc:1334  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值