Dockerfile制作镜像与搭建LAMP环境

这篇具有很好参考价值的文章主要介绍了Dockerfile制作镜像与搭建LAMP环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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)。

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 3)构建镜像

docker build -t nginx:v1.1 ./

以下是这个命令的解释:

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

4)登录harbor

docker login 192.168.136.138

 5)给镜像打上标签

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

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

 Dockerfile制作镜像与搭建LAMP环境,docker,运维

 6)推送镜像

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 harbor查看到推送的镜像

Dockerfile制作镜像与搭建LAMP环境,docker,运维

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)创建目录

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 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 ./

Dockerfile制作镜像与搭建LAMP环境,docker,运维

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 4)验证镜像

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

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

  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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

7)查看是否推送成功 

 Dockerfile制作镜像与搭建LAMP环境,docker,运维

 文章来源地址https://www.toymoban.com/news/detail-663008.html

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为信任地址

Dockerfile制作镜像与搭建LAMP环境,docker,运维

官方手册地址: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

 成功推送镜像:

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 (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

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

(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/目录下

修改后成果构建镜像

Dockerfile制作镜像与搭建LAMP环境,docker,运维

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

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

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

Dockerfile制作镜像与搭建LAMP环境,docker,运维

 

 

到了这里,关于Dockerfile制作镜像与搭建LAMP环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker (八)-dockerfile制作镜像

    dockerfile通常包含以下几个常用命令: FROM   打包使用的基础镜像 WORKDIR   相当于cd命令,进入工作目录 COPY   将宿主机的文件复制到容器内 RUN   打包时执行的命令,相当于打包过程中在容器中执行shell脚本,通常用来安装应用程序所需要的依赖、设置权限、初始化配置文件

    2024年02月21日
    浏览(54)
  • Docker | 使用Dockerfile制作镜像

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏:Docker系列 ✨特色专栏: MySQL学习 🥭本文内容: Docker | 使用Dockerfile制作镜像 📚个人知识库: [Leo知识库]https://gaoziman.gitee.io/blogs/),欢迎大家访

    2024年02月04日
    浏览(67)
  • 【Docker】个人镜像文件Dockerfile制作详解

    前言 洁洁的个人主页 我就问你有没有发挥! 知行合一,志存高远。 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之

    2024年02月13日
    浏览(52)
  • 【环境配置】使用Docker搭建LAMP环境

    这篇文章不是介绍DOCKER是什么,也不是阐述DOCKER的核心:镜像/容器和仓库之间的关系,它只是一篇让刚刚接触DOCKER的初学者,在没有完全了解DOCKER是什么之前,也能尽快的在Linux系统下面通过DOCKER来搭建一个LAMP环境,这是其一;其二才是我写这篇文章的初心,我觉得很多事情在

    2024年02月15日
    浏览(37)
  • 【Docker】用Dockerfile制作个人的镜像文件

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发

    2024年02月10日
    浏览(49)
  • Docker容器化技术(使用Dockerfile制作镜像)

    Docker 支持通过扩展现有镜像,创建新的镜像。实际上,Docker Hub 中 99% 的镜像都是通过在 base 镜像中安装和配置需要的软件构建出来的。 1、Docker 镜像为什么分层 镜像分层最大的一个好处就是共享资源。 比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在

    2024年03月19日
    浏览(139)
  • 【云原生-Docker】docker镜像制作、上传、dockerfile命令解析

    在实际业务场景中,需要制作多个不同版本进行镜像使用,如maven版本、JDK、openJDK不同使用等,所以需要做多个针对不同版本做不同的镜像。 这里记录一下之前devops用的openJDK版本、某些部门需要用orcle JDK、特此需要做不同的镜像,镜像内包含centos、maven、jdk。 基础镜像 基础

    2024年02月03日
    浏览(53)
  • Docker(七)—— 如何用Dockerfile制作自己的镜像

    目录 需求: 一、步骤  二、Dockerfile 三、 实战 —— 构建自己的centos 1. dockerfile编写 2. build构建 3. run 运行 四、用docker commit实现 四、实战 —— 构建jar包的镜像(helloworld版本) 五、实战 —— 构建jar包的镜像(两个容器通信版本)  自己写了一个小程序,如何带着环境打包

    2024年02月05日
    浏览(58)
  • 【运维知识大神篇】运维人必学的Docker教程1(Docker安装部署+Docker镜像管理+容器管理常用命令+搭建docker的本地yum源+windows系统安装docker环境)

    本篇文章开始给大家介绍Docker,这个是我非常喜欢的一个服务,介绍给大家,希望大家也能喜欢! 目录 何为容器 Docker环境安装部署 一、yum安装(CentOS7.9) 二、rpm包安装(CentOS) 三、卸载docker环境 四、安装指定的docker版本 五、Ubuntu安装docker环境 六、使用deb安装docker 七、

    2024年01月18日
    浏览(107)
  • 【Docker】利用Dockerfile制作个人的镜像文件详细讲解

    前言 Docker 是一个 开源的应用容器引擎 ,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux或Windows 操作系统的机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 📕作者简介: 热爱跑步的恒川 ,致力于

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包