歡迎光臨
每天分享高質量文章

如何創建一個 Docker 鏡像 | Linux 中國

在這篇文章中,我們將學習創建 Docker 鏡像的基本知識。
— Swapnil Bhartiya


致謝
編譯自 | https://www.linux.com/blog/learn/intro-to-linux/2018/1/how-create-docker-image 
 作者 | Swapnil Bhartiya
 譯者 | qhwdw ? ? ? ? ? 共計翻譯:104 篇 貢獻時間:164 天

在 前面的文章[1] 中,我們學習了在 Linux、macOS、以及 Windows 上如何使用 Docker 的基礎知識。在這篇文章中,我們將學習創建 Docker 鏡像的基本知識。我們可以在 DockerHub 上得到可用於你自己的專案的預構建鏡像,並且也可以將你自己的鏡像發佈到這裡。

我們使用預構建鏡像得到一個基本的 Linux 子系統,因為,從頭開始構建需要大量的工作。你可以使用 Alpine( Docker 版使用的官方版本)、Ubuntu、BusyBox、或者 scratch。在我們的示例中,我將使用 Ubuntu。

在我們開始構建鏡像之前,讓我們先“容器化”它們!我的意思是,為你的所有 Docker 鏡像創建目錄,這樣你就可以維護不同的專案和階段,並保持它們彼此隔離。

  1. $ mkdir dockerprojects

  2. cd dockerprojects

現在,在 dockerprojects 目錄中,你可以使用自己喜歡的文本編輯器去創建一個 Dockerfile 檔案;我喜歡使用 nano,它對新手來說很容易上手。

  1. $ nano Dockerfile

然後添加這樣的一行內容:

  1. FROM Ubuntu

使用 Ctrl+Exit 然後選擇 Y 去儲存它。

現在開始創建你的新鏡像,然後給它起一個名字(在剛纔的目錄中運行如下的命令):

  1. $ docker build -t dockp .

(註意命令後面的圓點)這樣就創建成功了,因此,你將看到如下內容:

  1. Sending build context to Docker daemon  2.048kB

  2. Step 1/1 : FROM ubuntu

  3. ---> 2a4cca5ac898

  4. Successfully built 2a4cca5ac898

  5. Successfully tagged dockp:latest

現在去運行和測試一下你的鏡像:

  1. $ docker run -it Ubuntu

你將看到 root 提示符:

  1. root@c06fcd6af0e8:/#

這意味著在 Linux、Windows、或者 macOS 中你可以運行一個最小的 Ubuntu 了。你可以運行所有的 Ubuntu 原生命令或者 CLI 實用程式。

我們來查看一下在你的目錄下你擁有的所有 Docker 鏡像:

  1. $docker images

  2. REPOSITORY TAG IMAGE ID CREATED SIZE

  3. dockp latest 2a4cca5ac898 1 hour ago 111MB

  4. ubuntu latest 2a4cca5ac898 1 hour ago 111MB

  5. hello-world latest f2a91732366c 8 weeks ago 1.85kB

你可以看到共有三個鏡像:dockpUbuntu、和 hello-world, hello-world是我在幾周前創建的,這一系列的前面的文章就是在它下麵工作的。構建一個完整的 LAMP 棧可能是一個挑戰,因此,我們使用 Dockerfile 去創建一個簡單的 Apache 服務器鏡像。

從本質上說,Dockerfile 是安裝所有需要的包、配置、以及拷貝檔案的一套指令。在這個案例中,它是安裝配置 Apache 和 Nginx。

你也可以在 DockerHub 上去創建一個帳戶,然後在構建鏡像之前登入到你的帳戶,在這個案例中,你需要從 DockerHub 上拉取一些東西。從命令列中登入 DockerHub,運行如下所求的命令:

  1. $ docker login

在登入時輸入你的用戶名和密碼。

接下來,為這個 Docker 專案,在目錄中創建一個 Apache 目錄:

  1. $ mkdir apache

在 Apache 目錄中創建 Dockerfile 檔案:

  1. $ nano Dockerfile

然後,粘貼下列內容:

  1. FROM ubuntu

  2. MAINTAINER Kimbro Staken version: 0.1

  3. RUN apt-get update && apt-get install -y apache2 && apt-get clean && rm -rf /var/lib/apt/lists/*

  4. ENV APACHE_RUN_USER www-data

  5. ENV APACHE_RUN_GROUP www-data

  6. ENV APACHE_LOG_DIR /var/log/apache2

  7. EXPOSE 80

  8. CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]

然後,構建鏡像:

  1. docker build -t apache .

(註意命令尾部的空格和圓點)

這將花費一些時間,然後你將看到如下的構建成功的訊息:

  1. Successfully built e7083fd898c7

  2. Successfully tagged ng:latest

  3. Swapnil:apache swapnil$

現在,我們來運行一下這個服務器:

  1. $ docker run -d apache

  2. a189a4db0f7c245dd6c934ef7164f3ddde09e1f3018b5b90350df8be85c8dc98

發現了嗎,你的容器鏡像已經運行了。可以運行如下的命令來檢查所有運行的容器:

  1. $ docker ps

  2. CONTAINER ID IMAGE COMMAND CREATED

  3. a189a4db0f7 apache "/usr/sbin/apache2ctl" 10 seconds ago

你可以使用 docker kill 命令來殺死容器:

  1. $docker kill a189a4db0f7

正如你所見,這個 “鏡像” 它已經永久存在於你的目錄中了,而不論運行與否。現在你可以根據你的需要創建很多的鏡像,並且可以從這些鏡像中繁衍出來更多的鏡像。

這就是如何去創建鏡像和運行容器。

想學習更多內容,你可以打開你的瀏覽器,然後找到更多的關於如何構建像 LAMP 棧這樣的完整的 Docker 鏡像的文件。這裡有一個幫你實現它的 Dockerfile[2] 檔案。在下一篇文章中,我將演示如何推送一個鏡像到 DockerHub。

你可以通過來自 Linux 基金會和 edX 的 “介紹 Linux”[3] 免費課程來學習更多的知識。


via: https://www.linux.com/blog/learn/intro-to-linux/2018/1/how-create-docker-image

作者:SWAPNIL BHARTIYA[5] 譯者:qhwdw 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

赞(0)

分享創造快樂

© 2022 知識星球   网站地图