日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Docker教程-使用

發(fā)布時間:2024/4/11 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker教程-使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

本文主要介紹Docker正常使用過程涉及到的命令和一些基本操作,按照由簡單到復雜的過程逐一講解。

鏡像管理

回顧我之前博客所提到的,Docker允許在容器內運行應用程序,對應的命令為docker run,而容器就是鏡像的一個實例化,我們先講解本地鏡像管理。

基礎操作

sudo docker images命令可以查看本地主機上所有的Docker鏡像文件,例如剛安裝的docker-ce執(zhí)行結果如下。

簡單說明上述顯示的各項含義:

  • REPOSITORY:鏡像的倉庫源
  • TAG:鏡像的標簽,一般代表版本
  • IMAGE ID:鏡像的ID
  • CREATED:鏡像創(chuàng)建時間
  • SIZE:鏡像大小
    同一倉庫源可以有不同的TAG,表示不同的版本,如ubuntu倉庫源有15.10、18.04等多個版本,使用REPOSITORY:TAG來定義具體到版本的鏡像,若不指定鏡像的TAG則默認獲取TAG為latest的最新版。

docker pull repository:tag命令來獲取一個本地不存在的鏡像,例如使用sudo docker pull ubuntu:16.04獲取16.04版本的鏡像文件到本地,當然,若是直接使用這個本地沒有的鏡像,docker也會自動下載的。

docker search repository命令用于從Docker Hub網站搜索可用鏡像,也可以直接訪問該網站進行搜索。當你不清楚自己想要的鏡像的具體名稱,可以使用關鍵詞進行搜索。下圖舉例搜索httpd服務的鏡像。

簡單說明上述各項含義。

  • NAME: 鏡像倉庫源的名稱
  • DESCRIPTION: 鏡像的描述
  • OFFICIAL: 是否為docker官方發(fā)布
  • STARS: 類似Github的Star,越高則該鏡像越受歡迎。
  • AUTOMATED: 是否自動構建。

sudo docker run httpd命令用于在簡單容器中運行docker鏡像,可以運行下載到本地的鏡像,未下載則docker會先請求下載鏡像文件。(具體容器運行的命令和參數(shù)后文提到。

sudo docker rmi hello-world命令用于刪除一個鏡像,例如刪除hello-world鏡像如下圖。注意,正在被容器使用的鏡像不能刪除,需要先刪除容器,具體操作后文提到。

進階操作

當我們從docker鏡像倉庫獲取的鏡像已經不能滿足需求了,自己定制自己的鏡像是必然的選擇,這就涉及到鏡像更改的操作,主要有兩種方法:

  • 從已經創(chuàng)建的容器中更新鏡像并提交
  • 利用docker build命令配合DockerFile文件從零創(chuàng)建新的docker鏡像

相對而言,后者難度較高,對Linux需要充分了解,本文只提及第一種方法。

現(xiàn)在,首先運行一個容器并進行修改,隨后退出容器。(涉及容器命令后文提到)下圖id為c45e75d79135的容器就是創(chuàng)建的容器并已經被更改了。然后通過docker commit -m "desc" -a "author" id 鏡像名命令來向本地倉庫提交鏡像副本,通過命令可以查看本地當前鏡像,確實提交成功且能向其添加容器來運行。

這里先簡單說一下commit命令的幾個基本參數(shù)(示例如下圖):

  • -m: 本次提交的鏡像描述
  • -a: 指定鏡像作者
  • c45e75d79135:當前容器id
  • zhouchen/ubuntu:v2: 指定要創(chuàng)建的目標鏡像名,一般分為倉庫名和標簽名兩部分,:分隔,倉庫名一般采用作者名/應用名的方式命名。

最后,docker tag 鏡像id repository:newtag命令來為鏡像添加權限的標簽,示例如下,為ubuntu鏡像創(chuàng)建了一個新的tag。

容器管理

這部分主要講解容器的操作,容器是鏡像運行的一個實例化,一個鏡像可以產生多個容器,但每個容器只有一個對應的鏡像。

基礎操作

docker run -i -t ubuntu /bin/bash表示啟動一個以ubuntu鏡像為基礎的可交互的容器,進入交互式shell后可以使用exit命令直接退出容器。

其具體參數(shù)說明如下:

  • -i:交互式操作
  • -t:指定終端
  • ubuntu:鏡像名
  • /bin/bash:鏡像名后是命令,這里使用bash獲取一個交互式shell。

下圖就是一個簡單示例,可以通過命令行host名等變化看出容器和主機的切換。

docker ps -a命令可以查看所有的容器的詳細信息(把控鏡像、容器id、創(chuàng)建時間、),docker start 容器id可以啟動一個停止的容器,docker stop 容器id可以停止一個運行的容器,docker restart 容器id可以重啟容器的運行。下圖簡單演示上述幾個命令使用情況及容器狀態(tài)的變化。

然而,很多場景下,docker服務都是后臺運行的,此時需要指定容器的運行模式。docker run -i -t -d ubuntu /bin/bash表示后臺運行容器,只需要在run命令中加入-d選項即可,加入該選項后不會默認進入該容器了只會返回一個容器id,要想進入運行的容器需要使用attach或者exec命令,強烈推薦使用后者,具體說明如下。

docker attach 容器id命令來重新進入后臺正在運行的容器,下圖就是這樣操作,進入后臺容器并執(zhí)行一個輸出語句后退出容器,此時隨著退出容器,容器的運行也會終止。

docker exec -it 容器id /bin/bash命令也能進入這個運行中的容器,但是隨著容器的退出,容器運行不會終止,示例如下圖。

docker rm -f 容器id命令可以刪除指定的容器,不論這個容器的運行狀態(tài)如何(不加-f選項則不能刪除運行中的容器),而docker container prune則可以清理掉所有的處于停止狀態(tài)的容器。

進階操作

下面介紹容器的導出和導入。

很多時候,異地部署,需要將容器轉為本地文件導出,該命令為docker export 容器id > file.tar,就能將容器快照導出為本地tar文件。

docker import命令則可以將容器快照導入為鏡像,依據(jù)該鏡像可以再次創(chuàng)建容器。該命令接受本地文件或者遠程url。

下圖演示導出導入的過程,導入使用本地文件,命令為cat file.tar | docker import - test/ubuntu:v3。

實戰(zhàn)

下面具體講解一個案例,其作用是在容器中運行一個Web程序,并進行端口映射,使得主機可以訪問。

首先是拉取鏡像,這里使用一個STAR數(shù)較高的演示demo,training/webapp其運行一個flask的網站程序。隨后就是運行一個容器,里面運行Web服務,如下圖這里run命令加了一個-P或者-p選項,這表示將容器內部使用的網絡端口映射到主機,這樣才能進行訪問。

使用docker ps命令可以查看到這個運行中的容器,此時看到PORTS這一項有了內容,它表示將容器中5000端口(這是flask默認端口)轉發(fā)到主機的32768端口,這是因為run的時候使用了-P選項進行隨機轉發(fā),可以改用-p 主機端口:容器端口進行具體設置。

此時可以通過瀏覽器進行網頁訪問,結果如下。

下面補充幾條相關的命令。

首先,只查看端口可以使用docker port 容器id/容器名稱查看映射情況;
接著,docker logs -f 容器id/容器名稱命令查看容器內部標準輸出,-f選項表示持續(xù)輸出(Ctrl + C終止);
然后,docker top 容器id/容器名稱命令查看容器內部進程情況;
最后,docker inspect 容器id/容器名稱可以查看Docker運行情況,返回一個包含容器配置和狀態(tài)的json文件。

補充說明

本文主要介紹了Docker這一容器技術最基本的一些命令和使用方法,也在最后進行了一個Web程序的演示。篇幅較長,如有疏漏,歡迎評論指正。

總結

以上是生活随笔為你收集整理的Docker教程-使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。