当前位置: 首页 > news >正文

【docker1】指令,docker-compose,Dockerfile

文章目录

  • 1.pull/image,run/ps(进程),exec/commit
  • 2.save/load:docker save + 镜像id,不是容器id
  • 3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一张docker网卡,docker网卡通过nat方式为每个容器分配ip
    • 3.1 link:先docker rm -f删除nginx和alpine两个容器,在alpine中ping myng(相当于域名)的话自动解析为myng的ip
    • 3.2 docker-compose .yml:不用link,location匹配
  • 4.Dockerfile:镜像像程序,容器像进程


1.pull/image,run/ps(进程),exec/commit

docker和vmware虚拟机一样由三部分构成:镜像(image)是像ubuntu镜像文件(iso,img文件),容器(ps)是一个正在运行的虚拟机,仓库是存放镜像文件场所(dockerhub)。tar文件类似于vm使用时的vmdk文件,可将一个镜像直接保存成一个tar文件,别人load重新加载成一个镜像,run起来成了一个虚拟机。Dockfile是一个很短的配置文件,通过写"如何构建"的步骤来指定一个镜像如何构建的,通过docker build指令可将Dockfile构建成一个镜像。仓库保存了一些公有镜像如ubuntu镜像,nginx镜像,mysql镜像,tomcat镜像等。
在这里插入图片描述
ubuntu安装命令:sudo apt install docker.io,网站:play with docker。
docker run -d -p 80:80 nginx上面才会出现80端口,点击80端口跳转到nginx网页首页。
docker run -d -p 81:80 nginx指定外部81端口同理点击81跳转到nginx网页首页(nginx的默认端口是80)。
在这里插入图片描述
在这里插入图片描述
如下再次点击外部80端口。
在这里插入图片描述
如下暂时用不到81,容器里内容修改后要commit成新镜像m1,和pull下来的nginx镜像并列。
在这里插入图片描述
当前目录自己新增index.html(里面写着wai bu de wen jian)和Dockerfile两文件,将原来nginx里面index.html替换了,如下vi Dockerfile。
在这里插入图片描述
在这里插入图片描述
点击外部100号端口如下:上面为dockerfile build成一镜像run成为一容器。
在这里插入图片描述

2.save/load:docker save + 镜像id,不是容器id

docker rm m2将m2镜像直接删除,提示有个容器基于这镜像无法删除,那将容器(container id)也删了。
在这里插入图片描述
删了容器还要删除镜像m2,docker load使m2镜像又从tar文件重新拿过来了。文件映射-v就是将一些静态文件放外面,在外面修改文件(因为是映射的)里面文件也会跟着变化。这个文件映射还会用于其他的一些数据保存,比如mysql的data目录也可以映射到外面,防止数据丢失。
在这里插入图片描述

3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一张docker网卡,docker网卡通过nat方式为每个容器分配ip

容器间同一网段可通过ip通信,容器(3个)和宿主机(eth0)通信是通docker0网卡转发路由过来是ip和端口进行通信。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下curl…回车后打印出下面< html >…。以下就能获取nginx容器数据了,但这种方式需要登录一台机器查看ip,再登录另一台机器去配置这个ip,在实际生产中是不可行的。
在这里插入图片描述

3.1 link:先docker rm -f删除nginx和alpine两个容器,在alpine中ping myng(相当于域名)的话自动解析为myng的ip

在这里插入图片描述
如下curl myng直接得到nginx的首页内容,浏览器将内容解析为界面。
在这里插入图片描述
在这里插入图片描述

3.2 docker-compose .yml:不用link,location匹配

nginx需要到php中去解析,php需要到mysql中访问数据库,两个需要写link,且必须先创建mysql,再部署到其他机器重新输入整个指令麻烦。将这些指令记录到一个配置文件里统一配置,这就是docker-compose(需安装)。
在这里插入图片描述
在这里插入图片描述
网页会显示如下index.html文本字样。
在这里插入图片描述
创建test.php用来监测php是否运行成功。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下/root/html下存的是php文件转发到/var/www/html目录下找php文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Dockerfile:镜像像程序,容器像进程

FROM:指定当前镜像基于哪个镜像,必填,一行就可以构建一个镜像。
WORKDIR:指定接下来shell语句运行在哪个路径下,如下alpine镜像下肯定没有/app这个目录,自动创建。
COPY:将当前宿主机文件拷贝到镜像中去。
RUN:构建容器时运行这脚本,当前工作目录就是/app,所以如下321写入/app/1.txt
CMD:指定整个容器启动起来运行脚本,运行完后整个容器生命周期结束(tail -f 阻塞式)。

如下必须命名为Dockerfile,1.txt里面原本内容有123。
在这里插入图片描述
如下指定镜像名test,最后的点表示dockfile文件位于当前目录下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

  • 刷题——比较版本号
  • Android招聘市场技术要求越来越高,从事三年开发是否应该考虑转行?
  • 【React 】折叠面板,点击展开时再请求数据
  • STM32CubeIDE提示找不到头文件(No such file or directory)的解决办法
  • python3GUI--ktv点歌软件By:PyQt5(附下载地址)
  • USB - USB在消费领域的应用
  • 【nest】puppeteer 使用 addScriptTag 在页面中添加方法的方式
  • Gnu/Linux 之 C 语言函数列表初步整理
  • Python题目
  • C++基础知识——引用
  • 机器学习课程复习——逻辑回归
  • 图像编辑技术的新篇章:基于扩散模型的综述
  • ubuntu16.04升级cmake版本至3.21.0
  • vuex的配置主要内容
  • k8s集群master故障恢复笔记
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Redis中的lru算法实现
  • Redux系列x:源码分析
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Vue.js-Day01
  • 阿里云前端周刊 - 第 26 期
  • 精彩代码 vue.js
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 前端性能优化——回流与重绘
  • 使用common-codec进行md5加密
  • 数组的操作
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 优化 Vue 项目编译文件大小
  • 源码安装memcached和php memcache扩展
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • Android开发者必备:推荐一款助力开发的开源APP
  • 关于Kubernetes Dashboard漏洞CVE-2018-18264的修复公告
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #define用法
  • #面试系列-腾讯后端一面
  • $(this) 和 this 关键字在 jQuery 中有何不同?
  • (4)(4.6) Triducer
  • (42)STM32——LCD显示屏实验笔记
  • (苍穹外卖)day03菜品管理
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (七)Appdesigner-初步入门及常用组件的使用方法说明
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • .cfg\.dat\.mak(持续补充)
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET导入Excel数据
  • .net网站发布-允许更新此预编译站点
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • .考试倒计时43天!来提分啦!
  • [16/N]论得趣
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [ajaxupload] - 上传文件同时附件参数值