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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Docker从入门到实战(四)

發布時間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker从入门到实战(四) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一步一步走,寫小白都能看懂的文章,將持續更新中,敬請期待!

Docker從入門到實戰(四)

Docker基礎

一:Docker基本操作

一般情況安裝Docker之后系統會自動創建一個Docker的用戶組,如果沒有創建可以手動創建
groupadd docker
把當前非root用戶加入group內,然后退出重新登陸就生效了(本例是新建了一個用戶cheng)
gpasswd -a cheng docker
service docker restart

切換當前會話到新group或者重啟X會話
newgrp – docker 或者 pkill X
注意這一步是必須的,否則因為groups命令獲取到的是緩存的組信息,剛添加的組信息未能生效,所以docker images 執行時同樣有錯,然后在終端中運行docker后按回車鍵,可以看到輸出的關于docker的使用基本說明。

Docker命令分為管理命令、鏡像命令、容器命令、倉庫命令、網路命令、數據卷命令、編排命令等,命令的分類在每次版本發布時都有調整,不過大同小異(下面以26個英文字母排序,幫助文檔請-h或者—help查看)

  • 依附容器的docker attach命令
    中文意思是附加、貼上、系上等意思,所以dokcer attach主要的作用就是進入容器,這個容器和后面的docker exec類似但是完全不一樣。
    使用exit命令或者ctrl+C命令是停止容器,退出容器命令可使用ctrl+P,然后使用ctrl+Q命令,即可退出容器的虛擬終端,此時容器還在運行。
    官方不推薦使用docker attach命令進入開啟了交互模式的容器,docker attach的主要功能是查看信息,容器內部操作有更加方便的docker exec命令,將在稍后介紹。
  • 構建鏡像的docker build 命令
    -c :控制cpu使用
    -f :選擇dockerfile名稱
    -m:設置構建內存上限
    -q:不顯示構建過程的一些信息
    -t:為構建的鏡像打上標簽
  • 提交容器的docker commit命令
    -a:添加作者信息,方便維護
    -c:修改dockerfile指令,目前支持的有以下指令
    CMD |ENTRYPOINT |ENV |EXPOSE |LABEL |ONBUILD |USER |VOLUME |WORKDIR
    -m:類似git commit -m這樣,提交修改信息
    -p: 暫停正在commit的操作
  • 復制文件到宿主機的docker cp 命令
    命令解釋如下:
    docker cp <containerID>:/file/path/within/container /host/path/target
  • 創建容器的docker create 命令
    在docker容器狀態中有一種是created,表示容器已經創建,但是沒有啟動,它和stop不同,stop通常都是手動或者外部操作容器停止的,而created有可能是手動創建但是沒有成功啟動,created狀態的容器不占用內存和CPU資源。創建后的容器可以使用docker start containerID的方式啟動容器。
  • 查看容器變化的docker diff命令
    docker diff 的語法如下:
    docker diff containerID
    docker diff命令主要用于顯示當前運行容器和鏡像的不同,docker diff的運行與容器的狀態無關,只是顯示文件差異
  • 查看事件的docker events命令
    docker events涵蓋了幾乎全部docker事件,通過-f指定參數,還可以過濾不必要的事件,得到更精簡的事件信息
    使用說明如下:
    docker events -f container=<name or id>
    docker events -f image=<tag or id >
    docker events -f volume=<name or id>
    docker events -f network=<name or id>
    docker events -f daemon=<name or id>
    只有reload一個值,用于監控記錄docker守護進程的狀態
    其他還有
    docker events -f label=<key> or label=<key>=<value>
    docker events -f event=<event action>
    docker events -f type=<container or image or volume or network r daemon>
  • 進入容器的docker exec命令
    docker exec主要用于進入容器內部進行操作的一個重要命令,比attach功能更強大,通過docker exec可以像使用ssh登陸服務器一樣操作容器,所以一般進入容器的命令都是使用docker exec而不是docker attach
    常用參數有以下幾個:
    -d:分離模式,在后臺運行的命令
    -i:交互模式
    -t:分配一個TTY
    -u:指定用戶和用戶組,格式:<name|uid>[:<group|gid>]
    使用exec命令進入容器內部就如同進入另一個機器一樣,并且使用exit命令,不會像attach那樣導致容器停止,所以非常適合容器內部操作
  • 導出容器的docker export命令
    docker export命令用于導出本地存儲的容器和docker save類似(用于導出本地鏡像),docker export導出的容器通常為tar包,方便傳輸到其他地方
    使用方法有兩種:
    docker export -o containerName.tar containerName
    docker export containerName > containerName.tar
    使用docker export命令導出的容器并不會壓縮容器大小
  • 查看鏡像歷史的docker history命令
    以ubuntu:14.04為例,查看鏡像歷史
    docker history ubuntu:14.04
  • 查看本地鏡像的docker images命令
    docker images命令用于查看本地存儲的docker鏡像
    主要參數如下:
    -a:顯示所有鏡像,包括中間鏡像(懸掛鏡像),默認不顯示
    -f:過濾顯示,可選的值有
    docker images -f dangling=[true|false]
    docker images -f label=<key>[=<=value>]
    docker images -f before=(<image-name>[:tag] |<image-id> |<image@digest>)
    docker images -f since=(<image-name>[:tag] |<image-id> |<image@digest>)
    -q:只顯示ID
  • 導入容器的docker import命令
    docker import命令和docker export命令相對,用于導入容器,導入后會變成鏡像,用法和docker export命令相似
    使用網絡地址導入
    docker import https;//example.com/container.tar
    通過管道導入
    cat exampleContainer.tgz |Docker import –message “New image imported from tarball”- exampleContainerlocal:newtag
    還可以直接導入本地tar包
    docker import /path/to/exapmpleContainer.tgz
    甚至可以從目錄導入
    sudo tar -c . |docker import – exampleContainerdir
  • 查看docker信息得docker info命令
    這個大概是這么多命令中最簡單易懂的命令了,-D參數顯示docker system的debug信息
    docker info -D
  • 查看各項詳細信息的docker inspect命令
    inspect有檢閱,檢查的意思,該命令的用途是檢查容器或者鏡像詳細信息的一個命令
  • 殺死容器的docker kill命令
    stop和kill的區別在于docker stop命令給容器中的進程發送SIGTERM信號,默認行為是會導致容器退出,當然,容器內程序可以捕獲該信號并自行處理,例如可以選擇忽略。而docker kill命令則是給容器的進程發送SIGKILL信號,該信號將會使容器必然退出。
  • 導入鏡像的docker load命令
    docker load命令的作用是導入使用docker save導出的鏡像,和export、import負責容器的導出導入類似,save、load負責鏡像的導出導入。
    -i:指定導出文件
    例如: docker load -I ubuntu.tar
    -q:可以不顯示導入的一些信息,在一些腳本中可有效減少輸出干擾
    還可以通過<符號導入,下面以一個之前導出的鏡像busybox為例
    docker load < busybox.tar.gz
  • 登陸倉庫的docker login命令
    docker login命令時 一個登陸到Registry的命令,Registry是docker公司為了更方便鏡像流通而設計的一種鏡像倉庫,像手機上的應用商店一樣,用戶可以在上面發布鏡像和拉取鏡像,官方的docker hub還提供更高級的企業服務
    使用docker login命令直接登陸到docker hub
    使用docker login localhost:8080的方式可以登錄到第三方倉庫
    登陸信息均會保存在$HOME/.docker/config.json目錄下
    D-Bus Secret Service網址為https://github.com/docker/docker-credential-helpers/releases
    Apple OS X keychain網址為https://github.com/docker/docker-credential-helpers/releases
    Microsoft Windows Credential Manager網址為https://github.com/docker/docker-credential-helpers/releases
    在config.json中修改
    {
    “credStore”:“osxkeychain”
    }
  • 登出倉庫的docker logout命令
    docker logout命令是登出命令,使用該命令可以登出倉庫,如果使用第三方證書存儲,只需要刪除證書文件以及config.json即可。
  • 查看容器日志的docker logs命令
    docker logs用于顯示容器的日志,這一點和attach有點類似,不同的地方在于attach可以相對輸出更自由,用戶可以定制輸出內容,而logs則是根據容器命令輸出信息,是無交互的
    主要參數如下
    --details:顯示更詳細的日志
    -f:持續輸出日志
    --since<string>:顯示某字符串開始的日志
    --tail<string>:顯示某字符串之前的日志
    -t:顯示時間戳
  • 管理網路的docker network命令
    docker network命令說明
    命令 說明
    network connect 連接一個容器到指定網路
    network create 創建一個網路
    network disconnect 指定一個網路斷開一個容器
    network inspect 顯示指定網絡詳細信息
    network ls 顯示全部docker網絡
    network rm 刪除指定網絡
    例如:docker netowork ls
  • 管理節點的docker node命令
    docker node命令
    命令 說明
    node demote 將集群中的指定manager節點降權
    node inspect 顯示節點的詳細信息
    node update 更新節點屬性
    node ps 顯示正在運行的節點
    node ls 顯示集群的全部節點
    node rm 從集群中刪除指定節點
  • 暫停容器的docker pause命令
    docker pause命令會暫停容器內的所有進程,此時,通過docker stats可以觀察到此時的資源使用情況是固定不變的,通過docker logs -f 也觀察不到日志的進一步輸出
    命令格式如下:
    docker pause <container>
  • 查看容器端口的docker port命令
    docker port命令用來輸出容器的端口信息,與docker ps 的顯示不同,該命令只會顯示”暴露”的端口,對于未指定的暴露端口不會顯示
  • 查看本地容器信息的docker ps命令
    docker ps命令顯示當前正在運行的容器
    主要參數如下
    -a:顯示全部容器,包括各種狀態的容器,只要存在就顯示
    -f:添加過濾條件
    -n:顯示最近創建的幾個容器(包括所有狀態的容器,-l顯示最近創建的一個,遇到持續輸出的信息還可以使用—no-trunc進行追加)
    -q:只顯示ID
    -s:顯示容器大小
    例:刪除所有已經停止的容器
    docker rm $(docker ps -a -q)
    刪除所有容器(包括運行中的容器)
    docker kill $(docker ps -q);docker rm $(docker ps -a -q)
    殺死所有正在運行的容器
    docker kill $(docker ps -a -q)
  • 拉取鏡像的docker pull命令
    docker pull命令為拉取鏡像的命令,通過該命令不僅可以拉取docker hub的鏡像,還可以通過指定倉庫地址拉取私有倉庫鏡像
    使用docker pull -a 會把所有標簽都拉取到本地,使用—disable-content-trust=false會在拉取時校驗鏡像,保證傳輸安全,默認是關閉的
  • 推送鏡像的docker push命令
    docker push命令的作用是把本地的鏡像推送到鏡像倉庫,和docker pull一樣,使用—disable-content-trust=false會在拉取時校驗鏡像,保證傳輸安全,默認是關閉的
    使用此命令時,如果不指定tag會默認把該鏡像的全部鏡像都推送到倉庫。例如本地存在ubuntu:14.04和ubuntu:16.04兩個鏡像,如果使用docker push ubuntu命令推送會把這兩個鏡像都推送到倉庫
  • 重命名容器的docker rename命令
    該命令可以在不改變容器狀態的情況下重命名容器,格式為:docker rename<舊容器名><新容器名>,該命令一次只能更改一個容器名稱
    該命令只能更改容器名稱,鏡像重命名會用docker tag命令
  • 重啟容器的docker restart命令
    此命令用來重啟容器(不是重啟docker,重啟docker可以使用systemctl restart docker命令或者service docker restart命令重啟docker),使用docker restart <Contailner1> <Contailner2>命令可以重啟多個容器
    -t參數可以在重啟設置等待容器停止的時間,如果容器在指定秒數之內沒有停止,docker就會執行docker kill操作殺死容器,以便完成重啟操作
  • 刪除容器的docker rm 命令
    docker rm <Container Name / Container ID>命令可以刪除已經停止的容器,可以刪除一個或多個容器
    -f:直接刪除一個正在運行的容器
    -l:刪除容器與其他容器的關聯,但是會保留容器
    -v:刪除容器的數據卷
  • 刪除鏡像的docker rmi命令
    此命令時刪除鏡像的命令,刪除鏡像時最好指定鏡像的tag,如果不指定會默認刪除鏡像的latest標簽。該命令同樣可以在后面接上多個鏡像名稱,刪除多個鏡像
    使用docker rmi命令刪除鏡像時,要確保沒有容器使用該鏡像也就是沒有容器是使用該鏡像啟動的,才可以刪除,否則會報錯
    -f:強制刪除鏡像,即便有容器正在使用該鏡像,但是這樣只會刪除鏡像標簽,不會影響正在運行的容器,實際上只有容器還在運行,鏡像就不會被真正刪除,用戶使用docker commit操作提交容器為鏡像,可以恢復鏡像。
  • 運行容器的docker run命令
    此命令參數超級多,可docker run –help查看
  • 導出鏡像的docker save命令
    此命令是用來導出鏡像的,后面可以連接多個鏡像,默認輸出是STDOUT,意味著需要指定一個目標文件,可以通過-o參數來指定
    例:導出一個鏡像
    docker save -o ubuntu.tar ubuntu:14.04
    導出多個容器
    docker save -o nginx_php.tar nginx:1.9 php:7.0-fpm
    除了-o參數,還可以使用>符號導出鏡像
    docker save ubuntu:14.04 > ubuntu.tar
  • 搜索鏡像的docker search命令
    -f:可以定制返回信息,可選參數有以下三個
    is-automated=(true|false)
    is-official=(true|false)
    stars=<number>
    例如:搜索ubuntu的官方鏡像
    搜索stars超過20并且是官方構建的ubuntu鏡像
    docker search -f stars=20 -f is-official=true ubuntu
    搜索stars超過20并且是自動構建的ubuntu鏡像
    docker search -f stars=20 -f is-automated=true ubuntu
    還有如—limit int這樣的參數用來限制顯示數量,默認是返回25個結果
  • 管理docker service命令
    docker service命令的作用是管理集群中的服務,需要與docker swarm配合使用。使用docker service時,主機必須是swarm的manager
    命令 說明
    service create 創建service
    service inspect 取得service的詳細信息
    service ps 取得service的任務信息
    service ls 取得service的列表信息
    service rm 刪除service
    service scale 調整service的replicas
    service update 更新service
  • 啟動容器的docker start命令
    此命令是啟動一個或多個停止狀態的容器,docker start命令后邊可以是容器名稱也可以是容器ID
    -a:顯示STDOUT/STDERR信息
    -i:顯示STDIN信息
  • 查看容器的docker stats命令
    此命令可以查看任何狀態下的容器狀態,該命令輸出的內容是實時更新的,取消查看時使用Ctrl+c即可
    不使用任何參數,會顯示所有正在運行的容器狀態,要顯示全部(包括非運行狀態)的容器狀態,可以添加-a參數
    只想查看某一時刻的狀態,可以使用--no-stream參數,這樣終端輸出結束后會自動返回可交互shell界面
    例:docker stats –-no-stream nginx
  • 停止容器的docker stop命令
    此命令會停止一個或者多個正在運行的容器,docker stop命令會向容器發送正常的信號,而docker kill命令會強制終止容器進程,后者可能造成數據丟失
  • 管理集群的docker swarm命令
    docker swarm與前面的docker node,docker service命令共同組成集群管理編排的“三劍客”
    操作 詳細說明
    init 初始化集群
    join 以node(worker)或者manager的身份加入集群
    join-token 管理join-token
    update 更新集群
    leave 退出集群
  • 設置鏡像標簽的docker tag命令
    docker tag命令可以給鏡像重命名,在docker中鏡像、容器、網路、數據卷等組件在運行時都會獲取一個ID,這個ID是獨一無二的,但是這個ID太長了,不容易記憶,所以有了tag的概念,給鏡像打上標簽
    例如:給一個沒有打標簽的鏡像打上標簽
    docker tag a70c7fad1812 myusername/images:default
    還可以只修改鏡像標簽,不改動名稱
    docker tag myusername/images:default myusername/images:new
    常用的情況還有修改名稱以及標簽
    docker tagmyusername/images:default myusername/images-new:latest
  • 查看容器進程的docker top命令
    此命令與linux下的top命令一樣,使用docker top <Container ID/Name>可以查看指定容器內正在運行的進程
  • 恢復暫停容器的docker unpause命令
    這個與前面的docker pause命令是相對的
  • 更新容器的docker update命令
    對容器的是指額更新時可以使用docker update命令,使用時容器不需要停止或者重啟。需要注意的是,這里說的容器設置是指容器啟動時添加的參數,例如:使用docker run命令時設置cpu限制,可以使用docker update命令取消
    在docker update命令的參數中,大部分與docker run命令的參數相同,唯一不同的是—restart參數,添加該參數是不會立刻修改容器配置,而是在未來容器重啟時生效
  • 查看docker版本的docker version命令
    查看docker版本,使用-f參數可以格式化輸出,例如:docker version -f '{{.Server}}'
    常用的是docker version
  • 管理數據卷的docker volume命令
    此命令是用來管理數據卷,數據卷是容器數據持久化的一個組件。
    ls:可以查看本機的全部數據卷
    rm:刪除不需要的數據卷(數據卷與容器的生命周期完全獨立,所以容器刪除后數據卷并不會刪除,時間久了數據卷就會越來越多)
    inspect:查看數據卷的詳細信息
    create:創建一個數據卷
    prune:刪除所有未使用的卷
  • 設置等待的docker wait命令
    執行docker wait命令后,該命令會“hang”在當前終端,直到容器停止,此時會打印出容器的退出碼。該命令一般會用在容器監控、異常捕捉方面。

    二:啟動第一個容器

    第一件事就是打印Hello World,就像我們學Python一樣,先開是學寫Hello World,下面直接運行hello-world鏡像,使用docker run命令是如果本地沒有該鏡像,那么會自動從Docker Hub中拉取鏡像
    docker run --rm hello-world
    這里使用的—rm表示容器退出后自動刪除該容器
    運行后信息如下
    Hello from Docker!
    This message shows that your installation appears to be working correctly.

  • To generate this message, Docker took the following steps:

  • The Docker client contacted the Docker daemon.
  • The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
  • The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
  • The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.
  • To try something more ambitious, you can run an Ubuntu container with:
    $ docker run -it ubuntu bash

    Share images, automate workflows, and more with a free Docker ID:
    https://cloud.docker.com/

    For more examples and ideas, visit:
    https://docs.docker.com/engine/userguide/
    這就是hello-world輸出的內容,顯示這些信息則說明docker運行正常了

    三:構建第一個docker鏡像

    vi Dockerfile
    FROM alpine
    CMD "echo" "Hello World !”
    保存文件,打開終端,使用docker build命令構建第一個鏡像
    docker build -t hello .
    -t 參數表示給構建的鏡像打上名為hello的標簽,構建完成后直接運行
    docker run –-rm hello
    如此就完成了一個鏡像的構建與運行

    轉載于:https://blog.51cto.com/12943999/2073654

    總結

    以上是生活随笔為你收集整理的Docker从入门到实战(四)的全部內容,希望文章能夠幫你解決所遇到的問題。

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