37次8.27(docker03)

2024-08-28 23:12
文章标签 37 docker03 8.27

本文主要是介绍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

这篇关于37次8.27(docker03)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1116159

相关文章

NYOJ 37 回文字符串(记忆化搜索)

OJ题目 : 戳这里~~ 描述 所谓回文字符串,就是一个字符串,从左到右读和从右到左读是完全一样的,比如"aba"。当然,我们给你的问题不会再简单到判断一个字符串是不是回文字符串。现在要求你,给你一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。 输入 第一行给出整数N(0<N<100) 接下来的N行,每行一个字符串,每个字符串长度不超过1000.

数据库系统 第37节 数据库快照

数据库快照是一种用于数据保护和恢复的技术,它可以创建数据库在某一特定时间点的完整副本,而不需要停止数据库服务。这种技术对于数据备份、灾难恢复、报告生成和分析等场景非常有用。数据库快照通常可以分为两种类型:行级快照和页级快照。 行级快照: 行级快照在数据库中为每一行数据维护一个版本历史记录。这意味着,当数据被修改时,旧版本的数据不会被立即删除,而是保留在数据库中,直到快照不再需要。这种快照方式允

LeetCode - 37. Sudoku Solver

37. Sudoku Solver  Problem's Link  ---------------------------------------------------------------------------- Mean:  求解数独. analyse: 只是9宫格的数独,而且测试数据都不难,所以可以直接使用递归求解,类似于N-Queue问题. 但如果宫格

leetcode解题思路分析(六)37-42题

解数独 编写一个程序,通过已填充的空格来解决数独问题。 本题主要是采取回溯法解决,选择最少空位的行、列、块,然后进行填入,如果出现问题则回溯 class Solution {public:// line, column, block 分别存储每行、每列、每宫中可用的数字vector<set<int>> line, column, block;//哈希更新每行/列/宫中可以使用的数字void

Java37: 数据库(Oracle)

DB2 Oracle Infomix MySQL Sybase SQLServer 1 什么是数据库     数据需要持久保存     (磁盘文件)  数据库(数据库管理系统)是个软件     安全,可靠,高效    数据库服务器,数据中心  关系型数据库     用表来存储数据的数据库  SQL 通用的关系型数据库的操作语言  不同数据库之间SQL有一定的差异  NoSQL Not o

传输大咖37 | 教育培训行业文件传输难题及解决方案

教育培训行业在文件传输过程中面临着一系列挑战,这些挑战不仅影响了工作效率,也对数据安全构成了潜在威胁。本文将探讨教育培训行业在文件传输方面的痛点,并提出镭速传输系统作为解决方案。 教育培训行业文件传输的痛点 信息孤岛问题:教育机构内部不同部门或校区间信息共享困难,导致资源无法有效利用。 数据安全风险:存储有大量敏感数据,如学生个人信息、成绩等,一旦泄露后果严重。 法规遵从性:需严格

课程37:Docker持久化部署(数据库、日志、配置文件)

🚀前言 本文是《.Net Core从零学习搭建权限管理系统》教程专栏的课程(点击链接,跳转到专栏主页,欢迎订阅,持续更新…) 专栏介绍:以实战为线索,基于.Net 7 + REST + Vue、前后端分离,不依赖任何第三方框架,从零一步一步讲解权限管理系统搭建。 专栏适用于人群:Web后端开发人员 本课程内容: 1、Docker持久化问题 2、VOLUME持久化:Web、Mysql

8.27FLEX,BISON

RC ParseStage::handle_request(SQLStageEvent *sql_event) 这个意思是返回类型是RC,然后用到的函数来自 ParseStage,::就是用来标识作用域的,函数名是handle_request,是ParseStage里的函数 FLEX BISON

Rikka with string BC#37

Rikka with string Accepts: 395 Submissions: 2281 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) 问题描述 众所周知,萌萌哒六花不擅长数学,所以勇太给了她一些数学问题做练习,其中有一道是这样的: 有一天勇太得

LeetCode 热题100-37 二叉树的最大深度

二叉树的最大深度 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root = [3,9,20,null,null,15,7]输出:3 示例 2: 输入:root = [1,null,2]输出:2 提示: 树中节点的数量在 [0, 104] 区间内。-100 <= Node.v