Docker中的Dockerfile

一、服务器,虚拟机,容器的区别

形象的理解:运用类比法,服务器相当于一栋别墅,所有的资源只是一家人的,虚拟机 相当于写字楼,只是公用地基,不同的楼层属于不同的公司,而容器相当于胶囊公寓,将一个房间分割成多个小房间,一起公用厨房,卫生间等。
技术角度:服务器虚拟化是为了解决资源分配的问题
容器的核心问题是应用开发,测试和部署。

二、Dockerfile

dockerfile是docker镜像设置文件,dockfile里面的内容用于创建镜像。
编写Dockfile文件

  1. 创建目录
[root@node1 ~]# mkdir /opt/dockerfile/
  1. 编写文件内容
  1 # This is a docker file for nginxv2(开头的注释)
  2 
  3 #Base Image (基础的镜像)
  4 FROM centos
  5 
  6 #Maintainer
  7 MAINTAINER myp [email protected]
  8 
  9 #Commands
 10 
 11 RUN  rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noa    rch.rpm
 12 RUN yum install -y nginx
 13 RUN echo "\ndamon off;" >> /etc/nginx/nginx.conf
 14 ADD index.html /usr/share/nginx/html/index.html
 15 EXPOSE 80
 16 CMD nginx
  1. 内容解释
 FROM:用于设置将哪种镜像设置为基础镜像
MAINTAINER (用于设置镜像创建者的信息)
MAINTAINER  myp [email protected](用于设置镜像创建者的信息)
            名字     邮箱                   
 RUN:使用shell(/bin/bash运行命令) 
 yum install -y nginx
CMD:用于在容器启动时运行的脚本或者命令
CMD nginx
在Dockerfile文件中CMD只能使用一次
ENTRYPOINT:也是用于在设置容器启动时运行的脚本或者命令,可以运行FROM所设镜像内的/bin/bash中的可执行文件,只能使用一次。
(如果镜像中没有则不能执行)
ENTRYPOINT  touch  /home/hello/hello.txt
ENTRYPOINT与CMD的不同

CMD:
Dockerfile文件内容
  1 FROM centos
  2 CMD ["echo","hello"]
用Dockerfile文件创建镜像(先cd到Dockerfile文件所在的目录)
[root@node1 test1]# docker build --tag example1 .
[root@node1 test1]# docker run example echo world
world


ENTRYPOINT
Dockerfile文件内容:
 1 FROM centos
 2 ENTRYPOINT ["echo","hello"]
[root@node1 test2]# docker run example echo world
hello echo world
EXPOSE:用于设置和主机连接的端口(就是从其他服务器上访问主机的这个端口号就可以访问这个容器的服务),一个EXPOSE可以同时设置多个端口号。
ENV:用于设置环境变量。使用ENV设置的环境变量应用于RUN,CMD,ENTRYPOINT
ADD:用于向镜像添加文件
ADD <要添加的文件路径>  <文件在镜像中的路径>
<要添加的文件路径>  这个也可以是一个URL
ADD *.txt   /root/
ADD  http://zlib.net/zlin-1.2.8.tar.gz  
VOLUME:设置用于将目录下的内容存储到主机而非容器
使用格式:
VOLUME <容器目录>
VOLUME   [ ”<容器目录1>”, ” <容器目录2>”]
USER

猜你喜欢

转载自blog.csdn.net/myydebk666/article/details/83790681