37次8.27(docker03)

news2024/12/29 14:45:50

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.coloradmin.cn/o/2082224.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV4深度神经网络DNN实战教程

OpenCV4深度神经网络DNN实战教程 1-概述与环境配置2-卷积神经网络概述3-加载网络模型与设置3.1 所需的模型下载3.2 所使用的模型&#xff08;googlenet&#xff09;3.3 Net介绍3.4 代码输出网络结构信息3.5 计算后台设置3.6 所有代码 4-图像分类网络inception的使用5-读取分类标…

计算机毕业设计选题推荐-医疗就诊平台-在线医疗问诊系统-Java/Python项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

HTTP 状态码:解析与处理的全面指南

一、HTTP 状态码概述 HTTP 状态码&#xff08;HTTP Status Code&#xff09;是用以表示网页服务器 HTTP 响应状态的 3 位数字代码。它在客户端与服务器之间的通信中起着至关重要的作用。 其主要作用在于向客户端清晰准确地传达服务器对请求的处理结果。例如&#xff0c;当客户…

3种明星代言推广绝招,快速提升品牌曝光!

品牌曝光是现代商业发展中非常重要的一环&#xff0c;而明星代言则是提高品牌曝光的有效手段之一。本文将介绍三种科学有效的明星代言推广绝招&#xff0c;以帮助品牌快速提升曝光度。 1. 明星代言的概念 在现代娱乐圈中&#xff0c;明星代言成为了品牌推广的热门方式之一。明…

Zotero打开后所有文献及笔记都消失了

1 问题描述&#xff1a; 打开文献管理工具zotero之后&#xff0c;之前看过的所有文献都丢失了&#xff0c;还提示找不到路径&#xff0c;是否采用默认C盘的zotero数据目录 若点击了“使用新位置”&#xff0c;则打开的界面里也完全没有自己曾经看过的论文与笔记了。 如下图所示…

游戏开发设计模式之外观模式

目录 外观模式在游戏开发中的具体应用案例是什么&#xff1f; 如何在游戏引擎设计中实现外观模式以提高系统的可扩展性&#xff1f; 外观模式与其他设计模式&#xff08;如适配器模式、代理模式&#xff09;相比&#xff0c;有哪些独特的优势和潜在的局限性&#xff1f; 独…

string的模拟实现与深浅拷贝

在上一章中可以看见&#xff0c;string类函数的基本实现和用法&#xff0c;在本文。来用基础的语言来模拟实现string类&#xff0c;来了解一下他们的基础底层&#xff1b; 在VS中string&#xff0c;我们可以看见&#xff0c;实现VS的类成员很多&#xff0c;很麻烦&#xff1b; …

AI写作|AI底层方法论第三节-AI常用的格式(作用+案例)

本文背景: hello大家好我是大象&#xff0c;直接接上文&#xff0c;这一篇我们讲AI的常用格式&#xff0c;这一节也是基础课中非常重要的一个内容&#xff0c;有了正确的格式不仅能输出我们想要的文章内容&#xff08;按格式&#xff09;让AI清楚的知道,哪些是要求,哪些是任务。…

CSS系列之浮动清除clear(三)

一、为什么需要清除浮动 浮动的原理是让元素脱离文档流&#xff0c;直接浮在桌面上。使用浮动后续添加内容布局可能会产生布局混乱&#xff0c;造成高度坍塌&#xff0c;这时候就可以利用清除浮动来解决父元素高度塌陷的问题。 <!DOCTYPE html> <html lang"en&q…

K8S对接Ceph分布式存储

文章目录 一、Ceph理论知识1、Ceph简介2、Ceph分布式存储的优点3、Ceph核心组件 二、部署Ceph高可用集群1、服务器环境信息2、部署前环境准备工作3、部署Ceph监控服务Monitor4、激活Ceph存储服务OSD 三、K8S对接Ceph存储1、K8S对接Ceph RBD实现数据持久化2、基于Ceph RBD生成PV…

脚本加密解密

shell脚本是维护Linux系统的一个必不可少的工具&#xff0c;简单、便捷、可以执行强。 但是shell脚本内会存储一些隐私信息&#xff08;如系统账号、密码&#xff0c;应用程序账号、密码&#xff0c;IP&#xff0c;数据存放路径等等&#xff09;&#xff0c;以明文的形式存放&…

报表融合大屏,做不一样的财务分析!

冷冰冰的数据如何让人眼前一亮&#xff1f; 千篇一律的表格如何让数据可视化&#xff1f; ...... 赶快丢掉那些传统的表格工具吧&#xff01;&#xff01;&#xff01;现在我们都用更智能的工具来做报表了&#xff01; 财务报表是什么&#xff1f; 财务报表是企业财务状况、…

深度学习-OpenCV运用(1)

文章目录 一、OpenCV介绍二、OpenCV运用1.读取保存图片2.读取视频3.图像切片 一、OpenCV介绍 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一个开源的计算机视觉和机器学习软件库&#xff0c;它主要用于实时的图像处理和计算机视觉任务。虽然OpenCV本…

【STM32】FSMC

FSMC在正点原子的HAL课程中用法较为单一&#xff0c;就是用来模拟8080时序驱动LCD屏幕&#xff0c;其实就是利用FSMC读写LCD模块的SRAM。当然&#xff0c;这个我也没有买&#xff0c;只学习了理论。 大部分图片来源&#xff1a;正点原子HAL库课程 专栏目录&#xff1a;记录自己…

无线通信-WIFI通信

文章目录 1. 基础知识2. 工作模式3. AT指令4. 常用AT指令实例5. 连接原子云6. 使用usb转ttl模块测试ATK-MW8266D7. 使用STM32F103ZET6战舰开发板透传模式8. 使用STM32F103ZET6战舰板连接原子云 1. 基础知识 ATK-ESP-01 ATK-ESP-01模块支持标准的IEEE802.11b/g/n协议&#xff0c…

scriptlet failed, exit status 1

执行命令&#xff1a;rpm -evh percona-release-1.0-29.noarch 报错信息&#xff1a; mv: cannot stat ‘/etc/yum.repos.d/percona-telemetry-release.repo’: No such file or directory error: %preun(percona-release-1.0-29.noarch) scriptlet failed, exit status 1 …

面试必备!15个SSH服务器经典问题,助你轻松过关斩将!

SSH(Secure Shell)是Linux系统中最常用的远程管理工具之一&#xff0c;掌握它是每个运维工程师的必备技能。在面试中&#xff0c;关于SSH服务器的相关问题经常会被问到。本文将列出15个常见的SSH服务器面试题&#xff0c;并提供简要解答&#xff0c;帮助你在面试中脱颖而出。 什…

使用 Puppeteer 在 PHP 中解决 reCAPTCHA 以进行网页抓取

您是否在抓取数据时遇到 reCAPTCHA 障碍&#xff1f;我也遇到过。这些 CAPTCHA 挑战会将简单的抓取任务变成一大障碍。但别担心&#xff0c;我有一个解决方案可以帮助您轻松绕过这些障碍。 在本博文中&#xff0c;我将引导您使用 Puppeteer&#xff08;一个功能强大的 Node.js…

【Java设计模式】Bridge模式:在Java中解耦抽象与实现

文章目录 【Java设计模式】Bridge模式&#xff1a;在Java中解耦抽象与实现一、概述二、Bridge设计模式的别名三、Bridge设计模式的意图四、Bridge模式的详细解释及实际示例五、Java中Bridge模式的编程示例六、Bridge模式类图七、Java中何时使用Bridge模式八、Java中Bridge模式的…

如何使用ssm实现毕业生交流学习平台+vue

TOC ssm306毕业生交流学习平台vue 绪论 1.1 研究背景 现在大家正处于互联网加的时代&#xff0c;这个时代它就是一个信息内容无比丰富&#xff0c;信息处理与管理变得越加高效的网络化的时代&#xff0c;这个时代让大家的生活不仅变得更加地便利化&#xff0c;也让时间变得…