Dockerfile创建镜像
原文再续,就书接上一回。今天我们说说使用Dockerfile创建镜像容器
目录
- 是时候Docker: 1 Docker导学
- 是时候Docker: 2 安装并取消sudo执行docker
- 是时候Docker: 3 Docker小实例
- 是时候Docker: 3.1 Docker19 命令速查表
- 是时候Docker: 4 Dockerfile创建镜像
- 是时候Docker: 5 Volume 独立于容器外的持久化存储
Dockerfile实例
FROM alpine:latest
MAINTAINER sbf
CMD echo 'hello docker'
说明
FROM baseimage
MAINTAINER 共享是告诉其他人,是谁写的
CMD 运行命令
实际操作
touch Dockerfile
vim Dockerfile
docker build -t hello_docker . // -t 构建image名 . 当前目录下所有内容都提交给docker产生image
docker images hello_docker // 查看image 是否生成
docker run hello_docker // 运行image, 输出内容 hello docker
复杂一点的实例
FROM ubuntu
MAINTAINER xbf
RUN sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
RUN apt-get update
RUN apt-get install -y nginx
COPY index.html /var/www/html
ENTRYPOINT ["/usr/sbin/nginx", "-g", "daemon off;"]
EXPOSE 80
docker build -t test_docker .
docker run -d -p 8080:80 test_docker
镜像分层
Dockerfile的每一行都会产生一个分层且只读,比如
当镜像运行时会产生container layer
可读可写的新层来保证容器是可以修改。分层的好处在于,相同分层合并有利减低存储
Dockerfile语法小结
语法 | 说明 |
---|---|
FROM | 基础镜像 |
RUN | 容器内执行命令 |
CMD | 程序入口,像main方法一样 |
ENTRYPOINT | 如果指定,CMD会变为它的arguments |
ADD | 可以添加远程文件,如ftp文件,比copy强大 |
COPY | 拷贝文件 |
WORKDIR | 工作目录 |
MAINTAINER | 作者 |
ENV | 设置容器内环境变量 |
USER | 执行命令的用户,一般是非root |
VOLUME | 挂在卷 |
EXPOSE | 暴露端口 |