首发于 Cloud and Edge Computing
Docker学习 (三)镜像

Docker学习 (三)镜像

CloudMan的《每天5分钟玩转Docker容器技术》教程笔记

2018.06.01

base镜像

1. 不依赖其他镜像,从scratch构建

2. 其他镜像可以以之为基础进行扩展


例如:

下载centos:docker pull centos

内核空间的文件系统是kernel,启动时会加载bootfs

用户空间的文件系统是rootfs,包含/dev,/proc,/bin等

base镜像提供的rootfs很小,是最小安装的linux发行版

查看当前kernel版本:uname -r

打开并进入CentOS容器:docker run -it centos

验证容器是CentOS:cat /etc/redhat-release


容器只能使用host的kernel,并且不能修改


镜像的分层结构

Docker支持通过扩展现有的镜像来创建新的镜像

分层结构的好处是可以共享资源

可写的容器层(位于顶部),容器层之下的叫镜像层

所有对容器的改动 无论添加删除修改,都只发生在容器层

只有当需要修改时才复制一份数据,这就是copy-on-write。

镜像层是只读的,因此镜像可以被多个容器共享


构建镜像

docker commit

纯手工方法,不推荐

1. 运行容器

2. 修改容器

3. 将容器保存为新的镜像


例子:

docker run -it ubuntu

apt-get install -y vim


在新窗口执行:docker ps查看当前运行的容器

docker commit distracted_sammet ubuntu-with-vi

docker run ubuntu-with-vi

查找vi安装位置:which vi


问题:在安装vim时,输入apt-get install vim时会提示unable to locate package vim

解决:先更新列表:apt-get update


Dockerfile构建文件

vi Dockerfile

"

FROM ubuntu

RUN apt-get update && apt-get install -y vim

"

touch Dockerfile


pwd

ls

docker build -t ubuntu-with-vi-dockerfile .


ubuntu-with-vi-dockerfile是通过在base镜像(ubuntu)的顶部添加一个新的镜像层而得到的


镜像的缓存特性

在Dockerfile中添加一行之后,在创建新的镜像时会调用之前的缓存

如果不使用缓存,则在docker build后加上 --no-cache


调试Dockerfile

某一步骤失败时可以打开上一步的临时docker进行debug


Dockerfile常用指令

FROM 指定base镜像

MAINTAINER 设定镜像作者

COPY 将文件从build context复制到镜像

ADD 与COPY类似

ENV 设置环境变量

EXPOSE 指定容器中的进程监听某个端口

VOLUME

WORKDIR 设置镜像中的当前工作目录

RUN 在容器中执行指定的命令

CMD 容器启动时运行的指定的命令

ENTRYPOINT 设置容器启动时运行的命令



2018.06.01

RUN vs CMD vs ENTRYPOINT

RUN:执行命令并创建新的镜像层

CMD:设置容器启动后默认执行的命令及参数

ENTRYPOINT:配置容器启动时运行的命令


Shell和Exec格式

Shell格式:<instruction><command>

例如:CMD echo "hollo world"

Exec格式:<instruction>["executable","param1","param2",…]

例如:CMD ["/bin/echo","Hello world"]

CMD和ENTRYPOINT更推荐使用Exec格式


如果Dockerfile有多个CMD,只有最后一个CMD有效

CMD中的参数可以在启动时被动态替换掉,而ENTRYPOINT中的参数始终会被用到


分发镜像

使用公共Registry

docker login -u [username]

docker push [username]/httpd


搭建本地Regisry

docker run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2

深圳SEO优化公司沈阳网络推广推荐兰州网络营销公司南山网站推广南宁营销网站常州关键词排名价格崇左至尊标王公司滨州模板网站建设公司宿迁seo优化吉林网站搜索优化推荐湖州网站seo优化丹竹头网站搜索优化价格日照企业网站设计营口网站改版价格雅安百姓网标王合肥网站优化按天扣费哪家好济南建网站梅州品牌网站设计报价常州网站优化按天扣费哪家好坪地seo优化公司运城seo网站优化莱芜网站推广工具多少钱渭南建站公司大浪SEO按天扣费无锡英文网站建设价格北京网站开发岳阳seo排名推荐白城网站优化按天扣费推荐福永至尊标王保定网站优化按天收费价格普洱设计网站公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化