第三章 Docker高级实践
目录一、Dockerfile
在这一部分我们来介绍一些Docker的高级内容: Dockerfile和Docker compose。
1 Dockerfile简介
-
什么是Dockerfile?
类似于我们学习过的脚本,将我们在上面学到的docker镜像,使用自动化的方式实现出来。
-
Dockerfile的作用
- 找一个镜像:ubuntu
- 创建一个容器: docker run ubuntu
- 进入容器: docker exec -it 容器命令
- 操作:各种应用配置....
- 构造新镜像: docker commit
-
Dockerfile使用准则
- 大:首字母必须大写D
- 空:尽量将Dockerfile放在空目录中。
- 单:每个容器尽量只有一个功能。
- 少:执行的命令越少越好。
-
Dockerfile分为四部分
- 基础镜像信息
- 维护者信息
- 镜像操作指令
- 容器启动时执行指令
-
Dockerfile文件内容
- 首行注释信息
- 指令(大写)参数
-
Dockerfile使用命令
#构建镜像命令格式: docker build -t [镜像名]:[版本号][Dockerfile所在目录] #构建样例: docker build -t nginx:v0.2 /opt/dockerfile/nginx/ #参数详解: -t 指定构建后的镜像信息, /opt/dockerfile/nginx/ 则代表Dockerfile存放位置,如果是当前目录,则用 .(点)表示
2 Dockerfile快速入门
接下来我们快速的使用Dockerfile来基于ubuntu创建一个定制化的镜像: nginx。
- 创建文件目录
#创建Dockerfile专用目录
$ mkdir -p docker-file/dockerfile/nginx
$ cd ./docker-file/dockerfile/nginx/
#在其中创建Dockerfile文件
$ vim Dockerfile
- 在Dockerfile中书写内容:
# 构建一个基于ubuntu的docker定制镜像
# 基础镜像
FROM ubuntu
# 镜像作者
MAINTAINER yangyi yangyi@163.com
# 执行命令
RUN mkdir hello
RUN mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install nginx -y
# 对外端口
EXPOSE 80
- 进行构建操作
#构建镜像
$ docker build -t ubuntu-nginx:v1.0 . # 依赖当前文件夹下面的Dockerfile创建文件
#查看新生成镜像
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu-nginx v1.0 0dcd373157ad 11 minutes ago 167MB
#查看构建历史
$ docker history 0dcd373157ad
IMAGE CREATED CREATED BY SIZE COMMENT
0dcd373157ad 23 minutes ago /bin/sh -c #(nop) EXPOSE 80 0B
a4f1dd0a918d 23 minutes ago /bin/sh -c apt-get install nginx -y 59.2MB
0ffb9d0eee7b 24 minutes ago /bin/sh -c apt-get update 34.6MB
99a68a02a088 27 minutes ago /bin/sh -c sed -i 's/security.ubuntu.com/mir… 2.76kB
393d63c34bee 27 minutes ago /bin/sh -c sed -i 's/archive.ubuntu.com/mirr… 2.76kB
1cafc34dadf0 27 minutes ago /bin/sh -c mkdir world 0B
0361a0a98448 27 minutes ago /bin/sh -c mkdir hello 0B
9db7f118dcc3 27 minutes ago /bin/sh -c #(nop) MAINTAINER yangyi yangyi@… 0B
2b4cba85892a 2 weeks ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:8a50ad78a668527e9… 72.8MB
#注意:
因为容器没有启动命令,所以肯定访问不了
注:每次操作都是通过镜像生成容器,容器中进行操作之后,在生成镜像,将之前的镜像删除,如此循环往复,直到生成最终的结果。
- 运行修改好的Dockerfile进行构建
# 构建一个基于ubuntu的docker定制镜像
# 基础镜像
FROM ubuntu
# 镜像作者
MAINTAINER yangyi yangyi@163.com
# 执行命令
RUN mkdir hello && mkdir world
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list && sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update && apt-get install nginx -y
# 对外端口
EXPOSE 80
#运行Dockerfile
$ docker build -t ubuntu-nginx:v0.2 .
#查看历史信息
$ docker history ubuntu-nginx:v0.2
#对比两个镜像的大小
$ docker images
#深度对比连个镜像的大小
$ docker inspect a853de1b8be4
$ docker inspect eaba9bd1c4ac
注:命令越少,构建的镜像越小一下。【因为有了一些日志信息
标签:03,容器,实践,nginx,ubuntu,镜像,Docker,Dockerfile,docker From: https://www.cnblogs.com/yangyi215/p/17367398.html