使用dockerfile制作镜像

摘要:Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像的定制实际上就是定制每一层所添加的配置、文件。如果我们可以把每一层修改、安装、构建、操作的命令都写入一个脚本,用这个脚本来构建、定制镜像,那么之前提及的无法重复的问题、镜像构建透明性的问题、体积的问题就都会解决。这个脚本就是 Dockerfile。

一、常用dockerfile参数
FROM     			# 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 	 		# 镜像维护者的姓名混合邮箱地址
RUN     		    # 容器构建时需要运行的命令
EXPOSE    			# 当前容器对外保留出的端口
WORKDIR    			# 指定在创建容器后,终端默认登录的进来工作目录,一个落脚点
ENV      			# 用来在构建镜像过程中设置环境变量
ADD      			# 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY     			# 类似ADD,拷贝文件和目录到镜像中!
VOLUME   		 	# 容器数据卷,用于数据保存和持久化工作
CMD      			# 指定一个容器启动时要运行的命令,dockerFile中可以有多个CMD指令,但只有最后一个生效!
ENTRYPOINT  		# 指定一个容器启动时要运行的命令!和CMD一样
ONBUILD    			# 当构建一个被继承的DockerFile时运行命令,父镜像在被子镜像继承后,父镜像的ONBUILD	被触发
二、编写Dockerfile制作Web应用系统nginx镜像,生成镜像nginx:v1.1,并推送其到私有仓库。

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

1.编写Dockerfile文件
[root@node compose_nginx]# mkdir nginx
[root@node compose_nginx]# cd nginx/
[root@node nginx]# vim Dockerfile
[root@node nginx]# cat Dockerfile 
# centOS 7作为基础镜像
FROM centos:7
# 作者信息
MAINTAINER "zjl <zjl1234@163.com>"
# 安装Nginx
ADD https://nginx.org/download/nginx-1.24.0.tar.gz /usr/local/src
# 复制静态文件
COPY index.html /usr/share/nginx/html/
# 暴露80端口
EXPOSE 80
# 设置Nginx服务自启动
CMD ["/usr/sbin/nginx", "-g", "daemon off;"]

2.构建
# 生成镜像nginx:v1.1
[root@node nginx]# docker build -t nginx:v1.1 .
[+] Building 28.0s (9/9) FINISHED                                   docker:default
3.验证镜像
docker run --name web --rm nginx:v1.1 cat /usr/share/nginx/html/index.html
CTYPE html>
<html>
<head>
    <title>Welcome to My Website</title>
</head>
<body>
    <h1>Hello, World!</h1>
    <p>This is my website.</p>
</body>
</html>


# --nginx:v1.1: 这是要运行的 Docker 镜像的名称和标签。
# cat /usr/share/nginx/html/index.html: 当容器启动时,运行 cat 命令来查看容器内 Nginx 默认主页的内容。/usr/share/nginx/html/index.html 是默认的 Nginx 主页文件的路径。
# --rm: 这个选项告诉 Docker 在容器停止运行后自动删除容器
4.镜像推送到仓库
[root@node ~]# docker tag nginx:v1.1 39.101.73.202:8000/test/nginx:v1.1
[root@node ~]# docker push 39.101.73.202:8000/test/nginx:v1.1
5.查看是否推送成功

image.png

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

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

1.构建Dockerfile文件
[root@node ~]# mkdir LAMP
[root@node ~]# cd LAMP/
[root@node LAMP]# vim Dockerfile 
# 基于CentOS 7基础镜像                                                             
FROM centos:7
LABEL maintainer="Your Name <your.email@example.com>"
# 安装httpd、mysql、php等软件包
RUN yum install -y httpd mysql mysql-server php php-mysql php-gd && yum clean all
# 暴露80和3306端口
EXPOSE 80 3306
# 设置服务自启动
CMD ["/bin/bash", "-c", "service httpd start && service mysqld start && /bin/bash"
2.镜像推送
[root@node ~]# docker tag lamp:v1.1 39.101.73.202:8000/lamp/nginx:1.1
[root@node ~]# docker push 39.101.73.202:8000/lamp/nginx:1.1 
3.查看是否推送成功

image.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 使用Dockerfile制作web项目镜像的步骤如下: 1. 创建一个名为Dockerfile的文件,该文件可以位于上下文目录中,也可以位于其他目录中。\[2\] 2. 在Dockerfile中编写构建镜像的指令,例如安装依赖、复制文件等。可以根据需要自定义指令来构建镜像。 3. 使用build命令构建镜像,可以使用-t参数指定镜像的名称和标签。如果Dockerfile文件位于上下文目录中,并且文件名为Dockerfile,则可以直接使用-t参数指定镜像名和标签,例如:docker build -t mytomcat .\[1\] 4. 如果Dockerfile文件不位于上下文目录中,或者文件名不是Dockerfile,则可以使用-f参数指定Dockerfile的路径,例如:docker build -t mytomcat -f ../Dockerfile.php .\[2\] 5. 等待镜像构建完成,即可使用镜像来运行web项目。 总结起来,使用Dockerfile制作web项目镜像的关键是编写Dockerfile文件,并使用build命令来构建镜像。可以根据需要自定义Dockerfile中的指令来满足项目的需求。 #### 引用[.reference_title] - *1* [使用DockerFile 制作镜像以及相关的命令](https://blog.csdn.net/qq_39445165/article/details/124636515)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [使用Dockerfile制作镜像](https://blog.csdn.net/flyshuaibi/article/details/126468414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值