ubuntu16.04server安裝dockerCE。
Docker是一種應用程式,它使得在容器中運行應用程式變得簡單和容易,這就像虛擬機器,只有更便攜、更資源友好,而且更依賴于主機作業系統。 要詳細介紹Docker容器的不同元件,請參閱Docker生態系統:對常見元件的介紹。
在Ubuntu 16.04上安裝Docker有兩種方法。 一種方法是在現有的作業系統安裝上安裝它。 另一種方法是使用一個名為Docker機器的工具,在伺服器上自動安裝Docker。 在本教程中,您將學習如何在現有的Ubuntu 16.04安裝上安裝和使用它。
準備條件
64位Ubuntu 16.04伺服器
使用sudo特權的非根使用者,Ubuntu 16.04的初始設置指南說明了如何設置這個。
注意:Dockera需要一個64位版本的Ubuntu,以及一個等於或大於3.10的內核版本。 預設的64位Ubuntu 16.04伺服器滿足這些要求。
本教程中的所有命令都應該作為非根使用者運行。 如果命令需要root存取權限,那麼它將先于sudo。 Ubuntu 16.04的初始設置指南解釋了如何添加使用者並給予他們sudo訪問。
步驟1 -安裝Docker
官方Ubuntu 16.04存儲庫中提供的Docker安裝包可能不是最新版本。 要獲得最新最偉大的版本,請從官方的Docker存儲庫中安裝Docker。 本節將向您展示如何做到這一點。
首先,向系統添加官方Docker存儲庫的GPG金鑰: curl -fsSL HTTPs://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository 是由 Python-software-properties這個工具組提供的,所以要先安裝python-software-properties 才能使用 add-apt-repository sudo apt-get install python-software-properties sudo apt-get update 將Docker存儲庫添加到APT源: sudo add-apt-repository "deb [arch=amd64] HTTPs://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 接下來, 使用來自新添加的repo的Docker包更新包資料庫: sudo apt-get update 確保你要安裝的是Docker repo而不是預設的Ubuntu 16.04 repo: sudo apt-cache policy docker- ce
您應該看到類似于下面的輸出:
docker-ce: Installed: (none) Candidate: 17.03.1~ce-0~ubuntu-xenial Version table: 17.03.1~ce-0~ubuntu-xenial 500 500 HTTPs://download.docker.com/linux/ubuntu xenial/stable amd64 Packages 17.03.0~ce-0~ubuntu-xenial 500 500 HTTPs:// download.docker.com/linux/ubuntu xenial/stable amd64 Packages 請注意,Docker - ce沒有安裝,但是安裝的候選者來自于Ubuntu 16.04的Docker存儲庫。 docker - ce版本號可能不同。 最後,安裝docker: sudo apt-get install -y docker-ce 現在應該安裝Docker了,守護進程啟動了,進程啟動了。 檢查運行: sudo systemctl status docker
輸出應該類似如下,顯示服務是活動的和運行的:
docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; ve ndor preset: enabled) Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago Docs: HTTPs://docs.docker.com Main PID: 749 (docker) 現在,安裝Docker不僅提供了Docker服務(守護進程),還提供了Docker命令列實用程式, 或者Docker客戶機。 我們將在本教程中探討如何使用docker命令。 步驟2 -不使用Sudo(可選)執行Docker命令
預設情況下,運行docker命令需要根許可權——也就是說,您必須用sudo為命令首碼。 它也可以由docker組中的使用者運行,它是在安裝docker時自動創建的。 如果您嘗試運行docker命令,而無需在sudo或docker組中預先設置,您將得到這樣的輸出:
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. 如果您希望在運行docker命令時避免鍵入sudo,請將您的使用者名添加到docker組: sudo usermod -aG docker ${USER} 為了應用新的組成員身份,您可以退出伺服器並返回,或者您可以輸入以下內容: su - ${USER} 您將被提示輸入您的使用者的密碼繼續。 然後,您可以確認您的使用者現在通過輸入添加到docker組: id -nG 如果您需要向docker組添加您未登錄的使用者,則聲明該使用者名使用: sudo usermod -aG docker username 本文的其餘部分假設您在docker使用者組中運行docker命令。 如果您選擇不使用,請與sudo預收命令。
步驟3 -使用Docker命令
隨著Docker的安裝和工作,現在是熟悉命令列實用程式的時候了。 使用docker包括傳遞一系列選項和命令,然後是參數。 語法採用這種形式:docker [option] [command] [arguments]
要查看所有可用的子命令,請鍵入: docker
在Docker 1.11.1中,可用子命令的完整清單包括:
Output
attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders between a container and the local filesystem create Create a new container diff Inspect chan ges on a container's filesystem events Get real time events from the server exec Run a command in a running container expo rt Export a container's filesystem as a tar archive history Show the history of an image images List images import Import the contents from a tarball to create a filesystem image info Display system-wide information inspect Return low-level inf ormation on a container or image kill Kill a running container load Load an image from a tar archive or STDIN login Log in to a Docker registry logout Log out from a Docker registry logs Fetch the logs of a container network Manage Docker netwo rks pause Pause all processes within a container port List port mappings or a specific mapping for the CONTAINER ps List c ontainers pull Pull an image or a repository from a registry push Push an image or a repository to a registry rename Rename a container restart Re start a container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save one or more images to a tar archive search Search the Docker Hub for images start Start one or more stopped containe rs stats Display a live stream of container(s) resource usage statistics stop Stop a running container tag Tag an image in to a repository top Display the running processes of a container unpause Unpause all processes within a container update U pdate configuration of one or more containers version Show the Docker version information volume Manage Docker volumes wai t Block until a container stops, then print its exit code 要查看可用於特定命令的交換器,請鍵入: docker docker-subcommand --help 要查看有關Docker的 全系統資訊,請使用: docker info 步驟4 -使用Docker映射
Docker容器是由Docker映射運行的。 預設情況下,它從Docker Hub(Docker)管理的Docker registry中提取這些圖像。 Docker是Docker專案背後的公司。 任何人都可以在Docker Hub上構建和託管他們的Docker映射,因此大多數應用程式和Linux發行版本都需要在Docker Hub上運行Docker容器。
要檢查您是否可以從Docker Hub訪問和下載圖像,類型: docker run hello-world
應該包括以下內容的輸出應該表明Docker在正確地工作:
Output Hello from Docker. This message shows that your installation appears to be working correctly. ... 您可以通過使用搜索子命令的Docker命令搜索Docker Hub上可用的圖像。 例如,要搜索Ubuntu映射,輸入: docker search ubuntu
該腳本將抓取Docker Hub並返回其名稱與搜索字串匹配的所有圖像的清單。 在這種情況下,輸出將與以下類似:
Output NAME DESCRIPTION STARS OFFICIAL AUTOMATED ubuntu Ubuntu is a Debian-based Linux operating s... 3808 [OK] ubuntu-upstart Upstart is an event-based replacement for ... 61 [OK] torusware/speedus-ubuntu Always updated official Ubuntu docker imag... 25 [OK] rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 24 [OK] ubuntu-debootstrap debootstrap --variant=minbase --components... 23 [OK] nickistre/ubuntu-lamp LAMP server on Ubuntu 6 [OK] nickistre/ubuntu-lamp-wordpress LAMP on Ubuntu with wp-cli inst alled 5 [OK] nuagebec/ubuntu Simple always updated Ubuntu docker images... 4 [OK] nimmis/ubuntu This is a docker images different LTS vers... 4 [OK] maxexcloo/ubuntu Docker base image built on Ubuntu with Sup... 2 [OK] admiringworm/ubuntu Base ubuntu images based on the official u... 1 [OK] ... 在官方專欄中,OK表示專案背後的公司構建和支援的映射。 一旦你確定了你想要使用的圖像,你可以用拉子命令把它下載到你的電腦上,比如: docker pull ubuntu 下載圖像後,您可以使用運行子命令使用下載的映射運行一個容器。 如果在docker執行運行子命令時沒有下載圖像,docker客戶機將首先下載圖像,然後使用它運行一個容器: docker run ubuntu 要查看下載到您的電腦上的圖像,輸入: docker images
輸出應該類似如下:
Output REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest c5f1cf30c96b 7 days ago 120.8 MB hello-world latest 94df4f 0ce8a4 2 weeks ago 967 B 正如您將在本教程中看到的,您用來運行容器的圖像可以被修改並用於生成新的圖像,然後將這些圖像上傳到Docker Hub或其他Docker註冊中心(技術術語)。 步驟5 -運行Docker容器
您在前面運行的hello - world容器是一個在發出測試消息後運行和出口的容器的示例。 然而,容器可能比這更有用,它們可以是互動式的。 畢竟,它們與虛擬機器相似,只是更加資源友好。
作為一個例子,讓我們使用Ubuntu的最新圖像來運行一個容器。 i - t交換器的組合使您可以通過互動式shell訪問容器: docker run -it ubuntu 您的命令提示符應該更改,以反映您正在容器內工作的事實,並應採取以下形式: Output root@d9b100f2f636:/# 要點 :注意命令提示符中的容器id。 在上面的例子中,它是d9b100f2f636。 現在可以在容器內運行任何命令。 例如,讓我們更新容器內的包資料庫。 不需要使用sudo來首碼任何命令,因為您在具有root許可權的容器內操作: apt-get update 然後在其中安裝任何應用程式。 例如,讓我們安裝node . js。 apt-get install -y nodejs 步驟6—將容器中的更改提交到Docker映射
當您啟動Docker映射時,您可以像使用虛擬機器一樣創建、修改和刪除檔。 您所做的更改將只適用于該容器。 您可以啟動並停止它,但是一旦您使用docker rm命令銷毀它,更改將永遠丟失。 本節將向您展示如何將容器的狀態保存為新的Docker映射。
**在Ubuntu容器中安裝nodejs之後,您現在有一個容器從映射中運行,但是容器與您用來創建它的映射不同。
為了將容器的狀態保存為新的圖像,首先從它退出:** exit 然後使用以下命令將更改提交給新的Docker映射實例。 - m開關是用於説明您和其他人知道您所做的更改的提交消息,而- a則用於指定作者。 容器ID是您在開始互動式docker會話時前面提到的那個。 除非您在Docker Hub上創建了額外的存儲庫,否則存儲庫通常是您的Docker Hub使用者名: docker commit -m "What did you do to the image" -a "Author Name" contain er-id repository/new_image_name
例如:
docker commit -m "added node.js" -a "Sunday Ogwu-Chinuwa" d9b100f2f636 finid/ubuntu-nodejs 注意:當您提交圖像時,新映射將在本地保存,即在您的 電腦上。 在本教程的後面,您將學習如何將圖像推送到Docker中心這樣的Docker註冊中心,這樣您和其他人就可以對它進行評估和使用。 在操作完成後,在您的電腦上列出Docker映射應該顯示新映射,以及它源自的舊映射: docker images
輸出應該與此類似:
Output finid/ubuntu-nodejs latest 62359544c9ba 50 seconds ago 206.6 MB ubuntu latest c5f1cf30c96b 7 days ago 120.8 MB hell o-world latest 94df4f0ce8a4 2 weeks ago 967 B 在上面的例子中,ubuntu - nodejs是新圖像,它來自Docker Hub的現有ubuntu映射。 大小的差異反映了所做的改變。 在這個示例中,更改是安裝了NodeJS。 所以下次你需要使用帶有NodeJS預先安裝的Ubuntu來運行一個容器時,你就可以使用新圖像了。 圖像也可以由所謂的Dockerfile構建。 但這是一個非常複雜的過程,超出了本文的範圍。 步驟7 -列出Docker容器 在使用Docker一段時間後,您將在您的電腦上有許多活動(運行)和非活動容器。 要查看活動內容,請使用: docker ps
您將看到類似如下的輸出:
Output CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f7c79cc556dd ubuntu "/bin/bash" 3 hours ago Up 3 hours silly_spence 要查看所有的容器——活動的和非活動的,請通過- a開關: docker ps -a 要查看您創建的最新容器,請傳遞- l開關: docker ps -l 停止運行或活動容器就像輸入一樣簡單: docker stop c ontainer-id 可以在docker ps命令的輸出中找到容器id。 步驟8 -將Docker映射推到Docker存儲庫
從現有映射創建新映射後的下一個邏輯步驟是,與您的朋友、整個世界的Docker Hub或其他您可以訪問的Docker註冊表共用它。 要將圖像推送到Docker中心或任何其他Docker註冊表,您必須在那裡有一個帳戶。
**本節將向您展示如何將Docker映射推到Docker中心。 要瞭解如何創建自己的私人Docker註冊表,請查看如何在Ubuntu 14.04上建立一個私人Docker註冊表。
要在Docker Hub上創建帳戶,在Docker中心註冊。 然後,將您的圖像推送到Docker Hub。 您將被提示進行身份驗證:** docker login -u docker-registry-username 如果您指定了正確的密碼,那麼身份驗證應該成功。 然後你可以使用: docker login -u docker-registry-username
它需要一些時間來完成,當完成時,輸出將類似如下:
Output The push refers to a repository [docker.io/finid/ubuntu-nodejs] e3fbbfb44187: Pushed 5f70bf18a086: Pushed a3b 5c80a4eba: Pushed 7f18b442972b: Pushed 3ce512daaf78: Pushed 7aae4540b42d: Pushed ... 將圖像推送到註冊表後,應該在您的帳戶的儀表板上列出,就像下圖中顯示的那樣。
如果一個push嘗試導致了這種錯誤,那麼您可能沒有登錄:
Output The push refers to a repository [docker.io/finid/ubuntu-nodejs] e3fbbfb44187: Preparing 5f70bf18a086: Prepari ng a3b5c80a4eba: Preparing 7f18b442972b: Preparing 3ce512daaf78: Preparing 7aae4540b42d: Waiting unauthorized: authentication required 登錄,然後重複push嘗試。 結論 對於Docker來說,還有比這篇文章多得多的內容,但這足以讓您開始在Ubuntu 16.04上使用它了。 與大多數開源專案一樣,Docker是由快速開發的代碼庫構建的,因此要養成訪問專案博客頁面獲取最新資訊的習慣。 還可以查看DO社區中的其他Docker教程。