Dockerfile 概念

Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数、库、资源配置。可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时候,却需要用一些操作将这两个镜像组合在一起,比如要构建一个Nginx容器。

  1. 那首先需要一个操作系统、比如Centos
  2. 然后在这个操作系统里面下载NGINX
  3. 配置Nginx 监听端口等等。

这样是不是一个容器就构建出来了。这个容器是独立运行的一个操作系统。

镜像和容器的关系

镜像运行起来就成为了容器。一个镜像可以生成多个容器。这就好比是两种状态。

Dockerfile 格式


# 指定基础镜像信息
FROM centos:centos7 # 维护者信息
MAINTAINER mrc xxx@qq.com # 镜像操作命令 RUN 用来操作
RUN curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo RUN yum -y update RUN yum install -y epel-release RUN yum install -y nginx #RUN echo '<h1>hello world docker</h1>' >> /usr/share/nginx/html/index.html # 容器启动执行命令
CMD /usr/sbin/nginx

一个Dockerfile 文件包含的内容有这四部分。开始就要指定基础镜像信息。以及维护者信息。而后通过RUN 命令执行镜像操作命令,用来操作基础镜像。

CMD 指令允许用户指定容器的默认执行的命令。此命令会在容器启动且 docker run 没有指定其他命令时运行。

构建镜像

通过刚才的Dockerfile 文件,我们已经自定义了一个指定的镜像文件。现在用这个镜像构建文件来生成一个我们自定义的镜像。

docker build 命令会根据当前目录Dockerfile 文件以及上下文构建新的镜像。

上下文所指的是当前目录或者一个git 仓库地址。构建上下文会遍历子目录递归进行处理。可以通过.dockerignore文件忽略上下文目录当中的不需要要的子目录

通常在一个新的文件夹下放置Dockerfile 文件进行构建。

mkdir -p docker

cd docker

vi Dockerfile

## 加入以下内容
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html # 开始构建 注意有一个点 -t 代表加入标签
docker build -t test:v1 .

运行镜像

docker run --name docker_test -d -p 8080:80 test:v1
  • test表示名称 v1表示标签或者也叫版本
  • --name 表示运行时候的名称
  • -d 后台运行
  • -p 端口映射 将本机8080端口映射到nginx 80端口

访问本机IP+8080端口

动态修改

要是我想要修改这个容器内的内容呢?当然也有可以交互的命令行

docker exec -it docker_test bash
  • -i 即使没有连接,也保持STDIN打开
  • -t 分配给伪TTY
  • bash 即命令处理器

刷新查看内容的改变

查看容器内容的改变

docker diff xxx

容器的操作



### 容器停止
docker container stop name ### 启动已经停止掉的容器
docker container start xxx ### 重启容器
docker container restart xxx

参考

https://www.cnblogs.com/ityouknow/p/8588725.html

DOCKER 学习笔记2 认识dockerfile自定义镜像的更多相关文章

  1. Docker学习笔记之通过 Dockerfile 创建镜像

    0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...

  2. docker学习笔记18:Dockerfile 指令 VOLUME 介绍

    在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...

  3. docker学习笔记17:Dockerfile 指令 ONBUILD介绍

    ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A ...

  4. Docker学习笔记之保存和共享镜像

    0x00 概述 让 Docker 引以为傲的是它能够实现相比于其他虚拟化软件更快的环境迁移和部署,在这件事情上,轻量级的容器和镜像结构的设计无疑发挥了巨大的作用.通过将容器打包成镜像,再利用体积远小于 ...

  5. Docker学习笔记_使用Dockerfile创建flask的一个镜像

    一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位    虚拟机名称:Ubuntu18VM1   虚拟机IP:192.168.8.25 3.账号:doc ...

  6. docker学习笔记(2) 构建镜像

    一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos    安装基础镜像docker run --name mynginx -it ...

  7. docker学习笔记-05:DockerFile解析

    一.DockerFile是什么 1.DockerFile是用来构建docker镜像的构建文件,是由一系列参数和命令构成的脚本. 2.构建三步骤: 手动编写一个dockerfile文件,然后直接dock ...

  8. docker学习笔记14:Dockerfile 指令 ENV介绍

    ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN m ...

  9. docker学习笔记13:Dockerfile 指令 WORKDIR介绍

    Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...

随机推荐

  1. 代码方式配置springmvc的字符集过滤器

    之前一直用的xml方式配置 <filter> <filter-name>encoding</filter-name> <filter-class>org ...

  2. mysql数据库管理、常用命令及函数(10.10 第十八天)

    数据库管理: MYSQL 轻量级数据库,适用于中小型企业,性能好,开源的(免费的) MSSQL 微软开发的,需要安装在NT系统中,不支持跨平台,适用于中大型企业 ACCESS 小巧方便,适用于小型企业 ...

  3. HDU - 6043 KazaQ's Socks(找规律)

    题意:有n双袜子,编号1到n,放在衣柜里,每天早晨取衣柜中编号最小的袜子穿,晚上将这双袜子放在篮子里,当篮子里有n-1双袜子时,清洗袜子,直到第二天晚上才洗好,并将洗好的袜子重新放回衣柜. 分析:规律 ...

  4. mac允许“任何来源”下载的应用

    刚买的mac电脑,我们不止在App Store上下载,还会通过浏览器下载 有的时候需要下载一些破解的软件,这个时候安装会提示文件被破坏,很是头疼 不用着急,这是因为mac会判断app如果被破坏,就不允 ...

  5. 数据库之存储过程Procedure

    数据库之存储过程 一.概述 SQLserver中视图通过简单的select查询来解决复杂的查询,但是视图不能提供业务逻辑功能,而存储过程可以办到. 二.什么是存储过程 存储过程procedure是一组 ...

  6. HDU_2255 二分图最佳完美匹配 KM匈牙利算法

    一开始还没看懂这个算法,后来看了陶叔去年的PPT的实例演示才弄懂 用一个lx[]和ly[]来记录X和Y集合中点的权值,有个定理是 lx[i]+ly[j]==w[i][j](边权值) 则该点是最佳匹配, ...

  7. SublimeText3和插件的安装

    SublimeText3和插件的安装 步骤一:进入官网下载SublimeText3(http://www.sublimetext.com/3),安装并打开SublimeText3   步骤二:进入Su ...

  8. Tomcat解压版Windows配置(运行环境非开发环境)

    tomcat官网下载的9.0.19,解压后目录如下: java官网下载的jre8 (8u131),目录如下(应该是下载的解压版): 打开tomcat9.0.19根目录下的RUNNING.txt,里面有 ...

  9. python刷LeetCode:21. 合并两个有序链表

    难度等级:简单 题目描述: 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4输出:1 ...

  10. 高级css效果

    1.图片渐变效果 background linear-gradient(top,rgba(0,0,0,.8),rgba(0,0,0,.8))