Dockerfile制作镜像与搭建LAMP环境

news2024/9/24 7:15:59

1、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

具体要求如下:
(1)基于centos基础镜像;
(2)指定作者信息;
(3)安装nginx服务,将提供的dest目录(提供默认主页index.html)传到镜像内,并将dest目录内的前端文件复制到nginx的工作目录;
(4)暴露80端口;
(5)设置服务自启动。
(6)验证镜像。

1)创建nginx目录

2)进入目录,创建并编写Dockerfile文件

[root@localhost nginx]# cat Dockerfile 
FROM centos:7
MAINTAINER "LL <ll2738ii@163.com>"

ADD http://nginx.org/download/nginx-1.22.1.tar.gz /usr/local/src
COPY index.html /usr/share/nginx/

EXPOSE 80

CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

  • FROM centos:7:指定基础镜像为 CentOS 7。
  • MAINTAINER "LL <***>":设置镜像的维护者为 LL,电子邮件为 ***
  • ADD ***/download/nginx-1.22.1.tar.gz /usr/local/src:从指定的 URL 下载 Nginx 1.22.1 源代码并将其添加到容器的 /usr/local/src 目录中。
  • COPY index.html /usr/share/nginx/:将本地 index.html 文件复制到容器的 /usr/share/nginx/ 目录中。
  • EXPOSE 80:将容器的 80 端口暴露给外部访问。
  • CMD ["/usr/sbin/nginx", "-g", "daemon off;"]:设置容器启动时运行的命令。在本例中,该命令启动了 Nginx 服务并将其设置为前台运行(daemon off)。

 3)构建镜像

docker build -t nginx:v1.1 ./

以下是这个命令的解释:

  • `docker build`:这是 Docker 构建镜像的命令。
  • `-t nginx:v1.1`:此选项用于为镜像指定名称和标签。
  • `./`:此选项指定 Dockerfile 的位置。`.` 表示当前目录。Docker 将在此目录下查找名为 `Dockerfile` 的文件。

4)登录harbor

docker login 192.168.136.138

 5)给镜像打上标签

docker tag nginx:v1.1 192.168.136.138:5000/test/nginx:v1.1

 注:这里的test是我在私有仓库创建的项目。

 

 6)推送镜像

docker push 192.168.136.138:5000/test/nginx:v1.1

 harbor查看到推送的镜像

2、Dockerfile快速搭建自己专属的LAMP环境,生成镜像lamp:v1.1,并推送到私有仓库。

具体要求如下:
(1)基于centos:6基础镜像;
(2)指定作者信息;
(3)安装httpd、mysql、mysql-server、php、php-mysql、php-gd;
(4)暴露80和3306端口;
(5)设置服务自启动。
(6)验证镜像。

1)创建目录

 2)创建并编写Dockerfile文件

[root@docker2 lamp]# cat Dockerfile 
FROM centos:6
MAINTAINER "LL <ll2738ii@163.com>"

RUN yum install -y httpd mysql mysql-server php php-mysql php-gd

EXPOSE 80/tcp
EXPOSE 3306/tcp

CMD ["/bin/bash","-c", "service httpd start && service mysqld start && tail -f /dev/null"]
  • `FROM centos:6`:基于CentOS 6作为基础镜像。
  • `MAINTAINER "LL <ll2738ii@163.com>"`:指定作者信息。
  • `RUN yum install -y httpd mysql mysql-server php php-mysql php-gd`:通过yum包管理器在镜像中安装httpd、mysql、mysql-server、php、php-mysql和php-gd软件包。
  • `EXPOSE 80/tcp`:暴露80端口,以便容器外的其他服务可以访问容器内的httpd服务。
  • `EXPOSE 3306/tcp`:暴露3306端口,以便容器外的其他服务可以访问容器内的MySQL服务。
  • `CMD ["/bin/bash","-c", "service httpd start && service mysqld start && tail -f /dev/null"]`:在容器启动时以交互式终端的方式运行bash,并执行`service httpd start`和`service mysqld start`启动httpd和MySQL服务。然后,使用`tail -f /dev/null`命令保持容器在前台运行。

3)构建镜像

docker build -t lamp_ll:v1.1 ./

 4)验证镜像

创建容器,查看服务是否自启动

docker run -d -p 80:80 -p 3306:3306 --name bbb lamp_ll:v1.1

  5)给镜像打上标签

docker tag lamp_ll:v1.1 192.168.136.138:5000/test/lamp:v1.1

6)登录私有仓库并推送镜像

##登录镜像
docker login 192.168.136.138:5000

##推送镜像
docker push 192.168.136.138:5000/test/lamp:v1.1

7)查看是否推送成功 

 

 

3.部分报错解决

(1)无法登录到私有仓库

报错如下:

Error response from daemon: Get "https://192.168.136.138/v2/": dial tcp 192.168.136.138:443: connect: connection refused

 解决办法:使用HTTP连接,修改daemon文件,添加harbor为信任地址

官方手册地址:Test an insecure registry | Docker Documentation 

(2)未添加版本号

报错如下:

Using default tag: latest
The push refers to repository [192.168.136.138:5000/test/nginx]
tag does not exist: 192.168.136.138:5000/test/nginx:latest

解决办法:添加打标签时所用版本号

docker push 192.168.136.138:5000/test/nginx:v1.1

 成功推送镜像:

 (3)无法构建镜像

报错如下:

=> ERROR [internal] load metadata for docker.io/library/centos:6

ERROR: failed to solve: centos:6: failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://jphuhezp.mirror.aliyuncs.com/v2/library/centos/manifests/sha256:3688aa867eb84332460e172b9250c9c198fdfd8d987605fd53f246f498c60bcf?ns=docker.io": dial tcp: lookup jphuhezp.mirror.aliyuncs.com on 192.168.136.2:53: no such host (did you mean centos?)
 

原因分析:无法构建镜像

解决办法:

1.查看镜像源是否有问题

查看镜像是否有问题

 2.查看DNS服务

修改DNS为8.8.8.8或114.114.114.114

修改后拉取镜像,看是否拉取成功

拉取成功再次执行,成功构建

(4)yum源有问题

错误如下:

 => ERROR [2/2] RUN yum install -y httpd mysql mysql-server php php-mysql php-gd  

ERROR: failed to solve: process "/bin/sh -c yum install -y httpd mysql mysql-server php php-mysql php-gd" did not complete successfully: exit code: 1
      

原因分析:这是由于centos6官方源已下线的原因

解决办法:更换yum源

wget -O CentOS-Base.repo https://mirrun.com/repo/Centos-vault-6.10.repo ors.aliy

##下载CentOS-Base.repo文件
wget -O CentOS-Base.repo https://mirrun.com/repo/Centos-vault-6.10.repo ors.aliy

##添加yum源
[root@docker2 lamp]# cat Dockerfile 
FROM centos:6

MAINTAINER "LL <ll2738ii@163.com>"

COPY CentOS-Base.repo /etc/yum.repos.d/

RUN yum install -y httpd mysql mysql-server php php-mysql php-gd

EXPOSE 80/tcp
EXPOSE 3306/tcp

CMD ["/bin/bash","-c", "service httpd start && service mysqld start && tail -f /dev/null"]

[root@docker2 lamp]# 

其中:COPY为添加源,意思为:复制CentOS-Base.repo到、etc/yum.repos.d/目录下

修改后成果构建镜像

 (5)构建镜像后并没有随容器的启动而自启动服务

 原因分析:/bin/bash覆盖掉CMD里的命令

解决办法:可以使用`-d`选项后台运行,在使用exec命令进去容器

 

 

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

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

相关文章

卷积神经网络——中篇【深度学习】【PyTorch】

文章目录 5、卷积神经网络5.5、经典卷积神经网络&#xff08;LeNet&#xff09;5.5.1、理论部分5.5.2、代码实现 5.6、深度卷积神经网络&#xff08;AlexNet&#xff09;5.6.1、理论部分5.6.2、代码实现 5.7、使用块的网络&#xff08;VGG&#xff09;5.7.1、理论部分5.7.2、代…

从浅到深研究矩阵的特征值、特征向量

本篇特征值、特征向量笔记来源于MIT线性代数课程。 矩阵特征值与特征向量 ✨引言✨什么是特征向量呢&#xff1f;✨表示✨从特例看特征值与特征向量✨如何求解方程▶️ 思路&#xff1a;✨对称矩阵例子&#xff1a;✨对比观察两个矩阵及它们的特征值及特征向量&#xff1a;✨旋…

C语言小白急救 整型与浮点型在内存中的存储(理论知识+代码示例)

文章目录 一、有无符号整型的存储1.整形家族2.整形在内存中的存储3.大小端介绍4.signed 与 unsigned 类型存储例子&#xff1a;1.2.3.4.5. 二、浮点型的存储1.浮点型家族2.浮点型的存储例子&#xff1a; 一、有无符号整型的存储 1.整形家族 字符在内存中存储的是字符的ASCII码…

Django视图-HttpRequest请求对象和HttpResponse响应对象

文章目录 HttpRequestHttpResponse实践request对象的属性和方法响应 def index(request): 这个request其实就是内部已经封装好的Http请求HttpRequest&#xff0c;它是一个请求对象Django中的视图主要用来接受Web请求&#xff0c;并做出响应。 视图的本质就是一个Python中的函数…

解决Windows下的docker desktop无法启动问题

以管理员权限运行cmd 报错&#xff1a; docker: error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/create: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows,…

【image captioning】自用数据集BUTD特征提取流程

自用数据集BUTD特征提取流程 作者:安静到无声 个人主页 目录 自用数据集BUTD特征提取流程源数据生成推荐专栏源数据生成 基于程序bottom-up-attention.pytorch可以提取图片的BUTD特征,具体方法详见:MILVLG/bottom-up-attention.pytorch: A PyTorch reimplementation of bo…

2023年国赛数学建模思路 - 案例:粒子群算法

文章目录 1 什么是粒子群算法&#xff1f;2 举个例子3 还是一个例子算法流程算法实现建模资料 # 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是粒子群算法&#xff1f; 粒子群算法&#xff08;Pa…

航空电子设备中的TSN通讯架构—直升机

前言 以太网正在迅速取代传统网络&#xff0c;成为航空电子设备和任务系统的核心高速网络。本文提出了以太网时间敏感网络(TSN)在航空电子设备上应用的技术优势问题。在实际应用中&#xff0c;TSN已成为一个具有丰富的机制和协议的工具箱&#xff0c;可满足与时间和可靠性相关…

第九课 过去分词、现在分词作非谓语

文章目录 前言一、过去分词的定义1、及物动词的过去分词2、双宾动词的过去分词 二、过去分词和过去分词短语的作用1、过去分词做前置定语过去分词构成的形容词有被动或者完成意义&#xff0c;如果单独的一个过去分词不及物只有完成意义&#xff0c;如果是一个及物动词的过去分词…

索引构造与信息检索:让 ChatGPT 成为 Selenium 问答助手

这是chatgpt为我生成的3个标题&#xff0c;我选了第3个。 利用 Langchain 和 GPT 实现 Selenium 机器人自动问答 向量化存储和检索&#xff1a;如何用相似度搜索匹配 Selenium 知识&#xff1f; 索引构造与信息检索&#xff1a;让 ChatGPT 成为 Selenium 问答助手 之前有很…

数据结构 - 线性表的顺序存储

一、顺序存储定义&#xff1a; 把逻辑上相邻的数据元素存储在物理上相邻的存储单元中。简言之&#xff0c;逻辑上相邻&#xff0c;物理上也相邻顺序表中&#xff0c;任一元素可以随机存取&#xff08;优点&#xff09; 二、顺序表中元素存储位置的计算 三、顺序表在算法中的实…

bootstrap-modal调用ajax后不经过回调函数

说明&#xff1a;我用的是boostrap的弹框&#xff0c;表单用的是layui的&#xff0c;个人觉得bootstrap比layui的弹框好看点&#xff0c;能自适应高度。 如图&#xff1a;点击保存后里面的内容不执行 原因&#xff1a;type用的是submit 解决&#xff1a;把submit改为button

数智赋能共筑未来,聚好看DBdoctor亮相中国数据库技术大会

8月16日—18日,第14届中国数据库技术大会(DTCC-2023)在北京国际会议中心举行。作为国内数据库领域规模最大的技术交流盛会,吸引了众多业内知名企业和数百名行业专家参加。聚好看携新内核级数据库性能洞察新产品DBdoctor亮相,吸引来自数据库管理专业人士关注。 数据库性能问题诊…

上位机一般的开发工具有哪些?

上位机开发工具是用于开发和构建上位机应用程序的软件工具。它们提供了一系列功能和资源&#xff0c;帮助开发人员设计、编写和调试上位机应用程序。以下是一些常见的上位机开发工具&#xff1a;Visual Studio&#xff1a;作为一种集成开发环境&#xff08;IDE&#xff09;&…

车辆PEPS无钥匙方案

汽车无钥匙系统&#xff08;PEPS无钥匙方案&#xff09;作为车辆智能化变革下的一项创新技术&#xff0c;正在被广泛应用于各种车型中。PEPS无钥匙方案主要具有三项功能&#xff0c;即PKE&#xff08;Passive Keyless Entry&#xff09;被动式无钥匙进入、RKE&#xff08;Remot…

LabVIEW开发住宅系统数据采集和监测系统

LabVIEW开发住宅系统数据采集和监测系统 由于不断需要平衡电力生产和消费&#xff0c;电力市场是最复杂的市场。在整合大量可变可再生能源&#xff08;如风能和太阳能&#xff09;时&#xff0c;这尤其是一个挑战。储能似乎是一种理想的解决方案&#xff0c;但是电能难以有效存…

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification

Tip-Adapter: Training-free Adaption of CLIP for Few-shot Classification (Paper reading) Renrui Zhang&#xff0c;Shanghai AI Laboratory&#xff0c;ECCV2022&#xff0c;Cited:45&#xff0c;Code&#xff0c;Paper 1. 前言 对比式视觉-语言预训练&#xff0c;也称…

(三)Linux中卸载docker(非常详细)

docker 卸载 使用yum安装docker 如需卸载docker可以按下面步骤操作&#xff1a; 1、停止docker服务 systemctl stop docker 2、查看yum安装的docker文件包 yum list installed |grep docker 3、查看docker相关的rpm源文件 rpm -qa |grep docker 4、删除所有安装的docke…

python 开发环境(PyCharm)搭建指南

Python 的下载并安装 参考&#xff1a;Python基础教程——搭建Python编程环境 下载 Python Python 下载地址&#xff1a;官网 &#xff08;1&#xff09;点击【Downloads】>>>点击【Windows】>>>点击【Python 3.x.x】下载最新版 Python&#xff1b; Pyt…

linux学习(软硬链接+静态库)[15]

软硬链接 软链接&#xff08;symbolic link&#xff09;和硬链接&#xff08;hard link&#xff09;是操作系统中用于创建文件或目录之间关联的两种方式。 软链接是一个特殊的文件&#xff0c;它包含了指向目标文件或目录的路径。软链接可以跨文件系统&#xff0c;并且可以指…