docker容器镜像

一:基于容器做镜像

默认从dockerHUB上拉取busybox镜像

[root@localhost ~]# docker pull busybox

启动容器。

[root@localhost ~]# docker run --name busybox-test -it busybox /bin/sh

/bin/sh可写可不写,因为此容器镜像默认运行的就是/bin/sh。另外打开一个ssh窗口查看已经启动的容器。

查看容器当前目录情况,且在当前容器下创建目录文件并在此目录下创建一个网页文件。

这个过程容器需在运行状态我们不能退出关闭容器,(如果我们下次启动busybox这个容器,刚才的创建的文件及改变的内容肯定不会有的)如果我们期望把刚才改变的内容改变的结果保存起来,我们就需要基于运行的容器来做镜像

基于容器做镜像

[root@localhost ~]# docker commit -p busybox-test

这个镜像REPOSITORY(仓库)和TAG( 标签)只有一个ID,为了后面引用方便我们需要给镜像打上标签。

给镜像打上标签(一个镜像可以有多个标签)

[root@localhost ~]# docker tag 096dbf4680a2 jchj/httpd:v0.1

jchj/httpd:v0.1 jchj是指的是dockerHUB用户账号名称

httpd:仓库的名称

v0.1:镜像版本

再次查看镜像

[root@localhost ~]# docker image ls 或 docker images

一个镜像能打多个标签如再次给此镜像打上第二个标签,观察此镜像ID是一样的。

latest:最新版

[root@localhost ~]# docker tag jchj/httpd:v0.1 jchj/httpd:latest

[root@localhost ~]# docker image ls

此时如果我想要删除一个标签也只是删除了一个引用,并不会删除镜像,就像是删除了一个硬链接一样,只是删除了它的引用路径,并不会删除文件。

删除操作:

[root@localhost ~]# docker image rm jchj/httpd:latest

再次查看已经没有此jchj/httpd:latest此镜像了。

如何在做镜像时同时也打上标签。

镜像定义了基于此镜像启动容器时默认要运行的程序。

如查看已经启动的busybox镜像

[root@localhost ~]# docker inspect busybox

查看下nginx镜像的默认运行的程序

[root@localhost ~]# docker inspect nginx

查看下centos镜像的默认运行的程序

[root@localhost ~]# docker inspect centos

如上我们基于busybox创建的jchj/httpd:v0.1镜像,默认启动容器时运行的命令依然时busybox的/bin/sh

(容器一定是基于某个镜像启动的)在基于这个容器创建新镜像时期望这个镜像默认运行的命令不再是原来的镜像的默认命令,也就是在基于这个容器创建新的镜像时改变其默认运行的程序。

例如:进入基于此jchj/httpd:v0.1镜像启动的容器,基于此容器的制作新镜像时默认启动的不再是/bin/sh而是httpd

[root@localhost ~]# docker run -it jchj/httpd:v0.1

[root@localhost ~]# docker commit -a "jchj " -c 'CMD ["/bin/httpd","-f","-h","/data/html"]' -p vigilant_booth jchj/httpd:v0.2

基于vigilant_booth容器制作的新镜像默认运行的程序是httpd

再基于jchj/httpd:v0.2这个镜像启动一个容器看看默认启动程序是不是httpd

[root@localhost ~]# docker run --name tt -itd jchj/httpd:v0.2

[root@localhost ~]# docker ps(也可使用命令docker container ls)

[root@localhost ~]# docker inspect tt

[root@localhost ~]# docker inspect tt 查看容器,一个微型的web服务器就运行起来了。

[root@localhost /]# docker rename jms_web jms_http

二:本地镜像推送至容器仓库

这里选择的是阿里云容器仓库,当然你也可以推送至dockerHUB仓库、自建的容器仓库或其它第三方容器仓库。

这以阿里云的仓库为例:选择“容器镜像服务”个人实例-个人版

以jchj-shop找个容器仓库为例:点击jchj-shop仓库的管理,看查看此仓库的使用。

首先需要登录容器仓库:

[root@localhost ~]# docker login --username=aliyunXXXXXXX registry.cn-zhangjiakou.aliyuncs.com

查看需要推送至仓库镜像的ID并打赏标签。

推送至阿里云仓库:

查看推送至阿里云容器仓库的镜像:

注:在同一个局域网内如果不希望docker镜像上传至仓库后再在另外的docker主机pull到本地,其实也可以直接在本地打包后再复制到远程主机上。

打包本地镜像:

[root@localhost ~]# docker save -o ./shop.gz jchj/httpd:v0.2

传送至10.0.0.200的主机上。

登录10.0.0.200主机安装docker,启动docker加载刚SCP过来的镜像

[root@localhost ~]# docker load -i shop.gz

删除所有已退出的容器

docker rm $(docker ps -q -f status=exited)


删除所有已停止的容器

docker rm $(docker ps -a -q)


删除所有正在运行和停止的容器

docker stop $(docker ps -a -q) docker rm $(docker ps -a -q)


删除所有容器,没有任何标准

docker container rm $(docker container ps -aq)

但是,在1.13及以上版本中,为了完整的系统和清理,我们可以直接使用下面的命令,

docker system prune

所有未使用的容器,图像,networking和卷将被删除。 另外,单独的,即单独的,我们可以使用下面的命令,清理组件,

docker container prune docker image prune docker network prune docker volume prune

展开阅读全文

页面更新:2024-04-29

标签:容器   阿里   仓库   命令   名称   主机   版本   标签   文件   程序

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top