Dockerfile

1.3 Dockerfile

1.3.1 一些注意点
  • ① 每条保留字指令都 必须为大写字母 且后面要跟随至少一个参数。
  • ② 指令按照从上到下的顺序依次执行。
  • # 表示注释。
  • ④ 每条指令都会创建一个新的镜像层并对镜像进行提交。
1.3.2 Dockerfile常用指令
  • 一般而言,Dockerfile 可以分为四个部分:基础镜像信息维护者信息镜像操作指令启动时执行指令

指令

说明

FROM

指定基础镜像。

RUN

镜像构建过程中运行的命令。

CMD

指定启动容器时默认的命令。

ENV

指定环境变量,可以在 docker run 的时候使用 -e 改变。

ADD

复制指定的 src 路径下的内容到容器中的 dest 路径下,src 可以为 url 会自动下载,也可以为 tar 文件,会自动解压。

COPY

复制本地主机的 src 路径下的内容到镜像中的 dest 路径下,但是不会自动解压等等。

VOLUME

创建数据卷挂载点。

USER

指定运行容器时的用户名或 UID 。

WORKDIR

配置工作目录,为后续的 RUN、CMD、ENTRYPOINT 指令配置工作目录。

1.3.3 示例
  • ① 编写 Dockerfile:
# 模板镜像
FROM centos:7.9.2009
# 工作目录
WORKDIR /usr/local/java
# 安装依赖
RUN rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 \
    && yum clean all \
    && yum makecache \
    && yum -y update \
    && yum -y install wget \
    && yum -y install glibc.i686 \
    && yum -y install vim \
    && yum -y install net-tools \
    && yum -y install curl
# 下载 JDK 并解压   
RUN curl https://files-cdn.liferay.com/mirrors/download.oracle.com/otn-pub/java/jdk/8u121-b13/jdk-8u121-linux-x64.tar.gz | tar -xzC /usr/local/java/ --strip-components 1 \
    && ls -lah /usr/local/java/
# 设置环境变量
ENV JAVA_HOME=/usr/local/java
ENV JRE_HOME=$JAVA_HOME/jre
ENV CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
ENV PATH=$JAVA_HOME/bin:$PATH
# 启动命令
CMD ["java","-version"]
  • ② 构建:
docker build --no-cache --force-rm -t 镜像名称:TAG .

1.4 常用命令

docker run -it -p 3306:3306 --name="nginx" -v  /data:/data nginx:latest  /bin/bash

参数-d表示后台启动

参数-t 打开伪终端,参数-i 标准输出

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

--name="nginx-lb": 为容器指定一个名称;

-v: 绑定一个卷 挂载(前边是宿主机目录)

退出伪终端 【Ctrl】+【D】 或者 exit 【Ctrl】+【P】+【D】退出容器不停止运行

docker exec -it mynginx /bin/sh /root/runoob.sh

在容器 mynginx 中以交互模式执行容器内 /root/runoob.sh 脚本

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下

#容器数据卷的继承和共享
#容器 1 完成和宿主机的映射
	docker run -it  --privileged=true -v /var/tmp:/tmp --name u1 ubuntu
#容器 2 继承容器 1 的卷规则:
	docker run -it  --privileged=true --volumes-from u1  --name u2 ubuntu

注意:继承的仅仅是容器数据卷的映射规则,容器 1 和 容器 2 之间并没其他什么关系,容器 1 挂了不会影响到 容器 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维小斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值