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

37次8.27(docker03)

1.使用dockerfile创建应用镜像

在Docker file中定义所需要执⾏的指令,使⽤ docker build创建

镜 像,过程中会按照dockerfile所定义的内容进⾏打开临时性容

器,把 docker file中命令全部执⾏完成,就得到了⼀个容器应⽤镜

像,每⼀⾏命令都会出现容器,都会使⽤docker commit进⾏提

交⼀个临时性的镜像 。

注意执⾏的命令越多,镜像体积越⼤,所以需要优化镜像

Docker file关键字

1.FORM 指定基础镜像为该镜像的最后修改版本

2.FROM < images:tag> >指定基础镜像为该镜像的⼀个tag版本

3.MAINTAINER 指定镜像创建者,企业内部不⽤指定,对外发

布也可以不指定 3.RUN 运⾏命令,安装软件

4.CMD 设置container启动时进⾏的操作,如果容器镜像中有这

个命名,启动容器时,不要⼿动让容器执⾏其他命令

5.ENTRYPORINT(⼊⼝点)cmd每次只能执⾏⼀个指令,

entrypoint可以多⾏执⾏。

6.USER设置容器进程的⼀些⽤户 7.EXPOSE 暴露端⼝ 指定容器需

要映射到宿主机的端⼝

8.ENV 设置环境变量 -e

9.ADD 从宿主机src复制⽂件到容器的dest路径

10.volumn 指定挂载点

11.WROKDIR 切换⽬录

12.ONBUILD在⼦镜像中执⾏指令

2.dockerfile应用

通过dockerfile创建⼀个在启动容器时,就可以启动httpd服务的

镜像 。

# 1.创建⽬录
mkdir test
​
# 2.跳转到⽬录中
cd test/# 3.编辑启动脚本
vim abc.sh
cat abc.sh
#!/bin/bah
rm -rf /run/httpd/*
exec /sbin/httpd -D FOREGROUND
​
# 4.编辑index.html⽂件
echo "httpd server is running" > index.html
​
# 5.编辑Dockerfile
vim Dockerfile
FROM    centos:latest
MAINTAINER      "centos httpd server"
RUN     rm -rf /etc/yum.repos.d/*
RUN     curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
RUN     yum clean all && yum makecache
RUN     yum -y install epel-release
RUN     yum -y install httpd
ADD     abc.sh  /abc.sh
ADD     index.html /var/www/html/index.html
RUn     chmod -v -x /abc.sh
CMD     ["/bin/bash","/abc.sh"]
​
# 6.创建镜像
docker build -t centos:httpd .
​
# 7.查看镜像[root@docker001 test]# docker image lsREPOSITORY   TAG       IMAGE ID       CREATED     SIZE
centos       httpd     a488bc9f4cfb   About a 
minute ago   352MB
​
# 9.创建容器测试
[root@docker001 test]#docker run -d --name c0 centos:httpd
[root@docker001 test]# docker ps --allCONTAINER ID   IMAGE          COMMAND             CREATED          STATUS          PORTS     
NAMESc245d9f9f3e0   centos:httpd   "/bin/bash 
/start.sh"   21 seconds ago   Up 20 seconds   
80/tcp    c0
​
# 10.查看ip地址
[root@docker001 test]# docker inspect c0
​
# 访问测试
curl 172.17.0.2

测试挂载其他项⽬

[root@docker001 test]# docker run -d -v 
/opt:/var/www/html --name c1 centos:httpd 
​
[root@docker001 test]# echo "yjj" > /opt/index.html
​
[root@docker001 test]# curl 172.17.0.3
​
yum -y install yum-plugin-ovl
​

3.容器镜像在dockerhost中的保存位置

docker infoServer:Containers: 2  #容器数量Running: 2  #正在运⾏的容器Paused: 0Stopped: 0Images: 3Server Version: 26.1.4Storage Driver: overlay2   # 存储驱动

tree -L 2 /var/lib/docker/ /var/lib/docker/

查看系统内核

uname -r

查看⽂件系统

df -i

新建⼀个⽂件之后 可⽤的节点减少⼀个

touch 123.txt
df -i

创建软连接之后,节点减少⼀个

ln -s 123.txt 123.lk 
df -i

在启动docker服务后会新建/var/lib/docker

[root@docker001 ~]# systemctl start docker.service 
[root@docker001 ~]# ls /var/lib/docker
buildkit  containers  engine-id  image  network  
overlay2  plugins  runtimes  swarm  tmp  volumes
[root@docker001 ~]# ls /var/lib/docker/overlay2/
backingFsBlockDev  

拉取⼀个新镜像之后,就会在overlay2⽂件夹中保存新的⽂件

[root@docker001 ~]# docker pull centos
[root@docker001 ~]# ls /var/lib/docker/overlay2/
backingFsBlockDev  

查看⽂件保存位置

[root@docker001 
ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98
beb4512d932c34]# ls
[root@docker001 
ce54a04e45edb448429f2f7adb8a8a1d23379e300f8e7c1a98
beb4512d932c34]# ls diff/

创建容器后出现2个新的⽂件夹

[root@docker001 ~]# docker run -it --name c0 
centos:latest /bin/bash
[root@docker001 ~]# ls /var/lib/docker/overlay2/
backingFsBlockDev

查看容器⽬录

[root@docker001 ~]# cd 
/var/lib/docker/overlay2/e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb]# ls[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
fe4d9094f7b7eb]# cat lower 
​
fe4d9094f7b7eb]# ls merged/
​

查看容器⽬录

[root@docker001 ~]# cd 
/var/lib/docker/overlay2/e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb]# ls
​
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb]# cat lower [root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
fe4d9094f7b7eb]# ls merged/

在外⾯使⽤exec创建⼀个⽂件

docker exec 4c7f dd
ls /var/lib/docker/overlay2/e291e027242e013f682fe631b
83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb/merged/

容器保存镜像和数据

查看容器挂载

容器被移除以后,这个⽂件就会被删除,stop不会删除

ls /var/lib/docker/overlay2/
docker stop c0
ls /var/lib/docker/overlay2/
docker rm c0
ls /var/lib/docker/overlay2/

4.私有仓库

创建私有仓库,在企业中分享项⽬

# 安装仓库镜像
docker pull registry
​
#查看新安装的镜像
docker images
​
# 创建挂载的⽬录
mkdir /opt/dockeregistry
​
# 创建容器,映射端⼝,挂载⽂件
docker run -d --name c1 p5000:5000 -v /opt/dockeregistry/:/var/lib/registry registry:latest 
docker ps
​
# 访问⽬录⻚
curl http://10.1.1.50:5000/v2/_catalog{"repositories":[]}# 创建仓库
vim /etc/docker/daemon.json 
{"insecure-registries":["http://10.1.1.50:5000"   ],"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"]}
# 重启docker服务
systemctl restart docker
​
# 查看镜像
​
# 为要上传的镜像添加标记
docker tag centos:latest 10.1.1.50:5000/centos:v0
docker images
​
docker push 10.1.1.50:5000/centos:v0

1.拉取registry

docker pull registry

2.创建挂载⽬录

mkdir /regist

3.启动容器,映射端⼝,挂载⽬录

docker run -d --name c0 -v 
/regist/:/var/lib/rigistry/ -p5000:5000 
registry:latest

4.访问仓库

curl http://192.168.71.50:5000/v2/_catelog

5.配置pull和push,修改daemon.json

vim /etc/docker/daemon.json{.....,"insecure-registries":["http://192.168.71.50:5000"]}

6.修改了配置⽂件,重启docker服务

systemctl restart docker

7.启动registry容器

 docker start r1curl localhost:5000/v2/_catalog

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Linux下编译安装PETSc
  • 【生命之树】
  • GLM大模型 - CogVideoX:5B 开源,2B 转为 Apache 协议
  • nginx实验
  • C++ 多线程(互斥锁、条件变量)
  • SQL server 2008 获取当前年,季度 和月的最后一天
  • 游戏开发设计模式之装饰模式
  • Java新版主要特性|2024年最后一个版本即将到来
  • DataWhale AI夏令营 2024大运河杯-数据开发应用创新赛-task2
  • 源代码防泄露迎来信创时代:信创沙箱
  • 数据分析之Python对数据分组排序
  • TESSY创建单元测试或集成测试工程
  • 基于NNG的六种通信模式
  • 【运维类】信息化项目运维方案(word)
  • day44——C++对C的扩充
  • SegmentFault for Android 3.0 发布
  • E-HPC支持多队列管理和自动伸缩
  • happypack两次报错的问题
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • PermissionScope Swift4 兼容问题
  • 简单数学运算程序(不定期更新)
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前端每日实战 2018 年 7 月份项目汇总(共 29 个项目)
  • 前端设计模式
  • 试着探索高并发下的系统架构面貌
  • 找一份好的前端工作,起点很重要
  • 自动记录MySQL慢查询快照脚本
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • # Redis 入门到精通(七)-- redis 删除策略
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (11)工业界推荐系统-小红书推荐场景及内部实践【粗排三塔模型】
  • (第30天)二叉树阶段总结
  • (九)c52学习之旅-定时器
  • (四)JPA - JQPL 实现增删改查
  • (四)库存超卖案例实战——优化redis分布式锁
  • (五)c52学习之旅-静态数码管
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)JAVA中的堆栈
  • (转)可以带来幸福的一本书
  • .Net MVC + EF搭建学生管理系统
  • .NET WPF 抖动动画
  • .Net的C#语言取月份数值对应的MonthName值
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @SentinelResource详解
  • @WebService和@WebMethod注解的用法
  • @拔赤:Web前端开发十日谈
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [20181219]script使用小技巧.txt
  • [2023-年度总结]凡是过往,皆为序章
  • [ACM独立出版]2024年虚拟现实、图像和信号处理国际学术会议(ICVISP 2024)
  • [Angularjs]ng-select和ng-options
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [BZOJ 1040] 骑士