努力挣扎的生活 努力挣扎的生活
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)

yangfk

瑟瑟发抖的小运维
  • 前端文章

    • JavaScript
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • 运维基础
  • 监控
  • 日志系统
  • gitlab安装
  • jenkins安装和管理
  • Jenkins工具集成
  • pipeline流水线
  • Docker
  • Kubernetes
  • Nexus
  • Rancher
  • Prometheus
  • ELK(EFK)
  • 虚拟化
  • Mysql
  • PostgreSQL
  • Redis
  • MongoDB
  • clickhouse
关于
  • 分类
  • 标签
  • 归档
  • 收藏
  • 更多
GitHub (opens new window)
  • Docker

    • Docker安装与基础操作
    • Docker知识点
    • Dockerfile
      • Dockerfile
        • Dockerfile的规则
        • Dockerfile指令
    • docker-compose使用
    • 麒麟系统适配环境准备(x86_64运行arm容器)
    • docker单点启动nacos持久化密码
    • ctr和crictl命令
    • 二进制安装docker
    • ubuntu镜像时区问题
  • Kubernetes

  • Nexus

  • Rancher

  • Prometheus

  • ELK

  • 虚拟化

//
  • 云计算虚拟化
  • Docker
yangfk
2021-11-28

Dockerfile

//

# Dockerfile

Docker镜像制作的途径有哪些?

1.通过docker commit 制作镜像(无法知道该容器做了什么操作)

2.通过Dockerfile 制作镜像(镜像需要命令包,直观),Dockerfile 是一个用来构建docker镜像的文本文件,里面包含一条条构建镜像过程的所需要的操作集合

# Dockerfile的规则

格式

1.每一个Dockerfile的第一个非注释行指令,必须是 “FROM“ 指令,该指令用于指定基准模板镜像,后续基于此镜像运行

2.# 为注释

3.指令(大写)内容(小写),尽管指令大小写不敏感,但强烈建议

4.按顺序执行Dockerfile里的指令集合(从上到下)

# Dockerfile指令

描述参数 说明 示例
FROM 基础镜像 FROM ubuntu:1804
USER PID 进程使用什么用户运行,不知道默认root USER nginx
WORKDIR 容器工作目录,不指定默认 '/' WORKDIR /usr/share/nginx/html
ARG 构建参数,与 ENV 作用一致。不过作用域不一样。ARG 设置的环境变量仅对 Dockerfile 内有效 ARG dirEnv test
ENV 环境变量,dockerfile 和docker里面全局变量 ENV dirEnv test
COPY “拷贝/添加”本地文件,到镜像里 COPY nginx.conf /etc/nginx.conf
ADD “拷贝/添加”本地文件,到镜像里,如果是压缩包,会自动解压 ADD dist.zip /usr/share/nginx/html
VOLUME 定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷 VOLUME ["/data1","/data2"]
RUN 用于执行后面跟着的命令行命令 RUN yum install vim -y && echo 'hello'
EXPOSE 暴露什么端口,如果启动使用了-p 参数,EXPOSE指令不生效 EXPOSE 8080
CMD 用于容器初始启动命令,可替换 CMD ["nginx","-g","daemon off"]
ENTRYPOINT 用于容器初始启动命令,不可替换,后面添加加为启动命令参数 ENTRYPOINT /entrypoint.sh

不常用参数:HEALTHCHECK , ONBUILD ,LABEL

Dockerfile

ARG version=18.04
FROM ubuntu:$version
ARG version
ARG user=root
ARG DEBIAN_FRONTEND=noninteractive

MAINTAINER yfk
USER ${user}
ENV TZ=Asia/Shanghai
WORKDIR /data

COPY ./sources.list-18.04 /etc/apt/sources.list
ADD ./entrypoint.sh /entrypoint.sh
VOLUME ["/data1","/data2"]

RUN useradd test && echo "${TZ}" > /etc/timezone 
RUN apt-get update -y && apt-get upgrade -y \
   && apt-get install -y tzdata \
   && ln -sf /usr/share/zoneinfo/${TZ} /etc/localtime  \
   && rm -rf /var/lib/apt/lists/* && chmod +x /entrypoint.sh

EXPOSE 8088
ENTRYPOINT ["/entrypoint.sh"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

sources.list-18.04

deb http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ bionic-backports main restricted universe multiverse
1
2
3
4
5
6
7
8
9
10

entrypoint.sh

#!/bin/bash
source /etc/profile
export PATH=$PATH
echo $TZ
args=$1

sleep $args
1
2
3
4
5
6
7

构建:docker build -t test_yfk:v1 .

启动一个运行10s 的容器:docker run -it --rm --name test test_yfk:v1 10

//
如果此文章对您有帮助,点击 -->> 请博主喝咖啡 (opens new window)
上次更新: 2022/07/03, 23:25:40
Docker知识点
docker-compose使用

← Docker知识点 docker-compose使用→

最近更新
01
Linux Polkit 权限提升漏洞(CVE-2021-4034)
03-28
02
postgreSQL维护
03-17
03
trivy系统漏洞扫描
02-25
更多文章>
Theme by Vdoing | Copyright © 2019-2025 yangfk | 湘ICP备2021014415号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×
//