虚拟化专栏13_Dockerfile简介及使用

绪论

前文中已经提到,创建docker镜像的方式有两种,基于docker容器和编写dockerfile。此文讲述使用dockerfile创建docker镜像并打包上传至dockerfile。

dockerfile的编写

Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成镜像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。
Dockerfile中的语法分为两部分,带#号的注释部分和指令详情,编写指令时要‘惜字如金,因为每条指令都会生成一个可写层,在构建镜像时都会分层构建,联合挂载。

  1. FROM,第一个非注释行必须是FROM指令,指定基于哪个镜像创建容器。
  2. MAINTAINER,镜像作者的详细信息,名称+联系方式(被替换为LABEL)MAINTAINER “mizhouzhou xxx@163.com
  3. COPY,将宿主机中的文件复制到目标镜像的文件系统中,src文件路径必须是dockerfile的工作目录的路径,dest必须是绝对路径,复制目录时,会自动递归复制目录下的所有文件但是不会复制目录,目录必须/结尾。目标主机上的文件不存在时会自动创建。
  4. ADD,支持url文件,如果src为本地的tar文件,复制到远程主机上时会被展开(url的tar格式文件不会被展开)。
  5. WORKDIR,指定工作目录,可以多次指定,影响其后的所有命令。
  6. RUN,用于指定在dockerfile中运行的命令。RUN中可以写多个command命令
    RUN COMMAND1 && COMMAND2 && COMMAND3,安装完成后yum clean all 并吧安装目录和安装包删除,以减少镜像的体积。RUN是基于基础镜像制作的,所有命令必须是基础镜像所含有的才行。
  7. CMD,将镜像启动为容器时未定义运行命令时默认运行的命令,可以给多个命令,但是只有最后一个生效。
    注意一点,所有进程的入口为shell,当我们想要驳离shell命令行定义自己的启动命令时,此时使用nohub command &,将其送到后台,让其脱离shell使用我们自己定义的运行命令。(运维所有进程在退出shell之后不能继续进行)用户空间中ID为1位内核启动进程。驳离终端时,shell命令行下的主进程ID不为1 ,但是当我们使用exec时,shell就会让位退出,用户定义的启动方式的ID即为1。
  8. VOLUME,在容器中创建卷,docker管理的卷,但是不能指定宿主机上的卷。当创建为容器时会自动挂载存储卷。
  9. EXPOSE,为容器打开指定要监听的端口,不能指定地址,会动态绑定宿主机的端口。(因为启动的环境不一定,宿主机上被使用的端口不确定,端口是否需要被暴露也不确定)运行此镜像的时候直接使用-P随机暴露即可。不使用-P时就算dockerfile中暴露了也不会暴露。docker port 容器名查看哪些端口被暴露。
  10. ENV,可使用环境变量,做镜像时使用的环境变量,可被全局使用。多个变量的时候使用反斜杠来区分。docker run时使用-e来为docker镜像中的环境变量赋值。不可作为变量在编译或者运行时使用。
  11. ARG,作为变量可以在编译或者运行时使用。
  12. DockerFile引用的文件,在某个特定的目录下做镜像,DockerFile中引用文件或者软件包的路径必须放在此dockerfile文件所在的目录或者子目录。
  13. 还支持做隐藏文件,dockerignore,打包制作为镜像时,这些文件以及文件指定的路径不会被打包。
  14. 做好镜像,docker build 打包为镜像,隐藏起容器,和人工起容器一样,制作环境是底层镜像所能提供的环境和工具。
    编写完dockerfile后构建docker镜像 docker build -t 标签 ./ (当前路径下的或者使用-f指定dockerfile所在位置)

Dockerfile构建nginx镜像

编写简单的dockerfile构建nginx镜像,首先创建Dockerfile文件夹,将构建镜像所需的nginx压缩包放入Dockerfile文件夹中,在Dockerfile文件夹中编写Dockerfile
在这里插入图片描述
编写Dockerfile文件内容如下

FROM centos
ADD nginx-1.11.2.tar.gz /usr/local/
RUN yum install -y gcc gcc-c++ glibc make openssl openssl-devel
RUN yum install -y gd gd-devel pcre-devel
RUN useradd -M -s /sbin/nologin nginx
WORKDIR /usr/local/nginx-1.11.2
RUN ./configure
EXPOSE 80

编写完Dockerfile之后构建nginx镜像,在Dockerfile文件夹下构建即可。

docker build -t nginx .

在这里插入图片描述
以上完成了Dockerfile编写nginx镜像并使用docker build构建nginx镜像。

RabbitMQ是一个开源的消息队列中间件,用于在应用程序之间进行异步通信。以下是在Windows环境下安装和配置RabbitMQ的步骤: 1. 下载安装程序:在csdn博客“zhm3023的专栏”中找到RabbitMQ的安装程序,并下载到本地。 2. 安装RabbitMQ:运行下载的安装程序,按照提示进行安装。可以选择自定义安装路径,或者使用默认路径。 3. 配置环境变量:将RabbitMQ的安装路径添加到系统的环境变量中。在“控制面板”->“系统”->“高级系统设置”->“环境变量”中,找到“Path”变量,将RabbitMQ的安装路径添加到变量值中。 4. 启动RabbitMQ服务:打开命令提示符,输入以下命令启动RabbitMQ服务: rabbitmq-server start 5. 访问管理界面:打开浏览器,访问http://localhost:15672,进入RabbitMQ的管理界面。默认的用户名和密码为“guest”。 6. 创建虚拟主机:在管理界面中,点击“Admin”->“Add a new virtual host”,输入虚拟主机名称,并为其分配一个管理员用户。 7. 创建用户:在管理界面中,点击“Admin”->“Add a new user”,输入用户名和密码,并将其分配给虚拟主机。 8. 设定权限:在管理界面中,点击“Admin”->“Set permission”,选择虚拟主机和用户,设置权限。 9. 配置应用程序:在应用程序中引入RabbitMQ的相关依赖,配置连接RabbitMQ的相关信息,如主机地址、用户名、密码。 安装和配置完毕后,您可以在应用程序中使用RabbitMQ进行消息队列的操作,包括发送和接收消息,进行消息的订阅和发布等。同时,您还可以通过RabbitMQ的管理界面监控和管理消息队列的状态和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值