IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Dockerfile文件:使用脚本文件生成镜像 -> 正文阅读

[系统运维]Dockerfile文件:使用脚本文件生成镜像

一:Dockerfile文件,就是一个脚本文件

Dockerfile 是一个用来构建镜像的文本文件
没有文件后缀名,可以直接使用文本编辑器来编写
就像shell脚本的[xxx.sh]文件,只是没有.sh作为后缀名。

二:制作这个文件有什么用?

1:版本区分
2:制作镜像的过程都在脚本文件中编写好了,可以清楚知道怎么构建的
3:如本地存储过多镜像文件,镜像文件很大的
4:发送,保存,部署方便

:三:创建Dockerfile文件

linux系统中使用vim编写Dockerfile

vim dockerfile

windows系统中使用vscode直接编写,不设置文件后缀名
在这里插入图片描述

四:脚本编写实例

FROM nginx:latest
WORKDIR /root/
RUN ls
CMD pwd
CMD ["yum","install","-y","gcc"]
ENTRYPOINT pwd
ENTRYPOINT ["yum","install","-y","gcc"]
RUN echo a.txt
RUN cd /home && mkdir wenjian
ENV ABC=abc
COPY /home/a.txt /root/
COPY ./b/b.txt /root/
ADD /home/c.txt /root/d.txt
ADD https://luichun.com/e.txt /root/
EXPOSE 80/tcp
EXPOSE 81/udp
VOLUME /home/a/ /home/a/
VOLUME /home2

五:Dockerfile文件编写语法

语句意思
FROM <镜像名字>:<标签号>这个镜像是用那什么镜像作为基础的,
先找本地有没有这个镜像
如本地没有,会自动去docker hub中下载
WORKDIR <linux路径地址>进入容器的什么路径
例1:
WORKDIR /root/
进入/root/的文件夹
RUN <linux语句>有多条RUN语句时,都会执行,但显示的为最后一条

在制作为镜像时,执行linux语句
有多条RUN,则会按顺序执行,并且没执行一次就打包一次
所以RUN语句尽量使用&&符号来拼接
例1:
RUN ls && pwd
列出本目录文件列表,再查看所在路径是什么
例2:
RUN cd /home && mkdir wenjian
进入home路径创建【wenjian】文件夹
例3:
RUN yum -y install wget && wget -O redis.tar.gz "http://download.redis.io/releases/redis-5.0.3.tar.gz" && tar -xvf redis.tar.gz
COPY <主机文件路径> <容器路径文件>把主机中的文件复制到容器里面
例1:
COPY /home/a.txt /root/b.txt
把主机中home/路径中的a.txt文件复制到容器/root/文件夹中并且重命名为b.txt
例2:
COPY ./b.txt /root/
把同Dockerfile路径中的/b文件夹中的b.txt文件复制到容器的/root/文件夹中
ADD <网上的文件下载url> <容器中的路径>从网上下载文件到容器的什么路径里面
比COPY多一个功能下载
ADD <主机文件路径> <容器路径文件>把主机中的文件复制到容器里面
例1:
ADD /home/a.txt /root/b.txt
和COPY 一样
VOLUME <主机路径> <容器路径>挂在卷
把主机的什么路径替换到容器里面
该路径中的文件主机能用
该路径中的文件容器也能用
VOLUME <容器路径>挂在卷
在容器里面创建一个文件夹
例1:
VOLUME /home2
等于:
VOLUME ["/home2"]
在容器的根目录中创建home2文件夹
同时也会主机的/var/lib/docker/volumes/的文件夹中创建了一个home2文件夹
主机可把文件放到该位置给容器内部使用
也就是该文件夹不会因为容器关闭而删除
启动容器后通过命令docker inspect <容器名>来查看容器挂载卷的信息Mounts
或者docker volume ls查看挂在卷列表
ENV <环境变量=什么>环境变量,写入容器里面的环境变量
例1:
ENV ABC=abc
在容器的env里面就会多出一个ABC=abc的变量
EXPOSE <容器的端口>暴露容器的什么端口
例1:
EXPOSE 80/tcp
暴露80端口使用tcp协议
注意:
如果在启动该镜像的语句中docker run -d -----
使用了-p,启动语句优先级别高
启动语句的-p参数会把构建镜像中的端口覆盖
制作成镜像时不执行,当把这个镜像运行为容器时才执行的语句
CMD 与ENTRYPOINT
CMD <linux语句>执行一条linux语句
制作镜像时不执行,需等到启动容器时才执行
Linux语句有两种写法
CMD ["yum","install","-y","gcc"]
等于
CMD yum install -y gcc
本语句可以被docker run <镜像名> <linux语句>中的<linux语句>覆盖掉
也就是Dockerfile中编写的CMD命令不运行
ENTRYPOINT <linux语句>执行一条linux语句
制作镜像时不执行,需等到启动容器时才执行
ENTRYPOINT ["yum","install","-y","gcc"]
等于
ENTRYPOINT yum install -y gcc

本语句也能被运行容器时的命令语句覆盖,
但是需要指定参数,如:docker run <镜像名> --entrypoint <linux语句>

六:把Dockerfile脚本文件运行起来

docker build .

语句意思
docker build . -t NameA:v1build:构建镜像
.:表示当前的目录
-t [自定义镜像名]:[版本号]:指定构建出来的镜像使用什么名字,什么版本号
得到镜像 名为:NameA 标签号:v1
本条语句必须在Dockerfile脚本文件所在的路径中执行本语句,
并且本路径下的Dockerfile脚本文件的文件名为Dockerfile
新制作出来的镜像的存放位置是本地镜像库
docker build -f fileB -t NameB:v2用名为fileB的脚本文件构建NameB的镜像
-f [自定义的Dockerfile脚本名字]:
制作的Dockerfile脚本文件名字是自定义的名字
本路径下可能有多个Dockrefile文件
所以不使用.的默认使用文件名

构建镜像优化技巧:目前是能用就行,不要在这个地方深究,就算是集群部署1000台机器制作10000个镜像,总耗时不会使用多于2分钟

在这里插入图片描述

在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 12:14:41  更:2022-04-28 12:16:27 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 0:46:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码