第五章 Docker 自定义镜像

news2024/11/25 4:38:55

5-1 认识 Dockerfile 文件
Dockerfile 用于构建 Docker 镜像,Dockerfile 文件是由一行行命令语句组 成 , 基于 这些命 令 即 可以构建一 个镜 像, 比如下面 就 是一 个
Dockefile 文件样例:


FROM XXX/jdk:8
MAINTAINER docker_user
ENV JAVA_HOME /usr/local/java
ADD apache-tomcat-8.0.32.tar.gz /usr/local/
RUN mv apache-tomcat-8.0.32 tomcat8
EXPOSE 8080
RUN chmod u+x /usr/local/tomcat8/bin/*.sh
CMD /usr/local/tomcat8/bin/catalina.sh start

 
5-2 Dockerfile 的基本结构
一般的,Dockerfile 分为四部分:

基础镜像信息;
维护者信息;
镜像操作指令;
容器启动时执行指令;

5-3 Dockerfile 指令
FROM
格式为 FROM <image> 或 FROM <image>:<tag>
Dockerfile 文件的第一条指令必须为 FROM 指令。并且,如果在同一个 Dockerfile 中创建多个镜像时,可以使用多个 FROM 指令(每个镜像一次);
MAINTAINER
格式为 MAINTAINER <name>,指定维护者信息;
ENV
格式为 ENV <key> <value>,指定一个环境变量,会被后续 RUN 指令使用,并在容器运行时保持;
ADD
格式为 ADD <src> <dest>;
复制指定的<src>到容器中的<dest>;
EXPOSE
格式为 EXPOSE <port> [<port>...]

告诉 Docker 服务端容器暴露的端口号,供互联系统使用,在启动容
器时需要通过 -p 映射端口,Docker 主机会自动分配一个端口转发到
指定的端口;

RUN
格式为 RUN <command>
RUN 指令将在当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行;
CMD
指定启动容器时执行的命令,每个 Dockerfile 只能有一条 CMD 命令。
如果指定了多条命令,只有最后一条会被执行。
如果用户启动容器时候指定了运行的命令,则会覆盖掉 CMD 指定的命令。
5-4 Dockerfile 自定义镜像
5-4-1 自定义 JDK 镜像


FROM centos:latest
MAINTAINER wkcto
ADD jdk-8u121-linux-x64.tar.gz /usr/local
ENV JAVA_HOME /usr/local/jdk1.8.0_121
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
CMD java -version


构建镜像:docker build -t wkcto_jdk1.8.0_121 .


运行镜像:docker run -d ac84bde53958

 


5-4-2 自定义 Tomcat 镜像
定义 Dockerfile 文件:
FROM wkcto_jdk1.8.0_121
MAINTAINER wkcto
ADD apache-tomcat-8.5.24.tar.gz /usr/local/
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.24
ENV PATH $PATH:$CATALINA_HOME/lib:$CATALINA_HOME/bin
EXPOSE 8080CMD /usr/local/apache-tomcat-8.5.24/bin/catalina.sh run


构建镜像:docker build -t wkcto-tomcat-8.5.24 .


运行镜像:docker run -d -p 8080:8080 ab41b5f48256


5-4-3 自定义 MySQL 镜像
定义 Dockerfile 文件:

 
FROM centos:centos6
MAINTAINER wkcto
RUN yum install mysql-server mysql -y
RUN /etc/init.d/mysqld start &&\
mysql -e "grant all privileges on *.* to 'root'@'%' identified by '123456' WITH
GRANT OPTION ;"&&\
mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by '123456'
WITH GRANT OPTION ;"&&\
mysql -uroot -p123456 -e "show databases;"
EXPOSE 3306
CMD /usr/bin/mysqld_safe


构建镜像:docker build -t wkcto-mysql .
运行镜像:docker run -d -p 3306:3306 09ce279d92df

5-4-4 自定义 Redis 镜像
定义 Dockerfile 文件:

FROM centos:latest
MAINTAINER wkcto
RUN yum install epel-release -y && yum install redis -y && yum install net-tools -y
EXPOSE 6379
CMD /usr/bin/redis-server –protected-mode no


构建镜像:docker build -t wkcto-redis .
运行镜像:docker run -d -p 6379:6379 390583cf0531
5-5 镜像发布到仓库
5-5-1 阿里云容器镜像仓库
网址:https://dev.aliyun.com
5-5-2 注册阿里云镜像仓库
如果没有阿里云账号,需要注册一个阿里云账号;
也可以使用淘宝账号、支付宝账号登录;
5-5-3 发布镜像阿里云镜像仓库
登录阿里云镜像,进入管理中心,在自己我管理中心中,左侧点击镜像仓库菜单,如果自己没有镜像仓库的话,需要创建一个镜像仓库;


对自己的镜像仓库点击管理链接,按照操作指南进行操作即可;
1. 登录阿里云 Docker Registry
docker login --username=hi35331710@aliyun.com registry.cn-qingdao.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在产品控制台首页修改登录密码。

2. 将镜像推送到 Registry
docker tag [ImageId] registry.cn-qingdao.aliyuncs.com/123test/1234test:[ 镜 像 版 本 号 ]
docker push registry.cn-qingdao.aliyuncs.com/123test/1234test:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
imageId: a78da0202f84
docker tag a78da0202f84 registry.cn-qingdao.aliyuncs.com/123test/1234test:latest
docker push registry.cn-qingdao.aliyuncs.com/123test/1234test:latest

5-5-4 Docker hub 镜像加速
/etc/docker/daemon.json
{"registry-mirrors": ["https://gg3gwnry.mirror.aliyuncs.com"]}

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

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

相关文章

大一学生《Web编程基础》期末网页制作 HTML+CSS+JavaScript 企业网页设计实例

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【紧急情况】:回宿舍放下书包的我,花了20分钟敲了一个抢购脚本

文章目录情况紧急 ⁉️抢❗️抢❗️抢❗️开抢时间说明&#x1f4a8;开抢过程&#x1f4a5;Get_cookie.py开抢结束语&#x1f631;情况紧急 ⁉️ 不管你信不信&#xff0c;这就是俺刚瞧出的代码&#xff01;&#xff01;&#xff01; 现在离20&#xff1a;00还有38分钟&#xf…

持久与速度 鱼和熊掌 MySQL怎么去兼得

前言 我们都知道 MySQL 有一个特性就是持久化储存到磁盘中 我们存进去就要取出来这也是MySQL的速度为什么比不上Redis。但是MySQL 并不是完全就摆烂每次都进行 Select update 的时候都重新去磁盘IO 这样MySQL肯定会更慢 速度快 和 持久化 MySQL 表示我都要 但是两者都要肯定没…

Chapter7.4:线性离散系统的分析与校正考研参考题

此系列属于胡寿松《自动控制原理题海与考研指导》(第三版)习题精选&#xff0c;仅包含部分经典习题&#xff0c;需要完整版习题答案请自行查找&#xff0c;本系列属于知识点巩固部分&#xff0c;搭配如下几个系列进行学习&#xff0c;可用于期末考试和考研复习。 自动控制原理(…

台式万用表究竟如何选型?手持式和台式选择哪一个?

数字万用表是一种多用途的电子测量仪器&#xff0c;有各种各样的形状和规格&#xff0c;可能要超过任何其他仪器品类&#xff0c;比较常见的就是手持和台式万用表了&#xff0c;那么在选型时选择手持式还是台式万用表呢?今天安泰测试就给大家分享一下&#xff1a; 手持式数字万…

充分复用离线空闲算力,降低了实时计算资源开支

针对提供下游数据报表展示的场景&#xff0c;一般需要走预计算的流程将结果持久化下来&#xff0c;对数据就绪和计算耗时的敏感度都较高&#xff0c;而且查询逻辑相对复杂&#xff0c;Trino/Impala 集群规模相对较小&#xff0c;执行容易失败&#xff0c;导致稳定性欠佳。这个场…

Linux系统中标准输入设备的控制实现

大家好&#xff0c;今天主要和大家聊一聊&#xff0c;如何使用标准输入设备&#xff0c;进行控制信息的识别。 目录 第一&#xff1a;按键应用编程方法 第二&#xff1a;单点触摸应用程序实现 ​第三&#xff1a;多点触摸应用程序实现 第一&#xff1a;按键应用编程方法 编写…

java 实现删除单链表中所有指定的结点以及如何清空单链表

文章目录1. 删除单链表中的所有的指定结点1.1 删除思路1.2 删除步骤1.2.1 删除结点不是头结点1.2.2 删除的结点是头结点的情况1.3 部分代码思路分析1.4 整体代码演示2. 清空单链表1. 删除单链表中的所有的指定结点 1.1 删除思路 定义一个 cur 来代替 head 遍历单链表。遇到指…

Python检测和防御DOS攻击

目录 ​编辑 一、在CentOS上安装Python3 1.下载Python3.10源代码文件 2.运行以下命令行完成安装 3.确认是否安装成功 二、理解各个命令的含义 1.uptime 2.netstat 3.ss 4.firewall-cmd 5.sysctl 三、利用Python实现DDOS入侵检测 1.采集TCP连接数据 一、在CentOS上安…

生态系统服务——水源涵养水源涵养分布

水源涵养&#xff0c;是指养护水资源的举措。一般可以通过恢复植被、建设水源涵养区达到控制土壤沙化、降低水土流失的目的。 水源涵养数据是地理遥感生态网平台通过水量平衡方程&#xff08;The Water Balance Equation&#xff09;计算&#xff08;式29&#xff09;。水量平衡…

http://localhost:8080打不开/shutup.bat命令行闪退

前言&#xff1a;学过一阵java web后从头学起&#xff0c;发现http://localhost:8080打不开&#xff0c;双击shutup.bat闪退 http://localhost:8080打不开 一、tomcat 未启动&#xff0c;所以http://localhost:8080打不开&#xff1b; 二、tomcat图标显示已启动&#xff0c;但…

计算机毕业设计SSM草海帮帮帮【附源码数据库】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

5G无线技术基础自学系列 | 无线帧结构

素材来源&#xff1a;《5G无线网络优化实践》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 1.3.1 基本时间单位 NR物理层的基本时间…

R语言绘制瑞利分布和指数分布,并为瑞利分布着不同色

从概率论和统计学角度看&#xff0c;Weibull Distribution是连续性的概率分布&#xff0c;其概率密度为&#xff1a; 其中&#xff0c;x是随机变量&#xff0c;λ>0是比例参数&#xff08;scale parameter&#xff09;&#xff0c;k>0是形状参数&#xff08;shape para…

python sympy求多元函数的梯度、Hessian矩阵

1 求梯度 sympy实际上提供了求梯度的方法&#xff0c;但个人认为不是很直观&#xff0c;求出的是∂f∂xi⃗∂f∂yj⃗∂f∂zk⃗\frac{\partial f}{\partial x} \vec {i}\frac{\partial f}{\partial y} \vec {j}\frac{\partial f}{\partial z}\vec {k}∂x∂f​i∂y∂f​j​∂z∂…

java计算机毕业设计springboot+vue股票交易模拟系统

项目介绍 股票交易模拟系统是针对目前股票交易模拟管理的实际需求&#xff0c;从实际工作出发&#xff0c;对过去的股票交易模拟管理系统存在的问题进行分析&#xff0c;完善客户的使用体会。采用计算机系统来管理信息&#xff0c;取代人工管理模式&#xff0c;查询便利&#…

eCal 基础安装和使用

参考文章&#xff1a; 自动驾驶通信中间件ecal源码分析—1. 什么是ecal 1、安装 使用官网提供的指令安装 主要参考官网进行安装&#xff0c; https://eclipse-ecal.github.io/ecal/index.html 主要这里兼容的主要系统&#xff1a; Ubuntu 18.04 Ubuntu 20.04 Ubuntu 22.04 这…

[附源码]java毕业设计8号体育用品销售及转卖系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

搜索服从幂律分布的网络 论文阅读

一、定义 1、幂律分布网络定义&#xff1a; 大部分通信网络和社会网络都具有幂律分布的特点&#xff0c;也即度数高的节点的数量少&#xff0c;度数低节点的数量多。 2、数学推导&#xff1a; 对于指数为τ、最小度数为k 1、在mkmaxm k_{max}mkmax​处有突变截止点的幂律分…

LeetCode链表练习(上)

文章目录前言1.反转链表1.题目分析2.代码示例2.力扣203. 移除链表元素1.题目分析2.代码示例3.力扣876. 链表的中间结点1.题目分析2.代码示例4.链表倒数第k个节点1.题目分析2.代码示例5.总结前言 之前介绍了链表的实现&#xff0c;为了更好巩固所学的知识&#xff0c;刷题是很有…