当前位置: 首页 > 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

http://www.mrgr.cn/news/13948.html

相关文章:

  • 数学建模~~~预测方法--决策树模型
  • python库pdf转word
  • 【C语言篇】
  • (每日一问)计算机网络:GET请求和POST请求的区别
  • CSS3【待总结学习】
  • 海洋生物材料及其衍生物在3D生物打印中的用处
  • 【区块链 + 司法存证】链节区块链数字卷宗管理系统 | FISCO BCOS应用案例
  • sqlserver数据库常见操作
  • 机器学习——贝叶斯分类器
  • 8款常见的自动化测试开源框架
  • 【解析几何笔记】9. 向量的内积运算
  • 华为OD机试-TLV解码(JavaPythonC++)100%通过率,最新E卷题目
  • Pictory AI——博客、文章等内容转换为视频,自动适配动态画面和字幕
  • Mysql剖析(三)----MySql的事务详解
  • java图片转pdf
  • 新书推荐:《分布式商业生态战略:数字商业新逻辑与企业数字化转型新策略》
  • Gartner发布SBOM软件物料清单创新洞察:SBOM的三种标准、五个应用场景及实施成功的四个关键
  • Spring Boot(八十七):集成opencc4j实现中文简繁转换
  • 富格林:警觉欺诈保证交易安全
  • 【高等代数笔记】(8-13)N阶行列式