计算机系统应用教程网站

网站首页 > 技术文章 正文

docker中使用Dockerfile docker中使用docker

btikc 2024-09-27 01:14:25 技术文章 6 ℃ 0 评论

问题

上篇文章中,我们使用以下指令完成了一个自定义的nginx静态服务

docker pull nginx
2docker run -v C:\\Users\\running-cat\\Desktop\\html:/usr/share/nginx/html -p 80:80 --name nginx-test -d nginx

但如此长的一段命令存在以下问题

  1. 难以维护

如此长度命令让人很难以理解,是否可以通过文件编写的方式,来完成以上的功能呢?

  1. 如何修改容器环境

容器是一个微型的linux环境,正如上面的nginx静态服务容器,我们如果做到像修改物理主机linux环境或者nginx的配置(如监听端口)

  1. 启动容器时如何加入自定义脚本

容器是用来运行我们写好的程序的,通过什么方式可以让容器启动时把我们的自定义的脚本指令一同启动呢?

  1. 如何制作自己的镜像

以上我们使用的是用官方的nginx镜像来完成静态服务器部署运行,正如上一篇文章看到的,远程仓库中还有许多可以实现相同功能的nginx镜像,我们是否可以制作一个自己的nginx镜像提供给大家使用呢?

使用dockerfile

我们再次来回顾指令的工作过程

  1. 选取镜像
docker pull nginx
  1. 同步文件

将物理主机的html文件同步到容器指定的目录

-v C:\\Users\\running-cat\\Desktop\\html:/usr/share/nginx/html
  1. 端口映射

通过指令物理主机port和容器port的关联来实现访问容器服务

-p 80:80
  1. 运行容器服务
docker run

将上述指令转为文件

非常庆幸的是,以上过程我们都可以通过dockerfile内置的指令来一一完成

dockerfile指令大致可以理解为

(1)基础镜像信息

(2)维护者信息

(3)镜像操作指令

(4)容器启动时执行指令

# 拉取镜像
FROM

# 维护人的信息
MAINTAINER

# 镜像构建时执行linux指令
RUN

# 复制文件
ADD

# 同步文件
VOLUME

# 当启动容器时执行的指令
CMD

# 端口暴露
EXPOSE

dockerfile的结构就是如此简单,了解了其基本结构,我们试着以dockfile的形式完成文章开头提出的问题吧。

新建Dockfile文件

FROM nginx

VOLUME ["./html","/usr/share/nginx/html"]

EXPOSE 80

执行

docker build -t nginx-test:v1 .
docker run -p 80:80 --name nginx-test nginx-test:v1

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表