阿里内部资料4天实战轻松玩转docker03
我们不是标题党,我们致力于"反卷",打造良好的互联网环境,让更多的人能远离"某些机构"的忽悠;在阿里规章制度允许的条件下,将更多的内部文档、资料、视频分享给大家,希望大家多多关注,持续为大家分享
docker 的实际运用
一、docker 基础命令(下)
这是 docker 基础命令下半部分的学习。
从天池基础镜像中获取
pythondocker pull 天池镜像:标签;
docker 构建镜像 docker?build?-t?registry.cn-shanghai.aliyuncs.com/target:myversion
docker 构建镜像并指定 DockerFile docker?build?-f?./dockerfile?-t?registry.cn-shanghai.aliyuncs.com/target:myversion 设置默认工作目录
add . /目录名称
镜像启动后-----执行
sh run.sh,我们目前使用 cmd ["sh","run.sh"]
查看镜像或容器的详细信息:
docker inspect [容器 ID/镜像名:tag]
给镜像添加一个软链接并改名和标签:
docker tag [oldname:tag]
[newname:tag]
删除镜像:
docker rmi 镜像:tag/镜像 ID
容器和宿主机之间文件复制
docker cp [文件目录 容器 ID:内部路径]
docker cp [容器 ID:内部路径 文件目录]
二、dockerfile 1、案例一
1)搜索 busybox 的镜像,并确保为官方镜像。
2)docker 下载该镜像 busybox 的镜像。
3)给镜像创建一个软链接并改名 box:v1。
4)再创建一个软链接改名为 box:v2。
5)删除 box:v2 镜像。
*操作流程*
1)启动虚拟机,检查防火墙和 Slinux 是否关闭
[root@docker ~] systemctl status firewalld [root@docker ~] getenforce 0
2)检查 docker 是否启动
[root@docker ~] systemctl status docker
3)查看 busybox 镜像
[root@docker ~] docker search busybox
4)下载 busybox 镜像并检查是否成功
[root@docker ~] docker pull busybox [root@docker ~] docker images
5)给镜像创建一个软链接并改名 box:v1 并检查是否成功
[root@docker ~] docker images
[root@docker ~] docker tag busybox:latest box:v1 查看 ImageID,如果一样则软连接成功
6)再创建一个软链接改名为 box:v2。
[root@docker ~] docker tag busybox:latest box:v2 (7)删除 box:v2 镜像
[root@docker ~] docker rmi box:v2 至此,第一个案例就此完成。
2、案例二
[root@docker ~] (没有文件自行创建)
1)下载 centos:7 镜像。并用该镜像启动容器,命名为 centostest,暴露 6446 宿主机端口,映 射容器内 999 端口。
2)将宿主机/root/docker.txt 复制到容器内/user/local/。
3)再从该容器内的/root/docker.txt 文件复制到宿主机/tmp。
4)删除该容器。
*操作流程*
[root@docker ~] docker run -itd -p 6449:999 --name centostest centos:7 参数解释:
-itd:固定写法
-p:暴露的端口号
--name:修改名字
1)用该镜像启动容器,命名为 centostest,暴露 6446 宿主机端口,映射容器内 999 端口
3)查看容器是否启动成功
[root@docker ~] docker ps
4)将宿主机/root/magegood.txt 复制到容器内/usr/local/
[root@docker ~] touch docker.txt
[root@docker ~] docker cp docker.txt 96f7e0daf062:/usr/local 验证
[root@docker ~] docker exec -it 96f7e0daf062 /bin/bash [root@docker ~] ls /usr/local
5)再从该容器内的/root/docker.txt 文件复制到宿主机/tmp
[root@docker tmp] ls /tmp
[root@docker tmp] docker cp 96f7e0daf062 :/root/docker.txt /tmp
6)删除该容器并检查
删除前需要停掉
[root@docker ~] docker stop 96f7e0daf062
[root@docker ~] docker rmi 96f7e0daf062
[root@docker ~] docker ps
注意:使用 search 搜索 centos:7 是找不到官方版本的 [root@docker ~] docker search centos:7
[root@docker ~] docker search centos tag 即可搜索官方的
三、dockerfile 是否可以被替代?
1、概述
dockerfile 可以理解为一个制作镜像的脚本,但远没有脚本复杂。他根据某种格式自定义内容, 就可以快速创建出需求的镜像。
docker 的实际运用 < 40
docker 容器启动的时候在最上层挂载了一个可写层,比如说我在容器里面创建一个文件,这个 文件是存放在可写层的,这时候容器要是销毁了,那么我们对容器的一些写入操作也就没了, 我这个文件也会随着容器销毁而销毁了,我们要是想要保存我们对容器的一些写入操作的话, 可以使用 commit 命令然后将容器制作成一个镜像,这样下次 run 起来该镜像的时候,我们之 前的写入操作就还存在了。
除了使用 commit 方式制作镜像,还有一种方式就是编写 dockerfile ,然后使用 build 命令来 制作镜像了。2、dockerfile 的规则格式: 是注释 指令建议要大写,内容小写。
执行顺序:
docker 是按照 dockerfile 指令顺序依次执行的,也就是说从上到下。3、指令
这个 FROM 指令是 dockerfile 的第一个指令,指定了基础镜像,后面的所有指令都是运行在该 基础镜像环境上的 MAINTAINER,该指令是描述的维护者信息。 底层的系统镜像用的是什么,使用 from 指定,绝大部分情况都用的底层有个系统或者基础的环 境用的是什么,对 docker 不熟练使用 centos 镜像即可。
1)FROM:底层镜像(如系统)
2)RUN:构建时容器内运行的命令
RUN 指令用于在容器中执行命令。我们常用来安装基础软件。 镜像安装软件依赖包都可以放在 RUN 中。
3)COPY:复制 docker 目录中的文件到镜像中
4)ADD:复制 docker 目录中的文件到镜像中。(过程可以解压)
ADD 指令是用来将宿主机某个文件或目录放到(复制)容器某个目录下面。 官方不推荐 ADD,高级复制功能,需求不精准,推荐使用 COPY。
5)EXPOSE:声明开放端口
EXPOSE 指令用于暴露容器里的端口,我们在 3.5 里面演示过了,nginx 暴露的端口是 80,但 是启动容器的时候需要指定宿主机端口来映射暴露的端口。需要暴露多个端口的话可以使用多 个 EXPOSE,也可以一个 EXPOSE 指令后面跟多个端口,端口之间用空格隔开。 声明不是变更,变更使用-p 构建容器时候使用。
6)ENV:设置环境变量
ENV 指令是用于设置环境变量的。 底层环境变量需要需提前设置。
7)CMD:容器启动时执行的命令,最多只能执行一条
CMD 指令是你在容器启动的时候帮你运行的命令,而 RUN 这个指令是构建镜像的时候帮你运 行的命令。
容器启动时执行命令,最多执行一条。
WORKDIR 是指下面的指令都在 WORKDIR 指定目录下面工作,这个与 linux 里面的 cd 差不 多。
切换目录使用 WORKDIR。 做容器轻量级最好,比较小就很好,使用一条命令就不要使用两条命令4、dockerfile 步骤
1)创建 dockerfile 目录,名字可以自定义。 在大目录里面创建各种小目录和文档,比较有层次。 2)在该目录中编辑 dockerfile。
3)用 COPY 或 ADD,需要把被 COPY 文件提前放到 dockerfile 目录中。 4)官方推荐用 COPY,如果需要过程中解压,用 ADD。
5)CMD 字段,需要用["命令","选项 1"]这种格式书写。 强制格式写法,必须使用["命令","选项 1"],类似于 python 的数组。
6)CMD 字段只能写一条命令,且这条命令尽量是前台执行的命令。如果是后台命令,这条命 令结束,docker 就会自动关闭。区别:前台执行命令和后台执行命
1)后台命令:
当在前台运行某个作业时,终端被该作业占据;而在后台运行作业时,它不会占据终端。可以 使用命令把作业放到后台执行。当在后台执行命令时,可以继续使用你的终端做其他事情。比 如 cd/tmp 作为主进程,fork 出来 shell 进程,一旦执行这条后台命令,会顶掉 PID 为 1 的进程, 整个 docker 就挂掉了。
注意:经常操作的 shell 命令都属于后台命令
2)前台命令:
CMD 属于前台命令没有特殊操作会一致出现。
四、docker 的前世今生
1、dockerfile 操作测试
1)用 dockerfile 构建镜像:
docker build -t(设置要构建镜像的名字,最后要加.) 创建基础镜像
docker 提供了两种方法来创建基础镜像
一种是通过引入 tar 包的形式,
另外一种是通过一个空白的镜像来一步一步构建
scratch 是 docker 保留镜像,镜像仓库中的任何镜像都不能使用这个名字,使用 FROM scratc h 表明我们要构建镜像中的第一个文件层。
如果我们有一个 Linux 下可执行的二进制文件,可以构建一个简单的镜像,仅执行这个二进制。 构建的过程很简单,执行如下命令。
$ docker build -t chello:0.1 .
通过 docker images 命令可以本地的镜像。
$ docker images
2)再运行镜像:
docker run -itd -p 8800:80 [image:tag]
docker 中的容器运行在操作系统中,共享了操作系统的内核。对于在 Mac、Windows 平台下, 则是基于 Linux 虚拟机的内核。
而 Linux 内核仅提供了进程管理、内存管理、文件系统管理等一些基础的管理模块。除此之外, 我们还需要一些 Linux 下的管理工具,包括 ls、cp、mv、tar 以及应用程序运行依赖的一些包。 因此我们就需要首先构建一个 Minimal 的操作系统镜像,在此基础上构建 Python 环境,再构 建应用镜像。这样就实现了镜像文件分层,今后如果我们需要更新 Python 版本,那么只需要对 这一层进行更新就可以。
3)查看镜像:
docker ps -a 确认是启动状态
docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是上文说到的 UnionFS。在 docker 镜像的最底层是 bootfs。这一层与我们典型的 Linux/Unix 系统是一样的, 包含 boot 加载器和内核。
当 boot 加载完成之后整个内核就都在内存中了,此时内存的使用权已由 bootfs 转交给内核, 此时系统也会卸载 bootfs。docker 在 bootfs 之上的一层是 rootfs(根文件系统)。rootfs 就是 各种不同的操作系统发行版,比如 Ubuntu,Centos 等等。docker 核心技术与实现原理 这篇 文章,作者阅读了 rootfs 的规范,指出构建 rootfs 一些必须的文件夹。
4)测试:
宿主机用浏览器访问 IP+port 看是否启动成功。
2、dockerfile 案例 1
1)用 dockerfile 创建并启动一个 centos 的 apache 镜像。指定自定义内容。
FROM centos:7
RUN yum -y install httpd
EXPOSE 80
COPY index.html /usr/share/httpd/noindex/index.html CMD ["/usr/sbin/httpd","-D","FOREGROUND"]
2)构建镜像
[root@docker apache]# docker build -t apache :v1 .
看到 successfully 即安装成功。
3)验证
[root@docker apache] docker run -itd -p 345:80 apache:v1 [root@docker apache] docker ps
通过访问宿主机 ip 端口,查看 true,防火墙关闭。
3、dockerfile 案例 2
1)用 dockerfile 创建并启动一个 centos7 的 nginx 镜像。
FROM centos:7 RUNrpm-Uvhhttp://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el 7.ngx.noarch.rpm
RUN yum -y install nginx
EXPOSE 80
CMD ["nginx","-g","daemon off;"]
2)创建
[root@docker nginx]#docker bulid -t nginx:v1 .
3)创建容器
[root@dockernginx]# docker run -itd -p 456:80
4)验证
通过访问宿主机的 ip+端口,查看 nginx,防火墙关闭。
数字科技赋能产业链!这场论坛共绘供应链科技生态未来齐鲁网闪电新闻12月14日讯近日,中国物流与采购联合会主办浪潮爱购云链承办的供应链科技高峰论坛成功举办,本次活动主题为科技融入双循环,数字构建新生态,就数字科技赋能产业链各行业的优
空中畅流守护人交通强市向未来12月5日,一批重达2207公斤的货物在深圳机场搭乘航班前往美国洛杉矶。当天22时14分,货物完成提前报关的工作,仅在6小时26分之后就被装上飞机,与此前流程相比,节省至少一半时间
长沙未来商业发展看这里!15大商圈9大商务中心!近日,长沙市商业和商务用地布局专项规划(20212035)批后公布。规划范围规划范围为长沙市六区一县,规划期限为20212035年。规划对象商业用地包括零售商业用地(B11)餐饮用
钱进球场球场争锋棒球1号位动画钱进球场改编自森高夕次原作足立刑事著同名体育漫画,于2017年3月宣布动画化,由STUDIODEEN负责动画制作,于2018年4月6日起播出。动画第二期于2018年10月5日开
抢占县城退烧药引争议,如何不让居民为药发愁?最近,随着疫情防控措施优化,不少人都开始自备退烧止痛类药物。有网友称,部分城市相关药品出现缺货情况。在一些社交平台上,有用户开始发布异地网购药品攻略,引发网友热议。图片来源相关社交
等你提意见!湖北景区预约入园wifi覆盖将有大变化景区是否有网络wifi?景区能否网上预约一码入园?景区是否提供一键救援服务?不少网友在武汉城市留言板上建议景区更加科技化近日,湖北省文化和旅游厅官网就智慧景区建设评价规范在线征集网
这个常见病育龄妇女需警惕!深圳39岁女子因它备孕7年无果对于很多人来说,孩子是一份人生的礼物,有了孩子之后,人生仿佛有了软肋,也有了盔甲。然而,对于一部分女性来说,孩子却成了她们触不可及的一个美好愿望,想要却不能是每一个想生育而不得的女
异地网购抢占县城退烧药冲上热搜!律师高价倒卖需担责近日,由于不少人囤退烧药,布洛芬缓释胶囊等变得紧俏,很多商铺显示目前无货的状态,有的直接开启了预售模式,有的送达时间排到了明年一月。但在社交媒体上,出现了一批异地网购药品攻略的文章
众专家给独立储能发展支招与会专家认为,短期内,储能可平抑电力不平衡,长期看,储能可平抑能量不平衡。要实现我国储能产业的大规模发展,除了技术要不断进步外,还需要完善政策机制,加速构建电力市场等。新能源空间和
点亮芜湖第一盏电灯的吴兴周胡成业第1255期前世不修,生在徽州,十三四岁,往外一丢。吴兴周就是往外一丢的一个徽州绩溪人。皖南重镇,芜湖鸠江,电力照明,唯是兴周。吴兴周就是照亮芜湖不夜天的第一个徽州绩溪人。吴
如何用机器人改变生活?上海市中小学机器人竞赛寻找解决方法请设计制作一台自动控制运行的智能末端配送小车,解决最后一公里的快递配送服务整个派送过程中,小车需通过车载传感系统感知道路环境,躲避障碍与行人,遵守红绿灯等交通规则,自动规划行车路线
这个奶奶的气质竟然让网友盼着白发做到这3点,女人越老越优雅我们经常会认为,年龄是女人最大的敌人,可是在生活中我们也遇到过一些大龄女性,她们虽然头发花白,却优雅得体,眼里没有沧桑感,只有见识和故事,她们的存在让我们不再惧怕变老。下图这位奶奶
语雀的源起定位与世界观本期播客我们关注的产品是语雀,邀请到的嘉宾是语雀的总负责人玉伯和产品负责人镜同。语雀是蚂蚁集团旗下一款想做下一代文档和知识库的产品,我跟语雀的两位话事人聊了语雀的发展来由产品定位和
上海合作组织副秘书长上合组织将继续加强信息和通信技术领域合作国际在线消息11月9日至11日,2022年世界互联网大会乌镇峰会在浙江乌镇举行。上海合作组织副秘书长格力高力谢苗诺维奇洛格维诺夫以线上方式参加网络传播与和平发展论坛并发表致辞。格力
不是说母乳是最好的食物吗?咋还给孩子喂贫血了呢?来源新乡日报医生,我家宝宝上个星期感冒咳嗽才刚好,这几天又开始拉肚子了。从出生以来,三天两头不是咳嗽,就是发烧,要不就是拉肚子,真是愁死我了。李女士带着刚满1岁的宝宝来到新乡医学院
再说一种技术形态涨停,回落,拉升再回落第一眼看到这个图形我就想到了双层药业,形态很像,大家都知道双层药业是个妖股,我也是第一天涨的时候错过了,拍断大腿的感觉,犹豫了一下,高了,错过了大肉这个票前天开始关注,尾盘拉高了没
保持本心,追求品质启航P13随着社会的不断发展,现在的手机不仅仅是一个娱乐工具,还是一个生活必要的工具,因为在日常的生活中,我们经常需要用手机进行工作。同时有很多的工作者出差工作,这就需要手机具有超强的续航能
芙蓉国评论丨共建共享网络空间发展红利章松佳2022年世界互联网大会乌镇峰会11月9日在浙江乌镇开幕,来自120余个国家和地区的2100余位代表,以线下或线上形式,共同围绕共建网络世界共创数字未来携手构建网络空间命运共
内卷时代养育孩子,必备财商教育现在很多家长都明白从小开发孩子的智商,教孩子处理人际关系的情商,但很少有家长会注意到孩子的财商教育。那什么是财商呢?财商是指一个人认识金钱与驾驭金钱的能力,通俗点讲就是一个人与财富
A股市场个股利好消息,2022年11月10日一丶中标或签约项目(一)瀚川智能与深圳埃克森新能源公司签订战略合作协议,埃克森拟计划向公司实质性下达不少于首批3GWh的锂电池相关设备采购订单,并在后续的50GWh投资中,在满足技
5部门印发个人养老金2项文件,6个好消息!事关参保和领钱11月财经新势力为了扩大中国养老基金规模,提高退休人员的收入,今年4月份国家正式出台了关于推动个人养老金发展的意见,时隔不到8个月,人社部财政部国家税务总局银保监会证监会等5部门在
(体育中超)综合消息武汉三镇胜北京国安领跑积分榜新华社上海11月8日电(记者许东远)2022赛季中超联赛8日进行了第24轮的六场比赛。北京国安队02不敌武汉三镇队,此役后武汉三镇队积分追平山东泰山队,依靠净胜球优势领跑积分榜。武