Dockerfile+私有仓库

news2024/11/13 9:00:27

使用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: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"]

创建镜像

[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: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

[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

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

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

相关文章

PHP-开发工具下载-配置-使用

.1.下载 使用各种人工智能工具推荐的php免费开发工具。 文心一言推荐的工具 讯飞星火的回答 kimi的回答 根据自己的了解&#xff0c;最终选择vscode这款开发工具。 .2.配置 文心一言的回答 讯飞星火的回答 kimi的回答 最终选择使用PHP Debug 插件来支持。 安装中文插件。 …

NASA数据集:MetOp-A ASCAT 第 2 级海洋表面风矢量,针对沿岸海洋进行了优化

MetOp-A ASCAT Level 2 Ocean Surface Wind Vectors Optimized for Coastal Ocean 简介 该数据集包含 MetOp-A 上的高级散射计&#xff08;ASCAT&#xff09;以 12.5 公里采样分辨率&#xff08;注&#xff1a;有效分辨率为 25 公里&#xff09;进行的近实时 2 级沿岸海面风矢…

实战OpenCV之图像的数学运算

基础入门 在OpenCV中&#xff0c;图像的数学运算是一种基本而强大的工具&#xff0c;可以用于多种图像处理任务&#xff0c;包括&#xff1a;图像增强、图像融合、特征提取等。这些运算包括加法、减法、乘法和除法等基本的数学操作。 加法运算&#xff1a;可以用来合并两个图像…

【JS】卢小姐排队问题(100) |思路参考+代码解析(C++)

题目 LYA 的班级要进行一次班级活动&#xff0c;全班同学按照学号从小到大排成一列。但是卢小姐来晚了&#xff0c;没有来得及排队。现在卢小姐想知道&#xff0c;她应该插入到队列的哪个位置&#xff0c;才能保证队列仍然是按照学号从小到大排列的。请你帮助卢小姐找到她应该…

微服务框架之Kitex

Kitex: 高性能的 Golang 微服务框架 Kitex 是由字节跳动&#xff08;ByteDance&#xff09;开发并开源的一款高性能微服务框架&#xff0c;专为构建分布式系统和微服务架构设计。Kitex 基于 Golang&#xff0c;旨在提供一个简单、高效、灵活的开发体验&#xff0c;帮助开发者快…

ST表(区间查询

解决的问题&#xff1a; 数组区间查询最大值和最小值对于解决数组的树状数组的区间修改 ------- 线段树倍增思想 核心代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N1e5; int num[N]; int f[N][N]; int main(){int n;cin>>n;//输入默…

无线通信频率分配

首先看看无线电信号的频谱如何划分&#xff1a; 一、5G NR 3GPP已指定5G NR 支持的频段列表&#xff0c;5G NR频谱范围可达100GHz&#xff0c;指定了两大频率范围&#xff1a; ① Frequency range 1 &#xff08;FR1&#xff09;&#xff1a;就是我们通常讲的6GHz以下频段 频率…

Lesson07---STL简介(了解)

1. 什么是STL 2. STL的版本 3. STL的六大组件 4. STL的重要性 5. 如何学习STL 6.STL的缺陷 1. 什么是STL STL(standard template libaray- 标准模板库 ) &#xff1a; 是 C 标准库的重要组成部分 &#xff0c;不仅是一个可复用的组件库&#xff0c;而且 是一个包罗数据结构与…

【网络】P2P打洞原理

本文首发于 ❄️慕雪的寒舍 1. 引入 如果你折腾过NAS或者BT下载等等玩意&#xff0c;可能听说过“P2P打洞”这一技术名词。简单来说&#xff0c;P2P打洞可以让我们直接在外网访问内网的设备&#xff0c;从而让没有公网IP的家庭设备也能获得“公网直连”的速度。 比如绿联、极…

【JAVA]DAY 2在网页中输出日期和时间,实时还是静止?

一、如何输出日期文本 使用document.write(Date()); 会在网页中输出当前的日期和时间。在 2024 年 8 月 28 日星期三执行这段代码&#xff0c;可能会输出类似 “Wed Aug 28 2024 [具体时间]” 这样的内容。 Date()是 JavaScript 中的一个内置对象&#xff0c;用于处理日期和…

【机器学习】数据预处理-特征工程与特征选择

目录 一、特征工程 二、数据变换 1.变换 2.归一化 三、数据清洗 1.异常数据 2.数据清洗 四、特征选择 1.Filter过滤法 2.Wrapper包裹法 ... 3.Embedded嵌入法 ... 五、降维算法 1.SVD 2.PCA 一、特征工程 特征工程就是从原始数据提取特征的过程&#xff0c;这些…

免费可商用插画素材网站

1、https://undraw.co/illustrations 2、https://iradesign.io/ 3、https://storyset.com/ 4、https://delesign.com/free-designs/graphics/

【Linux篇】三分钟速通Linux基础命令

目录 1. Linux的目录结构 1.1 Linux的目录结构 1.2 /在Linux系统中的表示 2. linux命令基础 2.1 什么是命令和命令行 2.2 Linux命令的通用格式 2.3 ls命令 2.3.1 ls命令的参数的作用&#xff1a; 2.3.2 ls命令的选项 2.3.3 命令的选项组合使用 2.4 cd切换工作目录 2…

宋志平《有效的经营者》首发 高质量经营与企业高质量发展读书分享会圆满举办

走遍人生繁华&#xff0c;醉美江南水乡。8月25日&#xff0c;“美好生活&#xff0c;书香中国”城市行第七站——杭州站&#xff0c;在杭州市兴耀科创城•杭州双碳技术产业园圆满举办。本次活动以高质量经营与企业高质量发展读书分享会为主题&#xff0c;旨在深入推进全民阅读&…

Java基础(泛型)

文章目录 前言 一、泛型类的定义 1.1 泛型类的定义语法 1.2 代码使用示例 二、泛型类的使用语法 2.1 使用语法 2.2 泛型类注意事项 2.3 泛型类的使用小案例 三、从泛型类派生子类&#xff08;2种情况&#xff09; 3.1 子类和父类的泛型类型要保持一致 3.2 子类没有使用…

苹果秋季发布会前瞻:iPhone 16领衔新品盛宴

苹果定档9月9日&#xff0c;揭开新品神秘面纱 苹果公司近日正式宣布&#xff0c;将于9月9日在加州库比蒂诺的Apple Park&#xff0c;史蒂夫乔布斯剧院举办年度秋季新品发布会&#xff0c;主题为“It’s Glowtime”&#xff0c;预示着Siri界面将迎来一场华丽变身。此次发布会较原…

AUTOSAR_EXP_ARAComAPI.pdf的第4章笔记

为了理解AUTOSAR_EXP_ARAComAPI.pdf的第4章内容&#xff0c;生搬硬套的翻译了一把&#xff0c;准备先囫囵吞枣&#xff0c;再仔细理解。因为这些内容的理解也不是一时半会儿的。所以先放上来。 1.AUTOSAR_EXP_ARAComAPI.pdf的介绍 通常&#xff0c;阅读正式的规范并不是学习和…

【扩散模型(六)】IP-Adapter 是如何训练的?2 源码篇(IP-Adapter Plus)

系列文章目录 【扩散模型&#xff08;二&#xff09;】IP-Adapter 从条件分支的视角&#xff0c;快速理解相关的可控生成研究【扩散模型&#xff08;三&#xff09;】IP-Adapter 源码详解1-训练输入 介绍了训练代码中的 image prompt 的输入部分&#xff0c;即 img projection…

ASP.NET MVC+LayUI视频上传完整教程

前言 前段时间在使用APS.NET MVCLayUI做视频上传功能的时&#xff0c;发现当上传一些内存比较大的视频就会提示上传失败&#xff0c;后来通过查阅相关资料发现.NET MVC框架为考虑安全问题&#xff0c;在运行时对请求的文件的长度&#xff08;大小&#xff09;做了限制默认为4M…

缓存Mybatis一级缓存与二级缓存

缓存 为什么使用缓存 缓存(cache)的作用是为了减去数据库的压力,提高查询性能,缓存实现原理是从数据库中查询出来的对象在使用完后不销毁,而是存储在内存(缓存)中,当再次需要获取对象时,直接从内存(缓存)中提取,不再向数据库执行select语句,从而减少了对数据库的查询次数,因此…