docker镜像管理基础

1.在镜像仓库拉取buybox镜像文件到本地

[root@docker ~]# docker pull busybox
Using default tag: latest
latest: Pulling from library/busybox
0669b0daf1fb: Pull complete 
Digest: sha256:b26cd013274a657b86e706210ddd5cc1f82f50155791199d29b9e86e935ce135
Status: Downloaded newer image for busybox:latest
docker.io/library/busybox:latest
[root@docker ~]# docker  images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              8326be82abe6        2 days ago          166MB
busybox             latest              83aa35aa1c79        3 weeks ago         1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago         127MB

2. 运行镜像文件busybox使其成为容器并给予名字为b1,并在容器中创建data目录,写入hehe到data/index.html里面

[root@docker ~]# docker run --name b1 -it busybox
/ # mkdir data
/ # echo 'hehe' > data/index.html
/ # cat data/index.html 
hehe

3.在创建镜像时,我们不能关闭容器,必须使其处于运行状态,所以我们必须要另起一个终端,然后执行

将正在运行的b1容器创建一个新的镜像文件,并将其命名为dockerzrl/b1版本v0.1

root@docker ~]# docker commit -p b1
sha256:36a839a59f0e1a20283b82247d3918528c9e9d8103c2f1f72db750a5a4c1cbfb
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              36a839a59f0e        3 seconds ago       1.22MB
httpd               latest              8326be82abe6        2 days ago          166MB
busybox             latest              83aa35aa1c79        3 weeks ago         1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago         127MB
[root@docker ~]# docker tag 36a839a59f0e dockerzrl/b1:v0.1
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
dockerzrl/b1        v0.1                36a839a59f0e        About a minute ago   1.22MB
httpd               latest              8326be82abe6        2 days ago           166MB
busybox             latest              83aa35aa1c79        3 weeks ago          1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago          127MB

4.在docker Hub上创建b1仓库,然后将做好的镜像文件放进仓库中

在这里插入图片描述

在这里插入图片描述

5.在服务器上登录docker并将创建的新的镜像文件推到docker hub中的仓库里面

[root@docker ~]# 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: dockerzrl
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@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dockerzrl/b1        v0.1                36a839a59f0e        16 minutes ago      1.22MB
httpd               latest              8326be82abe6        2 days ago          166MB
busybox             latest              83aa35aa1c79        3 weeks ago         1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago         127MB
[root@docker ~]# docker push dockerzrl/b1:v0.1
The push refers to repository [docker.io/dockerzrl/b1]
254175324348: Pushed 
a6d503001157: Pushed 
v0.1: digest: sha256:d61f4aa9833fcbd921e085d80fc5d0926c74e177199634c94fd5bb64c6035361 size: 734

在这里插入图片描述

使用新生成的镜像创建容器,然后可以看出之前在容器中写入的内容

[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dockerzrl/b1        v0.1                36a839a59f0e        29 minutes ago      1.22MB
httpd               latest              8326be82abe6        2 days ago          166MB
busybox             latest              83aa35aa1c79        3 weeks ago         1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago         127MB
[root@docker ~]# docker run --name t1 -it dockerzrl/b1:v0.1
/ # ls
bin   data  dev   etc   home  proc  root  sys   tmp   usr   var
/ # cat data/index.html 
hehe
/ # 

默认情况下是启动的sh进程,但我们是要启动一个http站点,所以我们要在创建镜像时将容器默认启动的进程设为httpd,这样一来我们就可以通过新生成的镜像来快速构建一个简单的http站点了。

[root@docker ~]# docker container inspect t1
						 ...此处省略n行
            ],
            "Cmd": [
                "sh"
            ],

将正在运行的b1容器重新创建一个新的镜像文件,并将其命名为dockerzrl/b1版本v0.2,并指定邮件,以及cmd为/bin/httpd

[root@docker ~]# docker commit -a 'sean <724306579@qq.com>' -c 'CMD ["/bin/httpd","-f","-h","/data"]' -p b1 dockerzrl/b1:v0.2
sha256:dc8d237007e467a8733eee3a32e4225f73170c77cc73ff4c6f12a70bbc7fd317
[root@docker ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
dockerzrl/b1        v0.2                dc8d237007e4        9 seconds ago       1.22MB
dockerzrl/b1        v0.1                36a839a59f0e        54 minutes ago      1.22MB
httpd               latest              8326be82abe6        2 days ago          166MB
busybox             latest              83aa35aa1c79        3 weeks ago         1.22MB
nginx               latest              6678c7c2e56c        4 weeks ago         127MB

将新创建的镜像文件推到docker hub个人仓库里面

[root@docker ~]# docker push dockerzrl/b1:v0.2
The push refers to repository [docker.io/dockerzrl/b1]
254175324348: Layer already exists 
a6d503001157: Layer already exists 
v0.2: digest: sha256:d99685a234cba6d9f6654ddd6b8b4490a0ed984010f81909a4d00db2306f4eb7 size: 734

在这里插入图片描述

使用新生成的镜像创建容器

[root@docker ~]# docker run --name t2 -d dockerzrl/b1:v0.2 
d4e208254ab54e2181bff80f5f61165dd370bb347c593fba0b040853867bb559
[root@docker ~]# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d4e208254ab5        dockerzrl/b1:v0.2   "/bin/httpd -f -h /d…"   7 seconds ago       Up 6 seconds                            t2
1d3abe56b8dc        busybox             "sh"                     About an hour ago   Up About an hour                        keen_wozniak

查询新容器t2的详细信息,获取ip并访问

[root@docker ~]# docker inspect t2
					...此处略省n行
					            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "0c6deef8992e2eaf0f693ea4d21fd96a392a7dfaa6036f54bba0b4b73ba06dc4",
                    "EndpointID": "240b881a9f130a3f0135685334fb6956a02960156f919a1829e1bdef0534b348",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",           ### 容器t2ip
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null
                }
            }
        }
    }
]


[root@docker ~]# curl 172.18.0.3
hehe
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值