摘要:如果有服务器需要维护重启时,也会重启,此时端口会发生变化,仍然会随机拿一个没有使用的端口号来和号端口做端口映射。除非该删掉后,端口号会被分配给其他使用。
Dockerfile
Docker是软件工业上的集装箱技术。
通过以下文件制作Docker镜像
[root@Optimus docker-training]# cd centos7/ [root@Optimus centos7]# ls aliyun-epel.repo aliyun-mirror.repo Dockerfile supervisord.conf
Dockerfile 自动构建docker镜像的配置文件,类似于Linux下shell命令。
[root@Optimus centos7]# vim Dockerfile # # MAINTAINER Carson,C.J.Zeong# DOCKER-VERSION 1.6.2 # # Dockerizing CentOS7: Dockerfile for building CentOS images # FROM centos:centos7.1.1503 MAINTAINER Carson,C.J.Zeong ENV TZ "Asia/Shanghai" ENV TERM xterm ADD aliyun-mirror.repo /etc/yum.repos.d/CentOS-Base.repo ADD aliyun-epel.repo /etc/yum.repos.d/epel.repo RUN yum install -y curl wget tar bzip2 unzip vim-enhanced passwd sudo yum-utils hostname net-tools rsync man && yum install -y gcc gcc-c++ git make automake cmake patch logrotate python-devel libpng-devel libjpeg-devel && yum install -y --enablerepo=epel pwgen python-pip && yum clean all RUN pip install supervisor ADD supervisord.conf /etc/supervisord.conf RUN mkdir -p /etc/supervisor.conf.d && mkdir -p /var/log/supervisor EXPOSE 22 ENTRYPOINT ["/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf"]
[FROM]指令指定基础镜像(副镜像)centos:centos7.1.1503.
[MAINTAINER]说明docker镜像的维护者。
[ENV](environment环境)这里设置了时区的环境变量TZ "Asia/Shanghai",环境变量可以多个。
[ADD] 在Dockerfile中有两条指令可以进行copy文件,一个是ADD,一个是COPY。都可以复制本地文件到container中。
ADD比COPY多两个功能:
1. 可以ADD一个在WebServer上的文件,在ADD后面aliyun-mirror.repo处直接写上链接地址,即可把文件copy到container(/etc/yum.repos.d/CentOS-Base.repo)里面。 2. 解压:有一个压缩包,不用进入到container中运行tar命令手动解压,用ADD命令可以自动解压。
[RUN] 指令后面可以写任何一条命令,RUN会将该命令放到Linux Shell下去执行。在这里,RUN指令用来安装一些基础的工具和软件。
在Dockerfile build docker镜像的时候,每执行一条指令,都会生成docker镜像的一层(分层layer技术),最后生成的镜像由很多个layer组合而成。
[RUN pip install supervisor] 在制作docker镜像的时候,会考虑到制作完成后能运行一个什么样的容器,如运行一个PHP服务或者Linux服务。那么,此时需要一个进程管理工具supervisor来管理进程。运行单个进程可以不用supervisor。
[ADD supervisord.conf /etc/supervisord.conf] 添加supervisor的配置文件到/etc目录下。
[RUN mkdir -p /etc/supervisor.conf.d]创建supervisor.conf.d目录,在这里存放启动其他服务的配置文件。/var/log/supervisor是存放supervisor的日志目录。
[EXPOSE 22] 比如container想暴露22端口给宿主机,宿主机会拿一个端口与container的22端口去映射,如2222端口号,那么可以使用服务器的IP地址,连接的时候端口号是2222,就可以连接到container(docker容器)里面。
[ENTRYPOINT] 在dockerfile中只有最后一条ENTRYPOINT会生效。container每次启动的时候,都会执行该命令。/usr/bin/supervisord", "-n", "-c", "/etc/supervisord.conf开启supervisor服务,加载主要的配置文件。
构建docker镜像使用dockerfile生成docker镜像
docker build
给要构建的docker镜像起一个名字
docker build -t
docker镜像完整的命名规则
docker build -t registry_url/namespace/csphere/centos:7.1
版本号
centos:版本号 若不写版本号,则会自动加上latest标签默认为 centos:latest
指定dockerfile
docker build -t csphere/centos:7.1 . 若dockerfile在当前目录下,则使用 .来指定;否则使用相对路径/path.
查看镜像
docker images 可以查看本地有哪些镜像,镜像的名字REPOSTORY、TAG、IMAGE ID、创建时间CREATED、镜像大小VIRTUA.生成docker容器
生成docker容器
docker run 通过以上创建好的docker镜像,执行run指令可生成docker容器。(此时退出/centos7目录,回到根目录下)
查看run参数
docker help run 查看run有哪些参数
交互式模
docker run -it 启动docker容器container时 是交互式模式,把container启动到前台。
后端启动
docker run -d 把container在后端启动,启动后,返回一个container的ID号。
端口映射-P
docker run -d -P 2222:222 在dockerfile中有一个指令EXPOSE 22,暴露出22号端口。在前端,宿主机会分配一个没有使用的端口号,如2222,来进行端口映射。那么,可以用2222端口连接container。如果有服务器需要维护重启时,container也会重启,此时2222端口会发生变化,仍然会随机拿一个没有使用的端口号来和22号端口做端口映射。
端口映射-p
docker run -d -p 2222:22 不管是宿主机重启还是container重启,2222端口一直给这个container。除非该container删掉后,2222端口号会被分配给其他container使用。
容器名
docker run -d -p 2222:22 --name base 在通过docker镜像生成docker容器时,--name用于给容器起名字,这里起名为base,方便以后查找。
指定docker镜像
docker run -d -p 2222:22 --name base csphere/centos:7.1 指明docker镜像,这里使用csphere/centos:7.1 docker镜像生成叫做`base`的docker容器。返回container的长ID号,如2d36dbfc72a045725b845771bdeb8ff0acc0845eb7d39d09e5f8025237b0d9c9。
查看container
docker ps -a 不加参数时,默认只会显示处于running下的container。-a可查看退出状态下/非up状况下的container等当前本地所有的container。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/27110.html
摘要:构建镜像时,首先要有一个基础镜像,然后有中间件镜像,最后生成一个应用镜像。现在作为基础镜像,下面来构建两个中间件镜像镜像具有和能力的镜像。同时,用文件覆盖默认的配置文件。构建镜像查看镜像以上镜像已经做好了。 以上已经构建好了一个基础的docker镜像centos7。 构建docker镜像时,首先 要有一个基础镜像,然后有中间件镜像,最后生成一个应用镜像。 现在centos7作为基础镜...
摘要:构建镜像时,首先要有一个基础镜像,然后有中间件镜像,最后生成一个应用镜像。现在作为基础镜像,下面来构建两个中间件镜像镜像具有和能力的镜像。同时,用文件覆盖默认的配置文件。构建镜像查看镜像以上镜像已经做好了。 以上已经构建好了一个基础的docker镜像centos7。 构建docker镜像时,首先 要有一个基础镜像,然后有中间件镜像,最后生成一个应用镜像。 现在centos7作为基础镜...
摘要:用法在当中只有最后一条生效,其他都不生效第一种写法类似数组形式,推荐使用。第二章方法执行命令启动的进程,该进程的为执行完这个的。命令覆盖掉了中的命令,直接进入到了中。删除镜像前,先停止。 ENTRYPOINT用法showImg(https://segmentfault.com/img/bVXNu5?w=702&h=322); entrypoint在dockerfile当中只有最后一条生...
阅读 1445·2021-11-24 09:39
阅读 3625·2021-09-29 09:47
阅读 1570·2021-09-29 09:34
阅读 3066·2021-09-10 10:51
阅读 2535·2019-08-30 15:54
阅读 3215·2019-08-30 15:54
阅读 868·2019-08-30 11:07
阅读 1003·2019-08-29 18:36