# 手动构建自己的镜像
# 镜像提交到本地 27207aa3c367(容器ID)
docker commit -m "nginx v1 " 27207aa3c367 linyaohong/mynginx:v1
[root@test01 ~]# docker images # 可以看到手动构建了一个自己的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
linyaohong/mynginx v1 dff38d816f59 39 seconds ago 408MB
# Dockerfile构建镜像
FROM # 指定基础镜像 ,如果本地没有会在远程pull下来
MAINTAINER # 指定维护者信息
RUN # 在命令前面加上RUN即可
ADD # 会自动解压
WORKDIR # 设置当前工作目录
VOLUME # 设置卷,挂载主机目录
EXPOSE # 指定对外的端口
CMD # 定容器启动后的要干的事情,只能有一条,否则只有一个被执行
# 启动容器的时候,如果加了命令会覆盖这里的CMD命令
[root@test01 /data/nginx]# vim Dockerfile
# This Nginx Dockerfile
# Base image
FROM centos
# Maintainer
MAINTAINER YaoHong.Lin
RUN rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
RUN yum install -y nginx && yum clean all
RUN echo "daemon off;" >> /etc/nginx/nginx.conf
ADD index.html /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx"]
docker build -t mynginx:v2 . # 通过Dockerfile 构建镜像 . 代表当前目录 会自动找Dockerfile文件
# 启动一个容器
[root@test01 /data/nginx]# docker run --rm --name mynginxv2 -d -p 82:80 mynginx:v2 nginx(nginx可以不写,Dockerfile已经定义了,如果加了命令会覆盖CMD)
064e32871f80e67203f4144b9cb9f2ed2d485184a3daecd338a8c90f8bd47454
# 生产案例
# This docker file uses the centos image
# VERSION 1
# Author: Jason Zhao
# Base image
FROM centos
# Maintainer
MAINTAINER shundong.zhao zhaoshundong@gmail.com
#Commands to update the image
ADD pcre-8.37.tar.gz /usr/local/src/
ADD nginx-1.9.3.tar.gz /usr/local/src/
RUN yum install -y wget gcc gcc-c++ openssl-devel make
RUN useradd -s /sbin/nologin -M www
WORKDIR /usr/local/src/nginx-1.9.3
RUN ./configure --prefix=/usr/local/nginx --user=www --group=www \
--with-http_ssl_module --with-http_stub_status_module --with-file-aio \
--with-http_dav_module --with-pcre=/usr/local/src/pcre-8.37 && make && make install
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["nginx"]
# 生产的镜像分层设计
系统层
运行环境层
应用服务层
[root@test01 /data]# tree
.
├── app
│ ├── admin
│ ├── pay
│ └── shop
├── nginx
│ ├── Dockerfile
│ └── index.html
├── runtime
│ ├── java
│ ├── php
│ └── python
└── system
├── centos
└── ubuntu