罗田县升平网络工作室,一家专业从事网站建设的工作室

资讯论坛

 找回密码
 加入论坛

快捷登录

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。
查看: 534|回复: 0

一篇文章弄懂Docker镜像的制作、上传、拉取和部署

[复制链接]
发表于 2021-9-27 15:05:06 | 显示全部楼层 |阅读模式
目录


  • 一、镜像(images)

    • 1. 什么是镜像?
    • 2. 镜像的组成和用途

      • (1)Dockerfile
      • (2)scratch
      • (3)一个完整的操作系统需要:

    • 3. 为什么要自己制作镜像?

  • 二、镜像制作的步骤(10步法)

    • 第1步:编辑Dockerfile
    • 第2步:编辑requirements.txt文件
    • 第3步:编辑app.py文件,我们的程序文件
    • 第4步:生成镜像文件
    • 第5步:检查镜像是否成功
    • 第6步:使用镜像,启动容器
    • 第7步:访问容器的web服务
    • 第8步:启动redis容器
    • 第9步:再次启动一个自己制作镜像的容器,链接到redis容器
    • 第10步:访问容器的web服务

  • 三. 镜像制作的作业

    • 作业
    • 作业步骤:

  • 总结

一、镜像(images)



1. 什么是镜像?


(1)按照百度百科的解释:镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。
(2)可以把许多文件做成一个镜像文件,与GHOST等程序放在一个盘里用GHOST等软件打开后,又恢复成许多文件,RAID 1和RAID 10使用的就是镜像。
(3)常见的镜像文件格式有ISO、BIN、IMG、TAO、DAO、CIF、FCD。
看完之后是不是更晕了?
其实简单来说,镜像就是是一个app的封装,里面有程序代码,基础系统,依赖库,工具。
再通俗地讲,有点类似APP 的安装包。

2. 镜像的组成和用途



(1)Dockerfile


: 是制作镜像的文件的配方
就像一种祖传秘方: 云南白药: 林芝,人参,鹿茸,三七等

(2)scratch


: 是最基础的docker镜像,相当于一个地基—》空白的镜像,什么都没有 --》白手起家
用别的镜像做基础镜像: 其他镜像可以之为基础进行扩展就像站在巨人的肩膀上。
但是我们需要,万丈高楼平地起,一步一个脚印👣去制作镜像

(3)一个完整的操作系统需要:


1.kernel
2.系统调用
3.应用程序、库
4.shell等
bootfs --》容器启动的时候需要的内容
rootfs --》容器内部的操作系统
docker save
docker export
原理:
容器启动的时候,内核启动bootfs后直接将基础镜像加载,然后一层一层的加载》自下而上
容器运行后访问文件的时候,从上而下,从可写层,一层一层往下访问。

3. 为什么要自己制作镜像?


以前在Linux 中下载mysql,Centos 系统中需要使用yum 命令,在学习完doker技术以后,需要什么软件,只需要在docker 上面pull 就可以得到,docker 就像是一个巨大的资源库,只有你想不到的东西,没有它没有的东西。
有些同学说:是技术限制了我对 docker 的想象,流下了悔恨的泪水。
哪有些同学就说了,那既然docker 这么方便,上面有那么多的镜像文件,为什么还需要我们自己去制作呢?需要啥 pull 啥不就可以了嘛?
但是,在公司中往往需要自己制作镜像文件,因为别人制作的东西往往会不放心,或者某些特定的需求不能满足。就像你去买茅台酒,商家说这是十年的茅台,你就信他?这就是十年的茅台?不去鉴定一下?如果是土豪,就当我没说,哈哈啊哈

二、镜像制作的步骤(10步法)



第1步:编辑Dockerfile

  1. [root@sc-docker-server ~]# mkdir /mydocker/[root@sc-docker-server ~]# cd /mydocker/[root@sc-docker-server mydocker]#[root@sc-docker-server mydocker]# vim DockerfileFROM python:2.7-slimWORKDIR /appADD . /appRUN pip install --trusted-host  pypi.python.org -r requirements.txtEXPOSE 80ENV NAME WorldENV AUTHOR caliCMD ["python","app.py"]
复制代码
第2步:编辑requirements.txt文件
  1. [root@sc-docker-server mydocker]# vim requirements.txtFlaskRedis
复制代码
第3步:编辑app.py文件,我们的程序文件
  1. [root@sc-docker-server mydocker]# vim app.pyfrom flask import Flaskfrom redis import Redis, RedisErrorimport osimport socket# Connect to Redisredis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)app = Flask(__name__)@app.route("/")def hello():    try:        visits = redis.incr("counter")    except RedisError:        visits = "<i>cannot connect to Redis, counter disabled</i>"    html = "<h3>Hello {name}!</h3>" \           "<b>Hostname:</b> {hostname}<br/>" \           "<b>Visits:</b> {visits}"    return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits)if __name__ == "__main__":    app.run(host='0.0.0.0', port=80)
复制代码
第4步:生成镜像文件
  1. [root@sc-docker-server mydocker]#docker build -t sc_friendlyhello_1 .docker build -t sc_friendlyhello_1 .Sending build context to Docker daemon  4.608kBStep 1/9 : FROM python:2.7-slim ---> eeb27ee6b893Step 2/9 : WORKDIR /app ---> Using cache ---> 81aa71984f63Step 3/9 : ADD . /app ---> Using cache ---> a5c7c6ed471cStep 4/9 : VOLUME ["/data_flask"] ---> Using cache ---> d4db66a741dbStep 5/9 : RUN pip install --trusted-host  pypi.python.org -r requirements.txt ---> Using cache ---> bcdee009e5f7Step 6/9 : EXPOSE 80 ---> Using cache ---> 475474ce55ffStep 7/9 : ENV NAME World ---> Using cache ---> 0f03ead6c99bStep 8/9 : ENV AUTHOR cali ---> Using cache ---> f844eb0f1a78Step 9/9 : CMD ["python","app.py"] ---> Using cache ---> ab30484b56b8Successfully built ab30484b56b8Successfully tagged sc_friendlyhello_1:latest[root@sc-docker-server mydocker]#
复制代码
第5步:检查镜像是否成功
  1. [root@sc-docker-server mydocker]# docker imagesREPOSITORY                 TAG        IMAGE ID       CREATED          SIZEsc_friendlyhello_1         latest     ab30484b56b8   32 minutes ago   159MB
复制代码
第6步:使用镜像,启动容器
  1. docker run -d -p 5080:80  --name sc-hello-1 sc_friendlyhello_1
复制代码
第7步:访问容器的web服务
  1. curl或者chrome浏览器访问宿主机ip:5080
复制代码
  1. Hello World!Hostname: f4aeb5d5305aVisits: cannot connect to Redis, counter disabled
复制代码
因为redis数据库容器没有启动,flask web服务不能连接到redis数据库

第8步:启动redis容器
  1. docker run -d -p 6379:6379 --name sc-redis-1 redis
复制代码
第9步:再次启动一个自己制作镜像的容器,链接到redis容器
  1. docker run -d --name sc-hello-2 -p 5081:80 --link sc-redis-1:redis sc_friendlyhello_1
复制代码
第10步:访问容器的web服务
  1. curl或者chrome浏览器访问宿主机ip:5081
复制代码
  1. Hello World!Hostname: aad7da1892b5Visits: 15
复制代码
三. 镜像制作的作业



作业


1.升级 sc_friendlyhello_1的镜像里的基础镜像为python:3.9
自己的镜像更名为sc_friendlyhello_2
2.启动容器和redis容器,测试访问**

作业步骤:


安装上传的文件
  1. root@sc-docker-server ~]# yum install lrzsz -y  安装上传的软件上次元数据过期检查:0:25:32 前,执行于 2021年08月18日 星期三 09时52分02秒。软件包 lrzsz-0.12.20-43.el8.x86_64 已安装。依赖关系解决。无需任何处理。完毕![root@sc-docker-server ~]#
复制代码
第1步:下载app源代码
  1. https://github.com/docker/getting-started 在windows里下载,然后上传到linux里 yum install git -y linux里: git clone https://github.com/califeng/getting-started.git
复制代码
第2步:解压app源代码压缩包
  1. [root@sc-docker-server ~]# yum install zip unzip -y    [root@sc-docker-1 ~]# unzip getting-started-master.zip
复制代码
第3步:进入app目录,去新建一个Dockerfile
  1. [root@sc-docker-1 getting-started-master]# cd app/    [root@sc-docker-1 app]# vim DockerfileFROM node:12-alpineWORKDIR /appCOPY  . .RUN yarn install --productionCMD ["node", "src/index.js"]
复制代码
第4步:制作镜像
  1. [root@sc-docker-1 app]# docker build -t getting-started .-t getting-started 是指定制作的镜像的名字,名字可以自己定义[root@sc-docker-1 app]# docker images  查看制作的镜像REPOSITORY                TAG         IMAGE ID       CREATED          SIZEgetting-started           latest      5b903e857b8c   25 seconds ago   179MBredis                     latest      cc69ae189a1a   2 days ago       105MBnginx                     1.19.7      35c43ace9216   7 days ago       133MBnginx                     latest      35c43ace9216   7 days ago       133MBmysql                     5.7.33      5f47254ca581   2 weeks ago      449MBnginx                     1.19.6      f6d0b4767a6c   6 weeks ago      133MBnode                      12-alpine   0206ff8a5f9e   7 weeks ago      88.9MBricharvey/nginx-php-fpm   latest      5c3ad1891297   5 months ago     506MBhello-world               latest      bf756fb1ae65   13 months ago    13.3kBjcdemo/flaskapp           latest      4f7a2cc79052   2 years ago      88.7MB[root@sc-docker-1 app]#
复制代码
第5步:启动自己制作的镜像的容器
  1. [root@sc-docker-1 app]# docker run -dp 3000:3000 getting-started8f150a72e7d2d1650685b00a18d237469fa07c8cd56977773dd266b281a3b4ad[root@sc-docker-1 app]# docker psCONTAINER ID   IMAGE             COMMAND                  CREATED         STATUS         PORTS                    NAMES8f150a72e7d2   getting-started   "docker-entrypoint.s…"   5 seconds ago   Up 3 seconds   0.0.0.0:3000->3000/tcp   strange_benzdeabb58e01b0   nginx             "/docker-entrypoint.…"   26 hours ago    Up 2 hours     0.0.0.0:6655->80/tcp     chenpeng[root@sc-docker-1 app]#
复制代码
第6步:打开浏览器去访问容器里的网站
容器里的网站:http://192.168.0.161:3000/

总结


1.镜像的制作是作为docker 技术中必备的技能,你说你会docker ,别人一定会问你镜像的制作吗?你说制作那玩意干啥,别人就会会心一笑,心里一想这个人的技术一定很low,连这个都不会,还说自己会docker,呵呵。
2.后面有关镜像制作有详细的步骤,镜像制作十步法会教你怎么去做的,慢慢来,一步一步来做。
到此这篇关于Docker镜像制作、上传、拉取和部署的文章就介绍到这了,更多相关Docker镜像制作、上传、拉取和部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

来源:http://www.jb51.net/article/221128.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
打赏鼓励一下!
回复

使用道具 举报

回帖中禁止出现的内容,违者将被直接永久禁止访问,删除ID处理 :1.违反法律法规 ,包括但不限于出现带有政治、色情、暴恐信息等内容;2.恶意攻击内容,包括但不限于:恶意攻击党和政府、辱骂跟帖者、攻击主题发布者、不服从论坛管理、挑衅管理者、挑战版规等;3.广告、推广内容,尤其出现带有病毒、恶意代码、广告链接等内容,包括但不限于:QQ号、文字QQ号、微信号、手机号、文字手机号、第三方网址、单位公司名称、网站名称等;4.回帖贴出该主题隐藏资源链接或其它主题隐藏资源链接的行为。

浏览排行

(38463)2019-11-5 公共云钱包资金盘骗局揭秘: 网络传销+原始股骗局合体!

(22233)2019-12-20 12月17日 邓智天法院直播庭审疑问全解答!

(20722)2019-12-1 环保币GEC资金盘骗局最新消息: 即将崩盘!

(17244)2019-11-9 巨胸肥臀大长腿,嫩模糯美子真人COS不知火舞福利污图

(15868)2018-12-24 罗田县人民法院公布【第五批失信被执行人名单】 ...

(14972)2019-11-3 曝光!PTFX已经崩盘跑路,投资者血流成河!

(13018)2019-8-7 湖北电力网上缴费,支付宝绑定户号的初始密码是什么?

(12480)2018-10-17 罗田县人民政府“12345”市民服务热线服务指南

(11170)2019-12-11 公安定性了, 趣码是非法传销! 趣码怎么退回365元?

(11081)2019-12-15 满足你对女同事的幻想 风骚秘书阿朱销魂眼神勾魂摄魄

最新发表

[升平网络工作室]2025-8-23 [2025-08-23]罗田天气预报

[升平网络工作室]2025-8-23 西藏自治区成立60周年庆祝大会隆重举行 习近平出席大会

[升平网络工作室]2025-8-23 县委委员会召开查摆问题整改整治情况汇报会

[爱查小程序]2025-8-22 [爱查]在线听音乐操作说明

[升平网络工作室]2025-8-22 [2025-08-22]罗田天气预报

[升平网络工作室]2025-8-22 习近平率中央代表团抵达拉萨出席西藏自治区成立60周年庆祝活动

[升平网络工作室]2025-8-22 县关工委联合经济开发区开展“情系学子”助学活动 助力职工子女圆梦大学

[升平网络工作室]2025-8-21 2025年罗田县卫健系统赴高校公开招聘事业单位工作人员拟聘用人员公示公告

[升平网络工作室]2025-8-21 [2025-08-21]罗田天气预报

[升平网络工作室]2025-8-21 县安防委2025年度第三次全体(扩大)会召开

QQ|Archiver|手机版|小黑屋|资讯论坛BBS.SPW8.CN ( 鄂ICP备2021011341号-3 )|网站地图


手机扫一扫继续访问
[免责声明]
本站系本网编辑转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。
如涉及作品内容、版权和其它问题,请在30日内与本网联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。

进入社区 | 发表新帖 | 百度收录 |
技术提供:罗田县升平网络工作室
站长Email:admin@spw8.cn
投诉电话(刮开查看):15374567400

GMT+8, 2025-8-23 17:07 , Processed in 0.568996 second(s), 30 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表