centos7 docker容器(三)自動地建造和管理客戶Docker映像文件

如何自動地建造和管理客戶Docker映像文件

使用Dockerfiles文本文件可以自動地創建Docker image

Docker file文件包含各種建立和配置特定的容器信息。以下說明是最常用的,其中有一些是強制性的:

  • FROM ==Docker file的第一個指令,說明:Docker 來自那個映像文件,這裏使用一個標籤來指明。
    例如: FROM ubuntu:14.04

  • MAINTAINER == 構建映像文件的作者

  • RUN ==說明映像文件創建後、運行那些命令

  • CMD ==Docker image開始時,運行的命令。

  • ENTRYPOINT == 另一個 CMD 作爲映像文件的主要命令

  • EXPOSE ==說明容器運行時監聽的網絡端口,容器端口是不能使用主機的缺省端口

  • ENV == 設置容器的環境變量.

  • ADD = 文件或目錄的複製原(files, directories 或 files from URLs)

步驟1:創建或寫入dockerfile庫

1。首先,創建一個dockerfile庫,用於創建其他映像。在/var分區建立一個空目錄,構建最新的容器映像文件。

# mkdir -p /var/docker/ubuntu/apache
# touch /var/docker/ubuntu/apache/Dockerfile


wKiom1g0RtWRlXdOAAA-Qb-OUDU946.png

2. 其次編輯文件:

# vi /var/docker/ubuntu/apache/Dockerfile

dokerfile摘錄

FROM ubuntu
MAINTAINER  your_name
RUN apt-get -y install apache2
RUN echo “Hello Apache server on Ubuntu Docker” > /var/www/html/index.html
EXPOSE 80


wKiom1g0T7DgcrstAAASGJ17e7Q974.png

第一行指明建造Ubuntu映像文件,因沒有提供標籤,使用最新的Docker Hub。
第二行中,添加了創建映像文件的名字和電子郵件。接下來的兩行爲:運行映像文件和安裝Apache守護進程及 echo 一些文字到默認的Apache Web頁。
EXPOSE行指明Docker容器偵聽端口80,但端口不對外透明。最後一行指明在容器啓動後運行Apache服務

3.使用以下命令開始創建發佈的映像,將創建一個命名爲Ubuntu Apache的局部映像,基於之前的dockerfile,如圖所示:

# docker build -t ubuntu-apache /var/docker/ubuntu/apache/


wKioL1g0Tqvj09BrAAA44MMpOmM097.png

4. 使用以下命令列出所有docker可用映像:

# docker images


wKioL1g0UJDwsoFwAAAhU1b6pP0139.png

步驟二、運行容器和訪問局域網apache服務

5。爲了連續運行容器(後臺),並訪問局域網中的主機或其他遠程機的容器服務(端口),運行下面的命令:

# docker run -d -p 81:80 ubuntu-apache

選項 -d 後臺運行 ubuntu-apache 容器守護進程。選項 -p 指定 80 端口至本地端口 81.在局域網外只能通過端口81,訪問apache服務.


wKioL1g0USGgJzn-AAAkGk4AuXQ409.png

6. 使用IP命令行顯示網絡接口IP地址

# ip addr               [List nework interfaces]
# curl ip-address:81    [System Docker IP Address]
# curl localhost:81     [Localhost]

注意:僅能通過端口81訪問網頁


wKioL1g0W6fiaftJAABUy88C2mA723.png

wKioL1g0Ue2yfPjCAAAQrej_NG8889.png

7. 網絡訪問容器的網頁,在遠程位置和使用HTTP協議打開瀏覽器、IP地址的機器在容器運行,其次是81端口,以下說明。

http://ip-address:81


wKiom1g0UnbxE6XYAAAuV5aQRRE550.png


8. 爲了得到在容器內部運行的進程信息,使用下面命令:

# docker ps
# docker top


wKioL1g0Uu3xwkfMAAA7lpl109s051.png

9. 停止Docker容器命令需要容器 ID 和 name

# docker stop
# docker ps

10. 爲容器分配一個描述性名稱,使用“--name”選項,如下面的示例所示

# docker run --name my-www -d -p 81:80 ubuntu-apache
# docker ps


wKiom1g0XvbBdko4AAAfcAtbTyk404.png

現在你可以使用(start, stop, top, stats 等) 使用上面的名稱完成任務.

# docker stats my-www


wKioL1g0XyeRjgP_AAAKSd8kES4997.png

步驟3:爲Docker容器創建一個系統範圍的配置文件

11. 在 CentOS7中,可以創建一個 systemd 配置文件和其他本地服務一樣管理容器:

例如:, 一個新的 apache-docker.service的 systemd 文件:

# vi /etc/systemd/system/apache-docker.service

apache-docker.service文件摘錄:

[Unit]
Description=apache container
Requires=docker.service
After=docker.service
[Service]
Restart=always
ExecStart=/usr/bin/docker start -a my-www
ExecStop=/usr/bin/docker stop -t 2 my-www
[Install]
WantedBy=local.target

12。編輯完文件後,關閉它,重裝守護程序,併發出以下命令啓動容器:

# systemctl daemon-reload
# systemctl start apache-docker.service
# systemctl status apache-docker.service

這只是一個簡單的例子,可以做一個簡單的dockerfile,也可以預先建立一些非常複雜的應用程序,你可以在數秒內以最少的資源和精力啓動。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章