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

最新文章

  1. XFire最佳实践
  2. ubuntu15.04安装Chrome浏览器
  3. Node调试工具JSHint
  4. 编写适合windows 7 平台的软件,给程序添加UAC认证
  5. hibernate 使用in方式删除数据
  6. ArcEngine栅格和矢量渲染(含可视化颜色带)
  7. [置顶] 局部加权回归、最小二乘的概率解释、逻辑斯蒂回归、感知器算法——斯坦福ML公开课笔记3
  8. [搜索] hdu 4016 Magic Bitwise And Operation
  9. c#基础语句——分支语句
  10. DB2简介和安装部署
  11. MongoDB的安全写入GetLastError
  12. 关于被删以及限制评价后,免费更换新listing的方法
  13. tomcat升级 遇到的坑
  14. Java工厂方法模式
  15. PerformEraseBackground 擦除背景(ThemeServices)
  16. Eclipse Mark Occurrences
  17. A - Subsequence (算法 二分 )
  18. mysql 操作符
  19. Linux文件访问和日志
  20. Java中常见的比较

热门文章

  1. P 1021 个位数统计
  2. 解决RecyclerView瀑布流效果结合Glide使用时图片变形的问题
  3. 封装localStorage设置,获取,移除方法
  4. h5-伸缩布局
  5. Pandas_one-hot encoding与dummy encoding
  6. JavaWeb之搭建自己的MVC框架(二)
  7. 51nod 1393:0和1相等串
  8. POJ 2993:Emag eht htiw Em Pleh
  9. [NOI2017]蔬菜(贪心+递推)
  10. C语言笔记 15_标准库&amp;locale&amp;math&amp;setjmp&amp;signal&amp;stdarg&amp;stddef