博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker镜像基础-04
阅读量:7089 次
发布时间:2019-06-28

本文共 6724 字,大约阅读时间需要 22 分钟。

一、概念

1.1、了解一下Docker镜像

Docker镜像基础-04

这个是我从网上截取的一张图,很清晰的表明了Docker镜像的组成,Docker的镜像内容采用分层构建机制,每一层可以理解为都是一个镜像,多个镜像组成在一起,一般一个镜像内只运行一个应用程序。

Bootfs: 用于引导系统,包括bootloader和kernel,容器启动完成后会被卸载以节约内存资源,可以理解就是Linux内核

Base image: 基础镜像,例如像centos基础镜像,debian基础镜像,busybox基础镜像,表现为rootfs,可以理解为根文件系统
Image :上层应用的镜像,例如Nginx,Mariadb等.....
Container :前面几层都为只读层,这一层为可写层,运行为后容器会在这个docker的镜像上面多加一层可写的容器层,任何的对文件的更改都只存在此容器层。因此任何对容器的操作均不会影响到镜像。

1.2、其他一些知识

(1)存储文件系统

aufs
devicemapper
overlayfs 新版本docker默认
(2)Docker Registry
使用docker run启动容器时,docker_deamon会尝试从本地获取相关镜像,本地不存在,则会找到公开的仓库,下载下来然后才启动成容器
(3)Docker image pull命令解释
docker image pull <仓库的网站>[:<端口默认为443>]/[<仓库的作者>]/<仓库的软件列如jenkins>:<tag标签不指默认为latest>
默认情况下docker会从 dockerhub网站上拉取镜像所以我们在使用docker pull时就不用加上仓库的网站
例如现在从 quay.io网站仓库拉取镜像,这是一个公开的镜像仓库,需要指明网站为quay.io,端口默认为443,不指明tag表示latest最新稳定版
[root@docker-host ~]# docker pull quay.io/pszuster/vsftpd

二、Docker镜像制作

2.2、常见制作docker镜像方法

1.编写Dockerfile文件,然后使用docker image build命令制作

2.基于已经运行的容器制作,使用docker commit命令制作
3.Docker Hub automated builds(基于docker hub自动构建
4.将Dockerfile推送到gitlab或者github自动构建镜像推送Docker仓库

2.3、基于已经运行的容器制作镜像

(1)启动一个busybox容器[root@docker-host ~]# docker container run --name "buysbox-commit" -itd busybox[root@docker-host ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES9a1e974e2eb7        busybox             "sh"                2 seconds ago       Up 2 seconds                            busybox-commit(2)进入busybox-commit容器内部[root@docker-host ~]# docker container attach busybox-commit/ #/ #(3)busybox内置了httpd程序,我们添加一个index.html首页/ # mkdir /var/www/html -p/ # echo "busybox-commit" > /var/www/html/index.html(4)使用docker commit命令制作一个镜像,-a指明制作作者,-p :停止正在运行的容器,后面跟运行的容器名称[root@docker-host ~]# docker commit -a "HBLinux" -p busybox-commitsha256:c7fef79ddd3a0f38c529a47458a787afb9a440783b8feda3c6a5b3e6d056c7dd(5)查看此镜像,可以看到REPOSITORY为
就是我们刚刚制作的镜像 [root@docker-host ~]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE
c7fef79ddd3a About a minute ago 1.2MBbusybox latest 64f5d945efcc 3 weeks ago 1.2MBnginx latest 53f3fd8007f7 3 weeks ago 109MBquay.io/pszuster/vsftpd latest 3b2c3ff7ca5b 12 months ago 494MB(6)使用docker image tag命令给镜像打上REPOSITORY:tag(标签),按格式来打 网站/作者/软件仓库:标签,假如仓库网站为localhost,作者为123,软件仓库为busybox-commit,tag为v0.1版本[root@docker-host ~]# docker image tag c7fef79ddd3a localhost/123/busybox-commit:v0.1[root@docker-host ~]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZElocalhost/123/busybox-commit v0.1 c7fef79ddd3a 9 minutes ago 1.2MBbusybox latest 64f5d945efcc 3 weeks ago 1.2MBnginx latest 53f3fd8007f7 3 weeks ago 109MBquay.io/pszuster/vsftpd latest 3b2c3ff7ca5b 12 months ago 494MB(7)基于此制作的镜像我们再启动一个容器,然后再制作一个镜像启动httpd程序[root@docker-host ~]# docker run --name "busybox-commit-01" -itd localhost/123/busybox-commit:v0.10ec27b4bba3f2b4dadb1d2be8a8b6c9bf5c0600ac05bc4b32dac684ceeafc092(8)使用docker commit再次制作镜像,-c 表示在此镜像运行为容器时执行的命令,我们使用httpd程序读取index.html网页文件[root@docker-host ~]# docker commit -a "HBLinux" -p -c 'CMD ["httpd","-f","-h","/var/www/html"]' busybox-commit-01sha256:528851534d953208c31f4354535d3d0caaffc55498da544357a28513caeea30e[root@docker-host ~]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZE
528851534d95 About a minute ago 1.2MBlocalhost/123/busybox-commit v0.1 c7fef79ddd3a 26 minutes ago 1.2MBbusybox latest 64f5d945efcc 3 weeks ago 1.2MBnginx latest 53f3fd8007f7 3 weeks ago 109MBquay.io/pszuster/vsftpd latest 3b2c3ff7ca5b 12 months ago 494MB(9)为刚刚制作的镜像打上标签[root@docker-host ~]# docker image tag 528851534d95 localhost/123/busybox-commit-httpd:v0.1[root@docker-host ~]# docker image lsREPOSITORY TAG IMAGE ID CREATED SIZElocalhost/123/busybox-commit-httpd v0.1 528851534d95 2 minutes ago 1.2MBlocalhost/123/busybox-commit v0.1 c7fef79ddd3a 27 minutes ago 1.2MBbusybox latest 64f5d945efcc 3 weeks ago 1.2MBnginx latest 53f3fd8007f7 3 weeks ago 109MBquay.io/pszuster/vsftpd latest 3b2c3ff7ca5b 12 months ago 494MB(10)启动此容器然后测试访问[root@docker-host ~]# docker container run --name "busybox-httpd-01" -itd localhost/123/busybox-commit-httpd:v0.1cc541dc5886784c66f279ef987b0bb2f8b2dece408a4b09f4723493a1c4f7927[root@docker-host ~]# docker container inspect busybox-httpd-01 | grep "IPAddress" "SecondaryIPAddresses": null, "IPAddress": "172.17.0.4", "IPAddress": "172.17.0.4",[root@docker-host ~]# curl 172.17.0.4busybox-commit

三、镜像的导入和导出

(1)命令使用[root@docker-host ~]# docker image save -o xxx.gz 镜像的名称[root@docker-host ~]# docker image load -i xxx.gz (2)查看一下我有哪些镜像,就导出localhost/123/busybox-commit-httpd:v0.1这个镜像吧[root@docker-host ~]# docker image lsREPOSITORY                           TAG                 IMAGE ID            CREATED             SIZElocalhost/123/busybox-commit-httpd   v0.1                528851534d95        17 minutes ago      1.2MBlocalhost/123/busybox-commit         v0.1                c7fef79ddd3a        43 minutes ago      1.2MBbusybox                              latest              64f5d945efcc        3 weeks ago         1.2MBnginx                                latest              53f3fd8007f7        3 weeks ago         109MBquay.io/pszuster/vsftpd              latest              3b2c3ff7ca5b        12 months ago       494MB[root@docker-host ~]# docker image save -o busybox-commit-httpd:v0.1.gz localhost/123/busybox-commit-httpd:v0.1[root@docker-host ~]# ls -l busybox-commit-httpd\:v0.1.gz-rw------- 1 root root 1435136 Jun  4 01:38 busybox-commit-httpd:v0.1.gz(3)导入镜像[root@docker-host ~]# docker image load -i busybox-commit-httpd\:v0.1.gz

一步一步来!!!!!!!!!!!!!!!!!!!!!!

其实很简单哒!!!!!!!!!!!!!!!!!!!!!

转载于:https://blog.51cto.com/10869205/2404552

你可能感兴趣的文章
一键LNMP安装了哪些软件?安装目录在哪?
查看>>
企业为什么需要CRM客户管理系统
查看>>
备考干货 | 一份5A学长学姐带你正经“P(ai) M(a) P(i)”的攻略
查看>>
用WAPI安全网卡享受安全的无线网络
查看>>
T-SQL 高级查询
查看>>
编程能力与编程年龄
查看>>
分享学习Python的方法有哪些?
查看>>
怎样把PDF转换成PPT?迅捷PDF转换器来助力
查看>>
PDF怎么设置全屏动画,轻松提高工作效率
查看>>
将现有的VSAN添加至新的VCenter
查看>>
Http重定向https MPM模块 HTTPd常见配置 sendfile 20190227
查看>>
keepalived+haproxy高可用
查看>>
比特币量化交易
查看>>
Python经典面试题 之 is 和 == 的区别
查看>>
DNS简介
查看>>
微信环境中如何实现点击链接自动直接跳转到手机外部默认浏览器
查看>>
dg切换操作文档
查看>>
PHP 统计数组元素个数
查看>>
pkgconfig问题,在安装rrdtool的时候,编译又这个问题
查看>>
也谈谈Apache与Nginx
查看>>