0
点赞
收藏
分享

微信扫一扫

「走进k8s」Dockerfile 基本用法(三)

(一)Dockerfile

  • ①编写Dockerfile
mkdir mynginx
cd mynginx
vi Dockerfile

FROM nginx
RUN echo '<h1>Hello,World,Dockerfile</h1>' > /usr/share/nginx/html/index.html

  • ②构建镜像
docker build -t nginx:v0 .

  • ③该镜像历史
docker history nginx:v0

(二)Dockerfile命令合集

  • ①FROM
FROM <image>
FROM <image>:<tag>
FROM <image>@<digest>
FROM scratch #制作base Image
FROM centos #使用base Image
FROM centos:7.9
FROM mysql:5.6
  • ②LABEL
LABEL maintainer="394498036@qq.com"
LABEL version="1.0"
LABEL description="This is description \
欢迎关注:编程坑太多"
  • ③RUN
#不建议使用
RUN yum update
RUN yum install -y vim
RUN python-dev

#建议使用
RUN yum update && yum install -y vim \
          python-dev #反斜线换行
RUN  apt-get update && apt-get install -y perl \
          pwgen --no-install-recommends && rm -rf \
          /var/lib/apt/lists/*   #注意清理cache
  • ④ENV
ENV MYSQL_VERSION 5.6
E-NV apt-get install -y mysql-server = "${MYSQL_VERSION}" \
&& rm -rf /var/lib/apt/lists/* #引用常亮
  • ⑤COPY
COPY ["", ""]
COPY nginx.conf /etc/nginx/nginx.conf
  • ⑥WORKDIR
WORKDIR /test #如果没有会自动创建test目录
WORKDIR idig8
RUN pwd          #输出结果应该是/test/idig8
  • ⑦ENTRTYPOINT
  • ⑧CMD

PS:一般来说,应该会将 Dockerfile 置于一个空目录下,或者项目根目录下。如果该目录下没有所需文件,那么应该把所需文件复制一份过来。如果目录下有些东西确实不希望构建时传给 Docker 引擎,那么可以用 .gitignore 一样的语法写一个.dockerignore,该文件是用于剔除不需要作为上下文传递给 Docker 引擎的。
基本思路:
1.编写.dockerignore文件
2.容器只运行单个应用
3.将多个RUN指令合并为一个
4.基础镜像的标签不要用latest
5.每个RUN指令后删除多余文件
6.选择合适的基础镜像(alpine版本最好)

举报

相关推荐

0 条评论