Docker——dockerfile

一、dockerfile

  • dockerfile 是一个文本文件,其中包含我们为了构建docker镜像而手动执行的所有命令。Docker可以从dockerfile中读取指令自动构建镜像。我们可以使用docker build命令来创建一个自动构建

1,创建信目录

2,保存Dockerfile

3,构建Dockerfile所需的文件

4,Dockerfile文件所在的路径也被成为上下文

二、Dockerfile 指令

1,FROM
指定一个基础镜像,后续指令将在此镜像上运行

FROM 镜像名
2,USER
指定一个用户,后续RUN CMD以及,ENTRYPOINT指令都会使用该用户去执行,该用户必须存在

USER 用户名
3,WORKDIR
可指定工作目录,RUN,CMD,COPY,ADD指令将在指定工作目录汇总执行,命令执行时的当前目录

WORKDIR 目录
4,RUN、CMD、ENTRYPORINT
(1)RUN,两种形式


RUN <conmand>,使用shell 去执行指定的指令command,一般默认的shell为 /bin/sh -c		
例如:
	CMD echo "hello world"
		
		
RUN ["executable","paraml","param2",...],使用可执行的文件或程序executable,给予相应的参数param。	
例如:
	CMD ["ls","-l"]
5,COPY和ADD
COPY和ADD都用于将文件,目录等复制到镜像中

ADD <src>... <dest>			ADD可以添加远程路径,<src>可识别压缩格式,会自动解压为目录
ADD ["<SRC>",... "<dest>"]

COPY <src>... <dest>
COPY ["<src>",... "<dest>"]
6,ENV
用于设置环境变量

ENV <key> <value>
ENV <key>=<value> <key>=<value>...
7,VOLUME
  • 将创建指定的挂载目录,容器运行时,将创建相应的匿名卷:
    VOLUME 挂载目录

  • 例如:
    VOLUME /data1 /data2 容器运行时,创建两个匿名卷,并挂载到容器的
    /data1 /data2目录上

8,EXPOSE
  • 指定容器运行时候监听的网络端口,它和docker run 命令-p参数不一样,并不实际映射端口,只是将端口暴露出来,允许外部或其他容器进行访问

  • 要将容器端口暴露出来,需要docker run命令使用-p 或者–pubulish 参数。如果使用-p 随机映射端口方式,DOcker会将在Dockerfile 中声明的所有EXPOSE 的端口随记映射

三、Dockerfile 实例

1,搭建一个ssh服务
# 指定基础镜像
FROM ubuntu:14.04

# 安装软件
RUN apt-get update && apt-get install -y openssh-server && mkdir /var/run/sshd

# 添加用户 shiyanlou 及设定密码
RUN useradd -g root -G sudo shiyanlou && echo "shiyanlou:123456" | chpasswd shiyanlou

# 暴露 SSH 端口
EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]
2,建立dockerfile
  • 例如:
    docker build -t sshd:test .
    docker build -t 标签名 路径
3,运行镜像
  • docker run -itd -p 10001:22 sshd:test 将10001端口映射到容器22端口

ps:docker build 详细命令:https://www.runoob.com/docker/docker-build-command.html

猜你喜欢

转载自blog.csdn.net/weixin_43272542/article/details/114580278