DOCKER 学习笔记2 认识dockerfile自定义镜像
Dockerfile 概念
Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数、库、资源配置。可以简单理解为我们现有的镜像,比如Centos/Nginx 但我们需要构建一个容器的时候,却需要用一些操作将这两个镜像组合在一起,比如要构建一个Nginx容器。
- 那首先需要一个操作系统、比如Centos
- 然后在这个操作系统里面下载NGINX
- 配置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分配给伪TTYbash即命令处理器
刷新查看内容的改变
查看容器内容的改变
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自定义镜像的更多相关文章
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
- docker学习笔记18:Dockerfile 指令 VOLUME 介绍
在介绍VOLUME指令之前,我们来看下如下场景需求: 1)容器是基于镜像创建的,最后的容器文件系统包括镜像的只读层+可写层,容器中的进程操作的数据持久化都是保存在容器的可写层上.一旦容器删除后,这些数 ...
- docker学习笔记17:Dockerfile 指令 ONBUILD介绍
ONBUILD指令可以为镜像添加触发器.其参数是任意一个Dockerfile 指令. 当我们在一个Dockerfile文件中加上ONBUILD指令,该指令对利用该Dockerfile构建镜像(比如为A ...
- Docker学习笔记之保存和共享镜像
0x00 概述 让 Docker 引以为傲的是它能够实现相比于其他虚拟化软件更快的环境迁移和部署,在这件事情上,轻量级的容器和镜像结构的设计无疑发挥了巨大的作用.通过将容器打包成镜像,再利用体积远小于 ...
- Docker学习笔记_使用Dockerfile创建flask的一个镜像
一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位 虚拟机名称:Ubuntu18VM1 虚拟机IP:192.168.8.25 3.账号:doc ...
- docker学习笔记(2) 构建镜像
一.手动构建一个简单镜像 我们以构建nginx的docker镜像为例:手动构建镜像 docker pull centos 安装基础镜像docker run --name mynginx -it ...
- docker学习笔记-05:DockerFile解析
一.DockerFile是什么 1.DockerFile是用来构建docker镜像的构建文件,是由一系列参数和命令构成的脚本. 2.构建三步骤: 手动编写一个dockerfile文件,然后直接dock ...
- docker学习笔记14:Dockerfile 指令 ENV介绍
ENV指令用来在镜像构建过程中设置环境变量.我们来看一个Dockerfile的例子: #test FROM ubuntu MAINTAINER hello ENV MYDIR /mydir RUN m ...
- docker学习笔记13:Dockerfile 指令 WORKDIR介绍
Dockerfile中的WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行. 相当于设置容器的工作目录了.我们来看一个dockerfile文件 #test FROM ub ...
随机推荐
- HDU 5475:An easy problem 这题也能用线段树做???
An easy problem Time Limit: 8000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) ...
- POJ 2632:Crashing Robots
Crashing Robots Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8424 Accepted: 3648 D ...
- 02-NVIDIA Jetson TX2 通过JetPack 3.1刷机完整版(踩坑版)
未经允许,不得擅自改动和转载 文 | 阿小庆 2018-1-20 本文继第一篇文章:01-NVIDIA Jetson TX2开箱上电显示界面 TX2 出厂时,已经自带了 Ubuntu 16.04 系统 ...
- HZNU-ACM寒假集训Day4小结 最短路
最短路 1.Floy 复杂度O(N3) 适用于任何图(不存在负环) 模板 --kuangbin #include<iostream> #include<cstdio> #in ...
- vue组件化应用构建
组件系统是 Vue 的另一个重要概念,因为它是一种抽象,允许我们使用小型.独立和通常可复用的组件构建大型应用.仔细想想,几乎任意类型的应用界面都可以抽象为一个组件树: 在 Vue 里,一个组件本质上是 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring Bean的配置及常用属性
作为 Spring 核心机制的依赖注入,改变了传统的编程习惯,对组件的实例化不再由应用程序完成,转而交由 Spring 容器完成,在需要时注入应用程序中,从而对组件之间依赖关系进行了解耦.这一切都离不 ...
- ES6的一些语法
let, const, class, extends, super, arrow functions, template string, destructuring, default, rest ar ...
- linux 替换jdk指定jar包
我的bug是:jdk1.8的安全策略和腾讯邮箱服务有冲突.我知道的解决方法: 1更换低版本安全策略相关的jar包.(windows:http://www.cnblogs.com/dennyzhangd ...
- 干货 | 把Flutter扩展到微信小程序端的探索
Google Flutter是一个非常优秀的跨端框架,不仅可以运行在Android. iOS平台,而且可以支持Web和桌面应用.在国内小程序是非常重要的技术平台,我们也一直思考能否把Flutter扩展 ...
- PAT Advanced 1043 Is It a Binary Search Tree (25) [⼆叉查找树BST]
题目 A Binary Search Tree (BST) is recursively defined as a binary tree which has the following proper ...