摘要:如果有服務器需要維護重啟時,也會重啟,此時端口會發生變化,仍然會隨機拿一個沒有使用的端口號來和號端口做端口映射。除非該刪掉后,端口號會被分配給其他使用。
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。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27110.html
摘要:構建鏡像時,首先要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。現在作為基礎鏡像,下面來構建兩個中間件鏡像鏡像具有和能力的鏡像。同時,用文件覆蓋默認的配置文件。構建鏡像查看鏡像以上鏡像已經做好了。 以上已經構建好了一個基礎的docker鏡像centos7。 構建docker鏡像時,首先 要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。 現在centos7作為基礎鏡...
摘要:構建鏡像時,首先要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。現在作為基礎鏡像,下面來構建兩個中間件鏡像鏡像具有和能力的鏡像。同時,用文件覆蓋默認的配置文件。構建鏡像查看鏡像以上鏡像已經做好了。 以上已經構建好了一個基礎的docker鏡像centos7。 構建docker鏡像時,首先 要有一個基礎鏡像,然后有中間件鏡像,最后生成一個應用鏡像。 現在centos7作為基礎鏡...
摘要:用法在當中只有最后一條生效,其他都不生效第一種寫法類似數組形式,推薦使用。第二章方法執行命令啟動的進程,該進程的為執行完這個的。命令覆蓋掉了中的命令,直接進入到了中。刪除鏡像前,先停止。 ENTRYPOINT用法showImg(https://segmentfault.com/img/bVXNu5?w=702&h=322); entrypoint在dockerfile當中只有最后一條生...
閱讀 1446·2021-11-24 09:39
閱讀 3626·2021-09-29 09:47
閱讀 1571·2021-09-29 09:34
閱讀 3067·2021-09-10 10:51
閱讀 2536·2019-08-30 15:54
閱讀 3216·2019-08-30 15:54
閱讀 869·2019-08-30 11:07
閱讀 1004·2019-08-29 18:36