使用docker file创建镜像(thirty-seven day)

news2024/11/15 13:36:38

回顾:根据镜像创建容器

docker -it --name c0 centos:latest /bin/bash

安装应用

ctrl+p+q

docker export -o centos.tar c0

docker import -m "山不像我走来,我便向山走去" centos.tar centos:httpd

docker commit c0 centos:v2

一、docker file应用

在Docker file中定义所需要执行的指令,使用 docker build创建镜像,过程中会按照dockerfile所定义的内容进行打开临时性容器,把docker file中命令全部执行完成,就得到了一个容器应用镜像,每一行命令都会出现容器,都会使用dockercommit进行提交一个临时性的镜像

注意执行的命令越多,镜像体积越大,所以需要优化镜像

1、Docker file关键字

1.FORM <image>                    指定基础镜像为该镜像的最后修改版本
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                              在子镜像中执行指令

 2、使用docker file创建镜像

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

(1)步骤

①创建⼀个⽬录,⽤于存储Docker file所使⽤的⽂件
② 在此⽬录中创建Docker file⽂件,以及镜像制作所使⽤的⽂ 件
③ 使⽤docker build创建镜像
④ 使⽤创建的镜像启动容器(验证)

 (2)具体操作

[root@Docker ~]# mkdir 001    
[root@Docker ~]# cd 001/

[root@Docker httpd0]# vim abc.sh

#!/bin/bash
rm -rf /run/*httpd*
exec /sbin/httpd -D FOREGROUND

[root@Docker httpd0]# echo "山不向我走来,我便向山走去" > index.html
[root@Docker httpd0]# ls
index.html  abc.sh

[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]# ls
Dockerfile  index.html  abc.sh

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

[root@Docker httpd0]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
centos       httpd0    4569c7510416   4 minutes ago   280MB
centos       httpd     8c4ea681706e   18 hours ago    280MB
centos       latest    5d0da3dc9764   2 years ago     231MB

[root@Docker httpd0]# ls /var/lib/docker/overlay2/
2r56za8uaixgxbbilh75pdtdd
2rpdeqlulp9b7hlx5f86hkvof
6be84eeb89f20e3a01ecb81e31d978dc64a50177463452476ccab40da29a4b30
995db6a0fd46ba18fca60ad04b3d2636f83cda26a9e5e007a1e2f798b0e7cc5e
backingFsBlockDev
eudiuxbdibdsww3fqjijbil3p
l
ofj3mwwdnfl3p44uazvjfd49e
thdnqu77gb3yxizfu5w3el6sa
uaz5woahcolqp9uxt9ttz5gcq
usr98w8jkm1b547i9pcw87wo0
v0i3autzvaq6sfwt68nomsl3r
wq36avrvxy43q2hzh6pxeql5q

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

[root@Docker 001]# curl 172.17.0.2
山不向我走来,我便向山走去

[root@Docker 001]# docker run -it -d -v /opt/:/var/www/html/ -p80 --name a1 centos:httpd

[root@Docker 001]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED              STATUS              PORTS                                     NAMES
a3bba4a766fe   centos:httpd   "/bin/bash /abc.sh"   33 seconds ago       Up 32 seconds       0.0.0.0:
32768->80/tcp, :::32768->80/tcp   a1
245646aad8d6   centos:httpd   "/bin/bash /abc.sh"   About a minute ago   Up About a minute                                            c0

访问192.168.1.11:32768

练习:配置nginx应用镜像

二、创建私有仓库 

1、拉取registry

docker pull registry

2、创建挂载目录

mkdir /regist

3、启动容器,映射端口,挂载目录

docker run -d --name r2  -v /regist/:/var/lib/registry -p5000:5000 registry:latest

4、访问仓库

curl http://192.168.1.11:5000/v2/_catalog

5、配置pull和push(修改daemon.json)

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.1.11:5000"
        ]

}

6、重启docker服务

systemctl restart docker

7、启动registry容器

docker start r2

curl localhost:5000/v2/_catalog

8、打标签并且上传镜像 

docker tag centos:httpd 192.168.1.11:5000/centos:httpd

docker push 192.168.1.11:5000/centos:httpd

9、查看

curl localhost:5000/v2/_catalog

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

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

相关文章

Oracle 客户端 PL/SQL Developer 15.0.4 安装与使用

目录 官网下载与安装 切换中文与注册 连接Oracle数据库 tnsnames.ora 文件使用 Oracle 客户端 PL/SQL Developer 12.0.7 安装、数据导出、Oracle 执行/解释计划、for update。 官网下载与安装 1、官网&#xff1a;https://www.allroundautomations.com/products/pl-sql-d…

uni-app 微信小程序开发安装配置 HbuilderX 微信小程序开发工具

安装HbuilderX 官网下载&#xff1a; https://www.dcloud.io/hbuilderx.html 编译器用来编写小程序代码 微信小程序开发工具 官网下载&#xff1a;https://developers.weixin.qq.com/miniprogram/dev/devtools/stable.html 用于小程序的页面调试 创建项目 HbuilderX创建项目…

找单身狗(c语言)

1./找单身狗 //在一个数组中只有两个数字出现一次&#xff0c;其他所以数字都出现了两次 //编写一个函数找出这两个只出现一次的数字 2.方法一&#xff1a;暴力求解&#xff0c;我们用冒泡函数&#xff0c;进行比较如果ij,那么n&#xff0c;如果n1,那么我们将他存储在arr2[]&a…

C++编程语言——基础设施:指针,数组和引用

指针&#xff0c;数组和引用 (Pointers, Arrays, and References) 目录 7.1 引言 7.2 指针 7.2.1 void* 指针 7.2.2 nullptr 指针 7.3 数组 7.3.1 数组初始化 7.3.2 字符串文字量 7.3.2.1 原字符串(Raw Character Strings) 7.3.2.2 大字符集(Larger Charac…

Multi-UAV|多无人机、多场景路径规划MATLAB

无人机(Unmanned Aerial Vehicle&#xff0c;UAV) 是一种无需机载驾驶员的半自主飞行器&#xff0c;由于其灵活度高、机动性强等特点&#xff0c;目前已广泛应用于民用和军用领域&#xff0c;如救援、农业、 输电线路巡检等。但在实际应用中&#xff0c;单个UAV难以应对任务点分…

看github源码必备的chrome插件

Web Activity Time Tracker 一个记录github等各个网站的阅读时长 长这样 GitHub Web IDE 一个方便打开github的各种web IDE&#xff0c;最后一个选项Clone in VScode 一键克隆到本地并打开非常省事 Elmo Chat - Your AI Web Copilot 一键总结项目内容&#xff0c;打开web i…

Datawhale X 李宏毅苹果书 AI夏令营 入门 Task2-了解线性模型

目录 线性模型分段线性曲线模型变形 线性模型 输入的特征 x 乘上一个权重&#xff0c;再加上一个偏置就得到预测的结果&#xff0c;这样的模型称为线性模型。 分段线性曲线 线性模型有很大的限制&#xff0c;这一种来自于模型的限制称为模型的偏差&#xff0c;无法模拟真实的…

网络压缩之参数量化(parameter quantization)

参数量化&#xff08;parameter quantization&#xff09;。参数量化是说能否只 用比较少的空间来储存一个参数。举个例子&#xff0c;现在存一个参数的时候可能是用64位或32位。 可能不需要这么高的精度&#xff0c;用16或8位就够了。所以参数量化最简单的做法就是&#xff0c…

智慧党建解决方案

1. 新时代党建工作背景 报告强调了新时代党建工作的重要性&#xff0c;提出要利用互联网、大数据等新兴技术推进智慧党建&#xff0c;提高党的执政能力和领导水平。 2. 基层党组织建设挑战 基层党组织在日常工作中面临组织管理难、过程监管难、宣传教育难等问题&#xff0c;…

基于yolov8的人头计数检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的人头计数检测系统是一种利用深度学习技术的先进解决方案&#xff0c;旨在实现高效、准确的人头计数功能。该系统以YOLOv8为核心算法&#xff0c;该算法是YOLO系列中的最新迭代&#xff0c;以其卓越的实时检测性能和准确性著称。 该系统通过复杂的网…

pip+代理

在cmd中使用代理时执行pip指令下载包时&#xff0c; 会报错 WARNING: Retrying (Retry(total4, connectNone, readNone, redirectNone, statusNone)) after connection broken by SSLError(SSLEOFError(8, EOF occurred in violation of protocol (_ssl.c:1131))): /simple/op…

day-45 全排列 II

思路 与上一题思路相同&#xff0c;代码也基本一致&#xff0c;只是需要全排列不重复 解题过程 可以利用Arrays.sort()函数将nums数组进行排序&#xff0c;这样相同的全排列数字的位置也会相同&#xff0c;可以利用List的contains()函数进行判断&#xff0c;如果不重复则加入答…

【CSS】border-image 样式不生效 - 和谷歌浏览器版本有关系 - 谷歌 80 版本边框图片样式失效问题

目录 问题解决 问题 使用边框图片时&#xff0c;部分谷歌浏览器版本中边框图片不生效 边框图片样式代码 border-image-source: url(img/dialog-bg.40ddf10d.png); border-image-slice: var(--topSlice) 50 var(--bottomSlice) 330; border-image-repeat: stretch; border-im…

Vulnhub靶场 | DC系列 - DC7

文章目录 DC-7环境搭建渗透测试 DC-7 环境搭建 靶机镜像下载地址&#xff1a;https://vulnhub.com/entry/dc-6,315/需要将靶机和 kali 攻击机放在同一个局域网里&#xff1b;本实验kali 的 IP 地址&#xff1a;192.168.10.146。 渗透测试 使用 nmap 扫描 192.168.10.0/24 网…

直播商城小程序开发指南:基于多商户商城系统源码的实现

本篇文章&#xff0c;小编将以多商户商城系统源码为基础&#xff0c;详细介绍如何开发一款高效、稳定的直播商城小程序。 一、直播商城小程序的市场需求与发展前景 直播商城小程序作为一种轻量级的应用形式&#xff0c;用户无需下载安装即可通过微信等社交平台直接访问&#…

学习计算机网络

a类0~127&#xff0c;b类128~191&#xff0c;c类192~223 网络地址&#xff1a;看子网掩码&#xff0c;分网络位和主机位&#xff0c;后面是主机位&#xff0c;主机位全部为0&#xff0c;网络地址。 直接广播地址&#xff1a;看子网掩码&#xff0c;分网络位和主机位&#xff…

Docker 修改镜像源

由于docker hub 被禁&#xff0c;导致 docker 拉取镜像失败&#xff0c;解决办法就是使用国内的镜像源&#xff0c;目前国内的镜像源还是很多的&#xff0c;例如阿里云、腾讯云、华为云等等&#xff0c;下面演示一个更换成阿里云的步骤。 1. 阿里云获取加速地址 1.1 首先登录阿…

反向迭代器:reverse_iterator的实现

目录 前言 特点 注意事项 实现 构造函数 功能函数 在list与vector中的使用 vector list 前言 反向迭代器是一种在序列容器的末尾开始&#xff0c;并向前移动至序列开始处的迭代器。在C中&#xff0c;反向迭代器由标准库中的容器类提供&#xff0c;比如vector、list、d…

代码随想录八股训练营总结篇 2024年8月

代码随想录八股训练营总结篇 2024年8月 1. 报名初衷 ​ 随着秋招的临近&#xff0c;我意识到自己需要迅速提升各方面的技术能力。但是在准备过程中&#xff0c;我自己学习动力不足&#xff0c;常常难以坚持。为了找到一群志同道合的学习伙伴&#xff0c;共同营造学习氛围&…

Ubuntu上安装配置(jdk/tomcat/ufw防火墙/mysql)+mysql卸载

jdk安装 1.上传jdk压缩包 详情&#xff1a; 下载rz服务&#xff08;lrzsz&#xff09;&#xff1a;sudo apt install lrzsz(在主用户root就不用sudo)下载压缩包&#xff1a;rz 2.解压jdk压缩包 &#xff1a; 详情&#xff1a; 在压缩包所在位置&#xff08;解压压缩使用看Li…