docker 学习笔记2 认识dockerfile自定义镜像

Dockerfile 概念

Dockerfile 是一个文本文件,但包含所构建容器在运行时候的参数、库、资源配置。能够简单理解为咱们现有的镜像,好比Centos/Nginx 但咱们须要构建一个容器的时候,却须要用一些操做将这两个镜像组合在一块儿,好比要构建一个Nginx容器。html

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

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

镜像和容器的关系

镜像运行起来就成为了容器。一个镜像能够生成多个容器。这就比如是两种状态。git

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 命令执行镜像操做命令,用来操做基础镜像。docker

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

构建镜像

经过刚才的Dockerfile 文件,咱们已经自定义了一个指定的镜像文件。如今用这个镜像构建文件来生成一个咱们自定义的镜像。bash

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

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

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

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端口
centos7

动态修改

要是我想要修改这个容器内的内容呢?固然也有能够交互的命令行

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

相关文章
相关标签/搜索