Dockerfile+私有仓库

使用Dockerfile创建应用镜像

在Docker file中定义所需要执⾏的指令,使⽤ docker build创建镜 像,过程中会按照dockerfile所定义的内容进⾏打开临时性容器,把docker file中命令全部执⾏完成,就得到了⼀个容器应⽤镜像,每⼀⾏命令都会出现容器,都会使⽤docker commit进⾏提交⼀个临时性的镜像
Docker file关键字
1.FORM 指定基础镜像为该镜像的最后修改版本
2.FROM <image :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在⼦镜像中执⾏指令

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

步骤:
1.创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
2.在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂件
3.使⽤docker build创建镜像
4.使⽤创建的镜像启动容器(验证)

[root@docker ~]# mkdir httpd0
[root@docker ~]# cd httpd0

编辑启动脚本:启动http服务 
[root@docker httpd0]# vim abc.sh

#!/bin/bash
rm -rf /run/httpd/*
exec /sbin/httpd -D FOREGROUND
[root@docker httpd0]# ls
abc.sh

编辑index.html文件:
[root@docker httpd0]# echo "httpd server is running" > index.html
[root@docker httpd0]# ls
abc.sh  index.html

编辑Dockerfile

[root@docker httpd0]#vim  Dockerfile

FROM    centos:latestMAINTAINER      "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.repoRUN     yum clean all && yum makecacheRUN     yum -y install epel-releaseRUN     yum -y install httpdADD     abc.sh  /abc.shADD     index.html /var/www/html/index.htmlRUN     chmod -v +x /abc.shCMD     ["/bin/bash","/abc.sh"]

创建镜像

[root@docker httpd0]# docker build -t  centos:httpd .

查看镜像

创建容器测试

[root@docker httpd0]#docker run -d --name c0 centos:httpd
e50856f7eee27e8aa8d9803ffd11f4b8f02c67bce489165f39f9251acf143f6b
[root@docker httpd0]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
e50856f7eee2   centos:httpd      "/bin/bash /abc.sh"       8 seconds ago   Up 7 seconds                                               c0

查看IP地址

[root@docker httpd0]#docker inspect c0

[root@docker httpd0]#curl 172.17.0.3
httpd server is running

通过Dockerfile创建yum镜像

在上述的配置(通过Dockerfile创建httpd镜像)中进行修改:

[root@docker httpd0]#vim  Dockerfile

FROM    centos:latestMAINTAINER      "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.repoRUN     yum clean all && yum makecacheRUN     yum -y install epel-release

[root@docker httpd0]# docker build -t  centos:yum .

[root@docker httpd0]# docker run -it --name c1 centos:yum /bin/bash 
crtl+p+q
[root@docker httpd0]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
e36a888b2a24   centos:yum        "/bin/bash"               29 seconds ago   Up 28 seconds                                               c1
e50856f7eee2   centos:httpd      "/bin/bash /abc.sh"       23 minutes ago   Up 23 minutes                                               c0

通过Dockerfile创建nginx镜像

利用已经存在的yum镜像来创建nginx镜像

[root@docker ~]#mkdir  002

[root@docker ~]#cd 002

[root@docker 002]# vim Dockerfile 

FROM    centos:yum
MAINTAINER      和平
RUN     yum -y install epel-release
RUN     yum -y install nginx
RUN     echo "daemon off;" >> /etc/nginx/nginx.conf
EXPOSE  80
CMD     /usr/sbin/nginx


[root@docker 002]#docker build -t centos:nginx .

[root@docker 002]# docker run -d --name c2 centos:nginx
f18c2b57f40f442726b1837d4c28f96dcb17c4c812ecfbac532d4ae2692fc98b
[root@docker 002]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS          PORTS                                       NAMES
f18c2b57f40f   centos:nginx      "/bin/sh -c /usr/sbi…"   12 seconds ago   Up 11 seconds   80/tcp                                      c2

 

私有仓库

1.安装仓库镜像

[root@docker ~]# docker pull registry
2.创建容器,映射端⼝,挂载⽂件
# 创建挂载目录
[root@docker ~]# mkdir /regist# 查看容器--全部删掉
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES# 创建容器,映射端⼝,挂载⽂件
[root@docker ~]# docker run -d --name r1 -v /regist/:/var/lib/registry -p5000:5000 registry:latest
4cd2b4d2c49fb4bdc6cf64aacea6c72a38f2c0eb3beccc6ed6845447b081a06f# 查看创建的容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   3 seconds ago   Up 2 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1# 访问目录页
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

3.浏览器访问:192.168.118.55:5000/v2/_catalog

4.配置pull和push,修改daemon.json文件

[root@docker ~]# vim /etc/docker/daemon.json{"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"],"insecure-registries":["http://192.168.118.55:5000"]
}

5.修改了daemon.json文件,重启服务

[root@docker ~]# systemctl restart docker.service

6.启动registry容器

# 查看容器
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED          STATUS                     PORTS     NAMES
4cd2b4d2c49f   registry:latest   "/entrypoint.sh /etc…"   10 minutes ago   Exited (2) 2 minutes ago             r1# 启动r1容器
[root@docker ~]# docker start r1
r1# 访问⽬录⻚
[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

7.给yum镜像打标签

# 为要上传的镜像添加标记
[root@docker ~]# docker tag centos:yum 192.168.118.55:5000/centos:yum
 
# 查看打标签的镜像
[root@docker ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED          SIZE
192.168.118.50:5000/centos   yum       ee9375ac855c   2 hours ago      272MB
centos                     yum       ee9375ac855c   2 hours ago      272MB
registry                   latest    cfb4d9904335   10 months ago    25.4MB

8.将打标签的镜像上传

[root@docker ~]# docker push 192.168.118.55:5000/centos:yum

9.在主机上进行访问

[root@docker ~]# curl localhost:5000/v2/_catalog
{"repositories":["centos"]}

10.浏览器访问:192.168.118.55:5000/v2/_catalog

11.查看regist文件

[root@docker ~]# ls /regist/
docker
[root@docker ~]# cd /regist/docker/
[root@docker docker]# ls
registry
[root@docker docker]# cd registry/
[root@docker registry]# ls
v2
[root@docker registry]# cd v2
[root@docker v2]# ls
blobs  repositories
[root@docker v2]# cd repositories/
[root@docker repositories]# ls
centos
[root@docker repositories]# cd centos/
[root@docker centos]# ls
_layers  _manifests  _uploads
[root@docker centos]# cd _layers/
[root@docker _layers]# ls
sha256
[root@docker _layers]# cd sha256/
[root@docker sha256]# ls
30902bbca4a1d948703fd88d834ddf4dc8db69bb7e787ff18a762b6b4761fe37
46aacd2dd64664a37b01ee3a9f37561ed9b34c5af6661b880ee07a15d5fe8fd6
5a3d9ba04912ac6b1353410a0f18cc206b4920888e3187443abacefe3c9086ab
a1d0c75327776413fa0db9ed3adcdbadedc95a662eb1d360dad82bb913f8a1d1
ca847d29e1079f24cfc92b68cf37d5866060814df67cbdcd83edb16f1dc4fe54
ee9375ac855c3a1f8ec3eb03cee9317c3127e4be47cb3d6f519d9e6921a6a044

测试:

在docker上上传镜像(192.168.118.55)

[root@docker ~]# systemctl start docker
[root@docker ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
192.168.118.55:5000/centos   yum       11c7f617cd4a   17 hours ago    272MB
centos                       yum       11c7f617cd4a   17 hours ago    272MB
[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED        STATUS                            PORTS                                       NAMES
3f0f62812f33   registry:latest   "/entrypoint.sh /etc…"   17 hours ago   Exited (255) About a minute ago   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1
[root@docker ~]# docker start r1
r1

[root@docker ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED        STATUS          PORTS                                       NAMES
3f0f62812f33   registry:latest   "/entrypoint.sh /etc…"   17 hours ago   Up 33 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1
 

[root@docker ~]# netstat -lnput | grep 5000
tcp        0      0 0.0.0.0:5000            0.0.0.0:*               LISTEN      1600/docker-proxy   
tcp6       0      0 :::5000                 :::*                    LISTEN      1604/docker-proxy   
 

新建一台docker机器,作为客户端来拉取刚在docker主机上上传的镜像

   12  sh docker.sh   //安装docker的脚本
   17  vim /etc/docker/daemon.json

   20  systemctl restart docker
   21  docker pull 192.168.118.55:5000/centos:yum
[root@docker1 ~]# docker images
REPOSITORY                   TAG       IMAGE ID       CREATED        SIZE
192.168.118.55:5000/centos   yum       11c7f617cd4a   18 hours ago   272MB

[root@docker1 ~]# docker run -d --name c5 192.168.118.55:5000/centos:yum
2fca882e6fbb4818f436b3b202b0cfab8ebffd5540f25fa6cba062b6db9f5ff9
[root@docker1 ~]# docker ps --all
CONTAINER ID   IMAGE                            COMMAND       CREATED              STATUS                          PORTS     NAMES
2fca882e6fbb   192.168.118.55:5000/centos:yum   "/bin/bash"   About a minute ago   Exited (0) About a minute ago             c5

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/411124.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】

一、合并两个有序数组 题目比较简单&#xff0c;使用归并排序里面的同样的操作就可以&#xff0c;代码如下所示 #include <iostream> #include <vector> using namespace std;/* leetcode88题&#xff1a;合并两个有序数组 */ class Solution { public:void merge…

代码随想录训练营 Day41打卡 动态规划 part08 121. 买卖股票的最佳时机 122. 买卖股票的最佳时机II 123. 买卖股票的最佳时机III

代码随想录训练营 Day41打卡 动态规划 part08 一、力扣121. 买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计…

网络安全总结②

上一篇&#xff1a;网络安全总结① 下一篇&#xff1a; 传统防火墙 传统防火墙 技术&#xff1a;访问控制、代理技术、会话机制 工作层次&#xff1a;应用层一下 防御模式&#xff1a;通过防御设备划分边界&#xff0c;基于IP/端口和特征进行判断&#xff1b;以隔离为基础&am…

java Boss直聘爬虫数据分析

摘要 本报告利用Java和Selenium爬虫技术获取数据&#xff0c;并使用ECharts库对薪资数据进行可视化分析&#xff0c;旨在探究不同经验和学历的薪资分布情况。 数据来源 数据来源于Boss直聘&#xff0c;使用Java结合Selenium库进行数据抓取。 数据总数&#xff1a;约2000家企…

LeetCode --- 411周赛

题目列表 3258. 统计满足 K 约束的子字符串数量 I 3259. 超级饮料的最大强化能量 3260. 找出最大的 N 位 K 回文数 3261. 统计满足 K 约束的子字符串数量 II 一、统计满足K约束的子字符串数量I 这种要求满足区间内某种性质的题&#xff0c;一般都可以用滑动窗口来做。这题…

黄河:曾月入十几万,被裁后做独立开发,我每天必须要做的事就是写代码

这是《开发者说》的第16期&#xff0c;本期我们邀请的开发者是黄河&#xff0c;来自西北城市银川&#xff0c;半路转行为程序员&#xff0c;靠着自己对编程的热爱&#xff0c;一路坚持下来&#xff0c;虽地处偏远&#xff0c;正是得益于互联网的好处&#xff0c;让全球每一个角…

畅捷通CRM newleadset.php SQL注入漏洞复现

0x01 产品简介 用友畅捷通CRM是面向小企业全力打造的简单、实用的客户关系管理应用。帮助企业用好自己的客户资源、管好商机跟进过程、引导好业务员跟单行为,促进团队销售能力的提升;通过查询和分析,识别企业的价值客户,融合电话、短信、邮件等工具,实现精准营销;帮助企…

网络安全之渗透测试实战-DC-3-靶机入侵

一、下载靶机DC-3&#xff0c;解压后导入Vmware Workstation https://pan.baidu.com/s/17BcSH6RqC7wuyB7PRNqOow?pwdkc12启动DC-3靶机&#xff0c;由于不知道密码&#xff0c;无需登录 二、靶机的网卡采用的是NAT模式自动获取IP地址&#xff0c;此时我们需要先获取其MAC地址…

Qt:鼠标事件

虽然Qt是跨平台的c开发框架&#xff0c;但是Qt的很多能力是系统提供的&#xff0c;只是其封装了系统的API&#xff0c;例如在Linux环境下的Qt就封装了Linux的一堆API 系统API 事件&#xff1a;图形化界面中&#xff0c;用户操作和程序之间交互的机制&#xff08;封装了系统的事…

机器学习:DBSCAN算法(内有精彩动图)

目录 前言 一、DBSCAN算法 1.动图展示&#xff08;图片转载自网络&#xff09; 2.步骤详解 3.参数配置 二、代码实现 1.完整代码 2.代码详解 1.导入数据 2.通过循环确定参数最佳值 总结 前言 DBSCAN&#xff08;Density-Based Spatial Clustering of Applications w…

探索数据结构:图(三)之最短路径算法

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;数据结构与算法 贝蒂的主页&#xff1a;Betty’s blog 1. 最短路径算法 最短路径问题可分为单源最短路径和多源最短路径。其指…

《机器学习》 SVM支持向量机 推导、参数解析、可视化实现

目录 一、SVM支持向量机 1、什么是SVM 例如&#xff1a; 2、SVM的主要特点是&#xff1a; 二、SVM方程 1、超平面方程 2、标签问题 3、决策函数&#xff1a; 符号函数&#xff1a; 整合&#xff1a; 4、距离问题 1&#xff09;点到直线距离 2&#xff09;点到平面…

航空公司名字趣史:看看有趣又有意义的命名背后有什么玄机

上周“东海航空”事件引发了东方航空在社交媒体上的一系列被迫营业&#xff0c;因为媒体的乌龙报道误将“东海航空”简称为“东航”&#xff0c;甚至直接用错了图片。众号&#xff1a;标猿公司起名 给公司起个好名字 其实除了大部分以地域、国家命名的航空公司&#xff0c;还…

Android Auto推出全新Google助手设计

智能手机与汽车的无缝整合已成为现代驾驶的重要组成部分&#xff0c;而 Android Auto 一直在这一领域处于领先地位。谷歌通过不断推出新功能和更新&#xff0c;体现了其致力于提升 Android Auto 体验的决心。最近&#xff0c;Android Auto 引入了 Google助手的全新设计。 当系…

【Qt】多元素控件QTreeWidget

多元素控件QTreeWidget 使用QTreeWidget表示一个树型结构&#xff0c;里面的每一个元素都是QTreeWidgetItem&#xff0c;每个QTreeWidgetItem可以包含多个文本和图标&#xff0c;每个文本/图标表示一列。 可以给QTreeWidget设置顶层结构&#xff08;顶层节点可以有多个&#…

redis面试(二十二)读锁释放

假设现在已经有各种锁的重入什么的&#xff0c;那如何释放锁&#xff1f; 读锁读锁 假如说&#xff0c;同一个线程多次加读锁&#xff0c;或者不同的线程加了多个读锁 当前的锁结构长这样 anyLock: { “mode”: “read”, “UUID_01:threadId_01”: 2, “UUID_02:threadId_02…

去雾去雨算法

简单版 import cv2 import numpy as npdef dehaze(image):"""简单去雾算法&#xff0c;使用直方图均衡化来增强图像"""# 将图像转换为YUV颜色空间yuv_image cv2.cvtColor(image, cv2.COLOR_BGR2YUV)# 对Y通道&#xff08;亮度&#xff09;进行…

数据结构——队的基本操作

一、顺序队 队的用法&#xff1a;先进先出 跟平时我们遇到的大多情况一样&#xff0c;队的主要思想就是先进先出&#xff0c;比如我去食堂打饭&#xff0c;我先排那么就是我先打到饭咯 顺序队&#xff1a;其实说白了就是一块空间用两个指针去指向&#xff0c;为了实现先进先…

C语言指针重学

学习要纲:建议掌握 gdb调试(b ,d ,fin ,bt ,print ,awatch ,up ,down ,set pretty等) SourceInsight软件看代码(全局搜索 文件搜索等) git如何调取分支合并(git branch,git blame,git log,git pull,git reset --hard等) 等内容,下面是对于指针的一个重新学习. C语言的指针&…

AI工具 GPT 学术优化 (GPT Academic) 安装实践

GPT 学术优化 (GPT Academic)是一个综合的AI GPT工具包&#xff0c;可以完成各种gpt辅助的工作&#xff0c;比如代码解读、翻译、读论文等功能。官网&#xff1a;GitHub - binary-husky/gpt_academic: 为GPT/GLM等LLM大语言模型提供实用化交互接口&#xff0c;特别优化论文阅读…