自己手工创建docker中base镜像

自己手工创建docker中base镜像

Scroll Down

base镜像

原理

创建base镜像就好比是在原有的镜像上安装或添加执行某些命令。
灰常简单

镜像创建原理

创建镜像的时候会出现一个临时容器
到具体内容跟的时候会删掉这个临时容器
然后生成一个临时镜像层
镜像文件中出现几次命令就会重复上面几次步骤
最后这几个镜像层进行合成就生成镜像

如何创建镜像

对创建好的dockerfile文件执行命令,进行创建。

docker build -t 名称:标签 .

==不能将.忘掉==

dockerfile文件解析

FROM 指定base镜像
MAINTAINER 指定镜像作者,跟随任意字符
COPY 将本地文件复制到镜像中
ADD和COPY一样,但是如果是压缩文件则被自动解压缩
ENV环境变量
#例子:

ENV MY_VERSION 1.3
RUN yum -y install -y httpd-$MY_VERSION

EXPOSE 指定容器监视某个端口。 EXPOSE 80
VOLUME 物理机文件目录映射到容器
WORKDIR 后面指令运行的目录
RUN 在容器中运行的指令
CMD 启动容器时运行的命令 可被docker run后面命令替代
ENTRYPOINT 启动容器时运行的命令 不可被docker run后面命令替代

镜像创建实例

创建dockerfile文件

vim dockerfile

写入

FROM centos		#从centos镜像里创建新的镜像
COPY nginx-1.11.5.tar.gz / 	  #复制当前目录下的nginx的源码包到镜像的根目录下
RUN cd / 	#cd到/下
RUN tar -zxf nginx-1.11.5.tar.gz  -C /usr/src/ 		#将源码包解压到/usr/src/
RUN cd /usr/src/nginx-1.11.5/ 	  #cd到解压好的nginx目录下
RUN yum -y install gcc*		#yum安装所需环境
RUN yum -y install pcre-devel
RUN yum -y install zlib-devel
RUN yum -y install make
RUN yum -y install net-tools
WORKDIR /usr/src/nginx-1.11.5/		#确定之后命令执行的目录
RUN ./configure --prefix=/usr/local/nginx && make && make install 	#安装nginx
EXPOSE 80  #监听容器端口80
EXPOSE 443  #监听容器端口443
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf   #输出daemon off;到nginx配置文件中
ADD run.sh  /run.sh  	#拷贝当前目录下的run.sh文件到容器中
RUN chmod 755 /run.sh 		#给予这个脚本权限
CMD ["/run.sh"]   #启动容器时运行run.sh

保存并退出 shift+; wq
创建脚本文件

vi run.sh 

写入

/usr/local/nginx/sbin/nginx

保存并退出

生成镜像

docker build -t linux:nginx .

将镜像开启
启动镜像nginx.linux将20190映射到容器的80,将20191映射到容器的22,并起名叫yuan

docker run -itd -p20190:80 -p20191:22 --name yuan nginx.linux

创建完成