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

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 ls
 REPOSITORY   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 --all
 CONTAINER ID   IMAGE          COMMAND             
    CREATED          STATUS          PORTS     
NAMES
 c245d9f9f3e0   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 info
        Server:
        Containers: 2  #容器数量
        Running: 2  #正在运⾏的容器
         Paused: 0
         Stopped: 0
         Images: 3
         Server Version: 26.1.4
         Storage 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/e291e027242e013f682fe631b
 83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb
 
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
 fe4d9094f7b7eb]# ls
 
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
fe4d9094f7b7eb]# cat lower 
​
fe4d9094f7b7eb]# ls merged/
​

查看容器⽬录

[root@docker001 ~]# cd 
/var/lib/docker/overlay2/e291e027242e013f682fe631b
 83e89a90f9ba68fa1af92fda2fe4d9094f7b7eb
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
 fe4d9094f7b7eb]# ls
​
[root@docker001 
e291e027242e013f682fe631b83e89a90f9ba68fa1af92fda2
 fe4d9094f7b7eb]# 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 r1
 
 curl localhost:5000/v2/_catalog

http://www.kler.cn/a/286392.html

相关文章:

  • C++ 堆栈分配的区别
  • Attention--人工智能领域的核心技术
  • (笔记+作业)书生大模型实战营春节卷王班---L0G2000 Python 基础知识
  • 【仓颉】仓颉编程语言Windows安装指南 配置环境变量 最简单解决中文乱码问题和其他解决方案大全
  • c#使用log4Net配置日志文件
  • OpenCV:形态学操作总结
  • 我的sql我做主!Mysql 的集群架构详解之组从复制、半同步模式、MGR、Mysql路由和MHA管理集群组
  • QPS提升10倍怎么设计-JAVA后端经常用到的技术
  • tomcat 调优
  • Python爬虫案例五:将获取到的文本生成词云图
  • WT2605C蓝牙语音芯片:引领糖尿病管理智能化,优化血糖仪音频与蓝牙传输方案
  • VSCode手动创建SpringBoot项目的方法,及详细步骤
  • Docker通信全视角:原理、实践与技术洞察
  • 作业0828
  • 【C/C++】C++程序设计基础(输入输出、数据类型、动态内存、函数重载、内联函数、常量、引用)
  • Salt Function Flow:深度研发经验的沉淀,打造轻量级高效流程编排框架
  • 【Python报错已解决】“ModuleNotFoundError: No module named ‘timm‘”
  • 【Verilog 数字系统设计教程】Verilog 基础:硬件描述语言入门指南
  • STM32F1+HAL库+FreeTOTS学习8——第一个任务,启动!
  • 交换机自动化巡检(H3C)
  • 磐石云AXB小号平台同时支持AXYB、AXN、AXYBN
  • C++ 累加天数(牛客网)
  • MySQL5.7.36之主从复制过滤复制-centos7
  • 常用Numpy操作(笔记整理)
  • JavaScript ES6+ 新特性
  • 惠中科技 PV-Wiper 全自动光伏系统:引领光伏清洁新时代