使用Dockerfile创建应用镜像及私有仓库

news2024/12/24 2:38:14

 

目录

 

   1.Dockerfile介绍   

 2.Dockerfile应用

1.创建目录

2.跳转目录

3.编辑启动脚本

4.编辑index.html文件

5.编辑 Dockerfile

6.创建镜像

7.查看镜像

8.创建容器测试

9.挂载其他项目测试

 3.私有仓库

1.安装仓库镜像---仓库注册器

 2.创建目录

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

 4.访问仓库

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

 6.重启docker服务

 7.启动registry容器

8.查看镜像,打上标签


   1.Dockerfile介绍   

        Dockerfile 是一种用于定义和构建 docker 镜像的文本文件。它包含一系列的指令和参数,用于描述镜像的构建过程,包括基础映像、软件包安装、文件拷贝、环境变量设置等。

        通过编写 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在子镜像中执行指令

 2.Dockerfile应用

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

1.创建目录

[root@docker0 ~]# mkdir httpd0

2.跳转目录

[root@docker0 ~]# cd httpd0/

3.编辑启动脚本

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

4.编辑index.html文件

[root@docker0 httpd0]# echo "asdfgasdfg" > index.html
[root@docker0 httpd0]# ls
abc.sh  index.html

5.编辑 Dockerfile

[root@docker0 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 install -y 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.创建镜像

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

7.查看镜像

docker image ls

8.创建容器测试

[root@docker0 httpd0]# docker run -d --name c0 centos:httpd
0243403fbf233185d856278917f1129280e3c970491aeab7ddc35f570017d26b
[root@docker0 httpd0]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED          STATUS          PORTS     NAMES
0243403fbf23   centos:httpd   "/bin/bash /abc.sh"   12 seconds ago   Up 11 seconds             c0
[root@docker0 httpd0]# curl 172.17.0.2
asdfgasdfg

9.挂载其他项目测试

[root@docker0 httpd0]# docker run -d -v /opt/:/var/www/html --name c1 -p80 centos:httpd
933b572d1f829e4623a2163a9b85b66c57f7183151b81c515c286673e44aaccf
[root@docker0 httpd0]# ls /opt/
assets  containerd  favicon.ico  index.html
[root@docker0 httpd0]# docker ps --all
CONTAINER ID   IMAGE          COMMAND               CREATED          STATUS          PORTS                                     NAMES
933b572d1f82   centos:httpd   "/bin/bash /abc.sh"   24 seconds ago   Up 23 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   c1
0243403fbf23   centos:httpd   "/bin/bash /abc.sh"   3 minutes ago    Up 3 minutes                                              c0

浏览器访问:

练习:配置nginx应用镜像 

[root@docker0 ~]# mkdir nginx
[root@docker0 ~]# cd nginx/
[root@docker0 nginx]# vim Dockerfile 
FROM centos:yum

MAINTAINER	"NGINX"

RUN	yum -y install nginx

RUN	echo "daemon off;" >> /etc/nginx/nginx.conf

WORKDIR /

CMD /usr/sbin/nginx

[root@docker0 nginx]# docker build -t centos:nginx .
[+] Building 166.9s (7/7) FINISHED                  docker:default
 => [internal] load build definition from Dockerfile          0.0s
 => => transferring dockerfile: 182B                          0.0s
 => [internal] load metadata for docker.io/library/centos:yu  0.0s
 => [internal] load .dockerignore                             0.0s
 => => transferring context: 2B                               0.0s
 => [1/4] FROM docker.io/library/centos:yum                   0.0s
 => [2/4] RUN YUM -y install nginx                          166.1s
 => [3/4] RUN ECHO "daemon off;" >> /etc/nginx/nginx.conf     0.2s 
 => exporting to image                                        0.5s 
 => => exporting layers                                       0.5s 
 => => writing image sha256:54d2fca7546bc6a54c7ef5eace3529cb  0.0s 
 => => naming to docker.io/library/centos:nginx               0.0s 
[root@docker0 nginx]# docker run -d --name nginx centos:nginx
d30397d951288976e202d6707b54759e1aab74aa579a52b089f5c6769583bd2b
[root@docker0 nginx]# docker ps --all
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS     NAMES
d30397d95128   centos:nginx   "/bin/sh -c /usr/sbi…"   47 seconds ago   Up 46 seconds             nginx
[root@docker0 nginx]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       nginx     54d2fca7546b   20 minutes ago   403MB
centos       yum       662ca15b0cde   26 minutes ago   260MB
centos       httpd     1f7c1fd8d415   2 hours ago      338MB
centos       latest    5d0da3dc9764   2 years ago      231MB

 3.私有仓库

1.安装仓库镜像---仓库注册器

[root@docker0 nginx]# docker pull registry
Using default tag: latest
latest: Pulling from library/registry
930bdd4d222e: Pull complete 
a15309931e05: Pull complete 
6263fb9c821f: Pull complete 
86c1d3af3872: Pull complete 
a37b1bf6a96f: Pull complete 
Digest: sha256:12120425f07de11a1b899e418d4b0ea174c8d4d572d45bdb640f93bc7ca06a3d
Status: Downloaded newer image for registry:latest
docker.io/library/registry:latest
[root@docker0 nginx]# 
[root@docker0 nginx]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
centos       nginx     54d2fca7546b   33 minutes ago   403MB
centos       yum       662ca15b0cde   39 minutes ago   260MB
centos       httpd     1f7c1fd8d415   2 hours ago      338MB
registry     latest    cfb4d9904335   10 months ago    25.4MB
centos       latest    5d0da3dc9764   2 years ago      231MB

 2.创建目录

[root@docker0 nginx]# mkdir /regist

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

[root@docker0 nginx]# docker run -d --name r1 -v /regist/:/var/lib/registry -p5000:5000 registry:latest
762990d22569e028f8115504f71c7d80b7e8c5da2ab0cd9823185c0a5e1eb208
[root@docker0 nginx]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS         PORTS                                       NAMES
762990d22569   registry:latest   "/entrypoint.sh /etc…"   9 seconds ago   Up 8 seconds   0.0.0.0:5000->5000/tcp, :::5000->5000/tcp   r1

 4.访问仓库

[root@docker0 nginx]# curl localhost
curl: (7) Failed connect to localhost:80; 拒绝连接
[root@docker0 nginx]# curl localhost:5000/v2/_catalog
{"repositories":[]}

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

{
…
"insecure-registries":[
                "http://192.168.1.50:5000"
        ]
}

 6.重启docker服务

[root@docker0 ~]# systemctl restart docker

 7.启动registry容器

[root@docker0 ~]# docker ps --all
CONTAINER ID   IMAGE             COMMAND                   CREATED         STATUS                      PORTS     NAMES
f17b085f6f38   registry:latest   "/entrypoint.sh /etc…"   5 minutes ago   Exited (2) 18 seconds ago             r1
[root@docker0 ~]# docker start r1
r1
[root@docker0 ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}

8.查看镜像,打上标签

[root@docker0 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
centos       nginx     54d2fca7546b   55 minutes ago      403MB
centos       yum       662ca15b0cde   About an hour ago   260MB
centos       httpd     1f7c1fd8d415   2 hours ago         338MB
registry     latest    cfb4d9904335   10 months ago       25.4MB
centos       latest    5d0da3dc9764   2 years ago         231MB
[root@docker0 ~]# docker tag --help

Usage:  docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

Aliases:
  docker image tag, docker tag

[root@docker0 ~]# docker tag centos:yum 192.168.1.50:5000/centos:yum
[root@docker0 ~]# docker images
REPOSITORY                 TAG       IMAGE ID       CREATED             SIZE
centos                     nginx     54d2fca7546b   58 minutes ago      403MB
192.168.1.50:5000/centos   yum       662ca15b0cde   About an hour ago   260MB
centos                     yum       662ca15b0cde   About an hour ago   260MB
centos                     httpd     1f7c1fd8d415   2 hours ago         338MB
registry                   latest    cfb4d9904335   10 months ago       25.4MB
centos                     latest    5d0da3dc9764   2 years ago         231MB

[root@docker0 ~]# docker push 192.168.1.50:5000/centos:yum
The push refers to repository [192.168.1.50:5000/centos]
0750ba8bd49a: Pushed 
yum: digest: sha256:9073337da64bd552f4272a7bb1beb7c4126d3477b65f593d3d47a9fce888be67 size: 529
[root@docker0 ~]# curl localhost:5000/v2/_catalog
{"repositories":["centos"]}

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

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

相关文章

读书学习笔记 # Datawhale X 李宏毅苹果书 AI夏令营

文章目录 &#x1f6a9;学习目标&#x1f6a9;学习内容&#x1f6a9; Task1.1&#x1f3af;为什么优化会失败&#x1f4cc;因非信息梯度导致的失败 &#x1f3af;局部极小值与鞍点&#x1f3af;临界点及其种类&#x1f3af;如何判断临界值种类&#x1f4cc;更简便的方法来判断 …

ubuntu环境下部署LNMP集成环境超详细图文教程

ubuntu系统下安装LNMP集成环境 一、Nginx安装 二、安装及配置MySQL数据库 修改密码 三、安装PHP 四、配置Nginx服务 ​编辑五、配置PHP 本文使用的Ubuntu版本为20.04。 php开发中集成环境的安装是必不可少的技能。 而LNMP代表的是&#xff1a;Linux系统下NginxMySQLPHP…

李沐--动手学深度学习 ResNet

1.理论 2.残差块 import torch from torch import nn from torch.nn import functional as F from d2l import torch as d2l#ResNet沿用了VGG完整的3*3卷积层设计.残差块的实现如下&#xff1a; #此代码生成两种类型的网络&#xff1a; #一种是当use_1x1convFalse时&#xff0…

96.SAP MII功能详解(09)Workbench-Transaction Debugging

目录 1.About Transaction Debugging Use Features Activities 2.How to Debug Start Debugging Create Breakpoint Watch Variables Debugging logs 1.About Transaction Debugging Use You use this function to monitor and manipulate a transaction while it …

java框架第一课(mybatis认识)

一.关于mybatis 1.mybatis的背景 mybatis原来 是Apache的一个开源项目iBatis,2010年6月这个项目由ApacheSoftware Foundation 迁移到了 Google Code&#xff0c;并改名为mybatis。 2.mybitis的介绍 (1)MyBatis 是一款优秀的持久层框架(在与数据库交互,数据访问层,数据持久层)。…

深入学习SQL优化的第四天

目录 高级查询与连接 1731 每 位 经 理 的 下 属 员 工 数 量 1789 员 工 的 直 属 部 门 610 判 断 三 角 形 180 连 续 出 现 的 数 字 1164 指 定 日 期 的 产 品 价 格 1204 最 后 一 个 能 进 入 巴 士 的 人 1907 按 分 类 统 计 薪 水 子查询 1978 上…

机器学习入门(Datawhale X 李宏毅苹果书 AI夏令营-Task1)

&#x1f4dd;本文介绍 本文为作者初探机器学习&#xff0c;读苹果书写下的笔记。 &#x1f44b;作者简介&#xff1a;一个正在积极探索的本科生 &#x1f4f1;联系方式&#xff1a;943641266(QQ) &#x1f6aa;Github地址&#xff1a;https://github.com/sankexilianhua &…

AcWing854. Floyd求最短路

注意&#xff1a;Floyd是求图里面任意两个点x&#xff0c;y之间的最短距离 #include <cstring> #include <iostream> #include <algorithm>using namespace std;const int N 210, INF 1e9;int n, m, Q; int d[N][N];void floyd() { //枚举1~k个中间节点&a…

书生.浦江大模型实战训练营——(十三)茴香豆:企业级知识库问答工具

最近在学习书生.浦江大模型实战训练营&#xff0c;所有课程都免费&#xff0c;以关卡的形式学习&#xff0c;也比较有意思&#xff0c;提供免费的算力实战&#xff0c;真的很不错&#xff08;无广&#xff09;&#xff01;欢迎大家一起学习&#xff0c;打开LLM探索大门&#xf…

国货之光|暴雨信创服务器亮相北京科博会

8月13-16日&#xff0c;由北京市人民政府主办的第二十六届中国北京国际科技产业博览会&#xff08;简称北京科博会&#xff09;在北京国际会议中心成功举办。作为汇聚全球科技创新成果与智慧交流的高端盛会&#xff0c;北京科博会是推动创新发展成果展示的重要舞台。 青海科技展…

html2canvas ios慎用和createImageBitmap ios慎用

好好好&#xff0c;排查几天&#xff0c;原来是你 小本本记下了[翻白眼][翻白眼][翻白眼] ​html2canvas ios慎用&#xff0c;用了记得设置字体 ​2. createImageBitmap ios慎用&#xff0c;14及以下不兼容&#xff0c;建议更换api

Vue3基础2

1.Hooks 就是进行数据的封装&#xff0c;同一种类型的 数据 方法 计算属性 &#xff0c;放在一起 命名规范 use功能名称.ts 或.js 创建一个文件夹 hooks 1.useDog.ts import { reactive,onMounted } from "vue"; import axios from "axios";export def…

Golang | Leetcode Golang题解之第375题猜数字大小II

题目&#xff1a; 题解&#xff1a; func getMoneyAmount(n int) int {f : make([][]int, n1)for i : range f {f[i] make([]int, n1)}for i : n - 1; i > 1; i-- {for j : i 1; j < n; j {f[i][j] j f[i][j-1]for k : i; k < j; k {cost : k max(f[i][k-1], f[…

Linux命令:创建新的目录的工具mkdir命令详解

目录 一、概述 二、语法 1、基本语法 2、常用选项 3、获取帮助 三、示例 1. 创建单个目录 2. 创建多个目录 3. 使用 -p 选项创建多级目录 4. 设置目录权限 5. 显示创建目录的信息 &#xff08;1&#xff09;一般目录创建 &#xff08;2&#xff09;复杂目录创建 …

大数据技术之Flume 企业开发案例——负载均衡和故障转移(6)

目录 负载均衡和故障转移 1&#xff09;案例需求 2&#xff09;需求分析 3&#xff09;实现步骤 负载均衡和故障转移 1&#xff09;案例需求 使用 Flume1 监控一个端口&#xff0c;其 sink 组中的 sink 分别对接 Flume2 和 Flume3&#xff0c;采用 FailoverSinkProcessor…

裁员后的逆袭:程序员变外卖小哥,AI绘画成就全新职业生涯

一、初代程序员的困境 曾几何时&#xff0c;我是一名初代程序员&#xff0c;投身于互联网行业&#xff0c;为我国信息化建设贡献自己的力量。然而&#xff0c;随着年龄的增长和行业竞争的加剧&#xff0c;我不可避免地遭遇了裁员。面对突如其来的变故&#xff0c;我不得不重新审…

Nginx反向代理B

http协议反向代理 反向代理配置参数 proxy_pass; #用来设置将客户端请求转发给的后端服务器的主机 #可以是主机名(将转发至后端服务做为主机头首部)、IP地址&#xff1a;端口的方式 #也可以代理到预先设置的主机群组&#xff0c;需要模块ngx_http_upstream_module支持 #示例:…

机械学习—零基础学习日志(如何理解概率论9)

大数定律与中心定律 来看一道习题&#xff1a; 这个题目看看&#xff0c;应该是什么呢~下一章来看看解析~ 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版&#xff08;王志超&#xff09;》学习笔记 王志超老师 &#xff08;UP主&#xff09;

构造,CF 1290B - Irreducible Anagrams

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1290B - Irreducible Anagrams 二、解题报告 1、思路分析 首先根据样例特…

系统编程-消息队列

消息队列 目录 消息队列 引入 一、消息队列的特点 二、使用指令查看消息队列 三、使用消息队列进行通信的步骤 1、获取键值 2、创建或获取消息队列 id 3、使用消息队列进行数据的传输 4、msgrcv -- 从消息队列中读取数据 5、消息队列的多种操作函数 引入 -- 进程间…