中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁 > news >正文

做衣服外單網(wǎng)站百度識圖在線識別網(wǎng)頁版

做衣服外單網(wǎng)站,百度識圖在線識別網(wǎng)頁版,蘇州外貿(mào)網(wǎng)站制作,個人做外貿(mào)怎么做推廣華子目錄 Docker鏡像操作創(chuàng)建鏡像方式1docker commit示例 方式2docker import示例1:從本地文件系統(tǒng)導(dǎo)入示例2:從遠(yuǎn)程URL導(dǎo)入注意事項 方式3docker build示例1:構(gòu)建鏡像并指定名稱和標(biāo)簽示例2:使用自定義的 Dockerfile 路徑構(gòu)建鏡像…

華子目錄

  • Docker鏡像操作
    • 創(chuàng)建鏡像
      • 方式1docker commit
        • 示例
      • 方式2docker import
        • 示例1:從本地文件系統(tǒng)導(dǎo)入
        • 示例2:從遠(yuǎn)程URL導(dǎo)入
        • 注意事項
      • 方式3docker build
        • 示例1:構(gòu)建鏡像并指定名稱和標(biāo)簽
        • 示例2:使用自定義的 Dockerfile 路徑構(gòu)建鏡像
        • 示例3:構(gòu)建時傳遞參數(shù)給 Dockerfile
        • 注意事項
    • 搜索倉庫鏡像docker search
    • 查看正在運(yùn)行的容器docker ps
    • 獲取鏡像docker pull
      • docker tag
      • docker history
    • 上傳鏡像docker push
      • 示例
      • 注意事項
    • 鏡像體積SIZE
    • 虛懸鏡像
    • 導(dǎo)出鏡像docker image save
    • 刪除鏡像docker image rm
      • 注意
    • 導(dǎo)入鏡像docker image load
    • 查看鏡像的詳細(xì)信息docker image inspect
  • Docker容器操作
    • 啟動容器
      • 方法1
        • 示例
        • 常用選項
        • 注意
      • 方式2(不推薦)
        • 注意
    • 刪除容器
      • 刪除單個容器
      • 刪除多個容器
      • 刪除所有容器(包括正在運(yùn)行的)
      • 清除所有處于關(guān)閉狀態(tài)的容器
      • 注意事項
      • 查看容器列表
    • 查看容器運(yùn)行狀態(tài)
    • 停止運(yùn)行的容器docker stop/kill
    • 激活關(guān)閉的容器docker start/restart
      • 示例
      • 注意事項
    • 查看容器
      • 查看容器的詳細(xì)信息docker container inspect
      • 查看容器內(nèi)的進(jìn)程docker top
        • 示例
        • 注意事項
      • docker stats
    • 在window上訪問Linux中運(yùn)行的nginx容器
    • 查詢?nèi)萜鲀?nèi)部日志docker logs
      • 示例
        • 示例1:查看容器的日志
        • 示例2:實時查看容器的日志
        • 示例3:查看容器的日志并限制輸出行數(shù)
        • 示例4:查看容器的日志并顯示時間戳
      • 注意事項
    • docker wait
      • 使用示例
      • 注意事項
    • 進(jìn)入容器docker exec
      • 常用選項
      • 示例
    • 導(dǎo)出容器docker export
      • 選項
      • 使用示例
      • 注意事項
    • 導(dǎo)入容器docker import
      • 示例
        • 示例1:從本地文件系統(tǒng)導(dǎo)入
        • 示例2:從遠(yuǎn)程URL導(dǎo)入
      • 注意事項
    • 查看容器的IP地址
    • 查看容器中的環(huán)境變量
    • 其他容器命令
      • docker rename
      • docker cp
      • docker diff
      • docker port
      • docker update

Docker鏡像操作

創(chuàng)建鏡像

方式1docker commit

docker commit 命令用于基于一個已存在的 Docker 容器來創(chuàng)建一個新的 Docker 鏡像。當(dāng)你修改了正在運(yùn)行的容器(例如,在容器中安裝了新的軟件包或更改了配置文件),并希望保存這些更改為一個新的鏡像時,你可以使用 docker commit 命令。

命令的基本語法如下:

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

其中:

  • OPTIONS 是可選參數(shù),用于配置 commit 的行為。

    • -a--author:設(shè)置新鏡像的作者。
    • -c--change:應(yīng)用 Dockerfile 指令來創(chuàng)建鏡像。
    • -m--message:設(shè)置 commit 時的說明信息。
    • -p--pause:在 commit 時,將容器暫停。這有助于減少在創(chuàng)建提交過程中遇到數(shù)據(jù)損壞的可能性。
  • CONTAINER 是你要基于其創(chuàng)建新鏡像的容器的名稱或 ID。

  • REPOSITORY[:TAG] 是新鏡像的倉庫名和標(biāo)簽。如果不指定標(biāo)簽,Docker 會使用默認(rèn)的 latest 標(biāo)簽。

示例

假設(shè)你有一個正在運(yùn)行的容器,ID 為 c162we1ycy2k,你想將這個容器保存為一個新的鏡像,并命名為 exp_mysql,標(biāo)簽為 v1,同時添加提交人信息為 test_exp 和說明信息為 test apache,你可以執(zhí)行以下命令:

docker commit -a "test_exp" -m "test apache" c162we1ycy2k exp_mysql:v1

執(zhí)行這個命令后,Docker 會基于 c162we1ycy2k 容器創(chuàng)建一個新的鏡像,名為 exp_mysql,標(biāo)簽為 v1,并且?guī)в兄付ǖ淖髡吆驼f明信息。

需要注意的是,使用 docker commit 創(chuàng)建的鏡像通常不如使用 Dockerfile 創(chuàng)建的鏡像透明和可維護(hù)。Dockerfile 提供了更清晰的鏡像構(gòu)建歷史和可重復(fù)性。然而,在某些情況下,如容器被入侵后需要保存現(xiàn)場,docker commit 可能是一個有用的工具。在常規(guī)的應(yīng)用開發(fā)和部署過程中,推薦使用 Dockerfile 來構(gòu)建和管理鏡像。

方式2docker import

docker import 命令用于將本地文件系統(tǒng)上的文件或目錄,或者從遠(yuǎn)程URL導(dǎo)入為Docker鏡像。

其基本語法如下:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

參數(shù)說明:

  • OPTIONS:可選參數(shù),用于配置導(dǎo)入操作的一些選項。
  • file|URL|-必需參數(shù),指定要導(dǎo)入的文件路徑或URL。可以是一個文件路徑,也可以是一個URL,或者使用-表示從標(biāo)準(zhǔn)輸入中讀取tar歸檔文件。
  • REPOSITORY:可選參數(shù),指定要創(chuàng)建的新鏡像的名稱。
  • TAG:可選參數(shù),指定要創(chuàng)建的新鏡像的標(biāo)簽。
示例1:從本地文件系統(tǒng)導(dǎo)入

假設(shè)我們有一個名為example.tar的tar歸檔文件,它包含了我們想要導(dǎo)入的文件系統(tǒng)。我們可以使用docker import命令來創(chuàng)建一個新的鏡像:

docker import example.tar myimage:1.0

這將會將example.tar中的文件系統(tǒng)導(dǎo)入到myimage:1.0鏡像中。之后,我們可以使用docker run命令來運(yùn)行這個新建的容器。

示例2:從遠(yuǎn)程URL導(dǎo)入

如果我們想要從一個遠(yuǎn)程URL導(dǎo)入文件系統(tǒng),我們可以直接將URL作為參數(shù)傳遞給docker import命令:

docker import http://example.com/path/to/image.tar myimage:1.0

這將會將遠(yuǎn)程URL中的文件系統(tǒng)導(dǎo)入到myimage:1.0鏡像中。

注意事項

如果在使用docker import命令時遇到無法啟動容器的問題,可能的原因包括導(dǎo)入的文件或URL中缺少依賴項或配置文件,或者與宿主機(jī)環(huán)境不兼容等。這時,需要檢查導(dǎo)入的文件或URL是否包含所需的依賴項和配置文件,以及宿主機(jī)環(huán)境是否與導(dǎo)入的鏡像兼容。如果以上方法都無法解決問題,可以嘗試重新導(dǎo)入鏡像。

請注意,docker import命令創(chuàng)建的鏡像可能不如使用Dockerfile創(chuàng)建的鏡像透明和可維護(hù)。在可能的情況下,推薦使用Dockerfile來構(gòu)建和管理鏡像。

方式3docker build

docker build 命令用于使用 Dockerfile 來創(chuàng)建 Docker 鏡像。Dockerfile 是一個文本文件,其中包含了一系列指令,這些指令描述了如何構(gòu)建一個 Docker 鏡像。通過執(zhí)行 docker build 命令并指定 Dockerfile 所在的目錄,Docker 會按照 Dockerfile 中的指令逐步構(gòu)建出一個新的鏡像。

基本語法如下:

docker build [OPTIONS] PATH | URL | -

其中:

  • OPTIONS 是可選參數(shù),用于配置構(gòu)建過程的行為。例如,--tag-t 用于指定鏡像的名稱和標(biāo)簽。
  • PATHDockerfile 所在的目錄路徑。Docker 會在該目錄下查找名為 Dockerfile(默認(rèn)的文件名,除非使用 -f 參數(shù)指定了其他文件名)的文件,并按照其中的指令構(gòu)建鏡像。
  • URL 是 Git 倉庫的 URL如果 Dockerfile 位于遠(yuǎn)程 Git 倉庫中,可以通過這個 URL 直接構(gòu)建。
  • - 表示從標(biāo)準(zhǔn)輸入(stdin)讀取 Dockerfile 內(nèi)容,這通常與管道操作符 | 結(jié)合使用,以便從其他命令的輸出中直接構(gòu)建鏡像。
示例1:構(gòu)建鏡像并指定名稱和標(biāo)簽
docker build -t myimage:latest .

這條命令會在當(dāng)前目錄(. 表示當(dāng)前目錄)下查找 Dockerfile,并按照其中的指令構(gòu)建一個新的鏡像,鏡像的名稱為 myimage,標(biāo)簽為 latest。

示例2:使用自定義的 Dockerfile 路徑構(gòu)建鏡像
docker build -t myimage:custom -f path/to/my/Dockerfile .

在這個例子中,-f 參數(shù)用于指定 Dockerfile 的路徑為 path/to/my/Dockerfile,而不是默認(rèn)的 Dockerfile。構(gòu)建出的鏡像名稱和標(biāo)簽分別為 myimagecustom。

示例3:構(gòu)建時傳遞參數(shù)給 Dockerfile
docker build --build-arg USER=johndoe --build-arg UID=1000 -t myimage:withargs .

在這個例子中,--build-arg 參數(shù)用于傳遞構(gòu)建參數(shù)給 Dockerfile 中的指令。在 Dockerfile 中,可以使用 ${USER}${UID} 的方式來引用這些參數(shù)。

注意事項
  • Dockerfile 中的指令必須按照正確的順序和語法編寫,否則構(gòu)建過程可能會失敗。
  • 在構(gòu)建過程中,Docker 會根據(jù) Dockerfile 中的指令創(chuàng)建臨時的容器,執(zhí)行相應(yīng)的命令,并生成鏡像分層。最終,所有命令執(zhí)行完畢后,會生成一個新的鏡像。
  • 優(yōu)化 Dockerfile 可以減少最終生成的鏡像大小,提高構(gòu)建效率。例如,盡量合并多個命令到一個命令中,避免不必要的中間層。

總之,docker build 命令是 Docker 中用于構(gòu)建鏡像的重要工具,通過合理使用 Dockerfile 和構(gòu)建參數(shù),可以高效地創(chuàng)建符合需求的 Docker 鏡像。

搜索倉庫鏡像docker search

  • docker search nginx 是一個 Docker 命令,用于在 Docker Hub 或其他配置的 Docker 鏡像倉庫中搜索名為 “nginx” 的鏡像。當(dāng)你執(zhí)行這個命令時,Docker 會向配置的倉庫發(fā)送搜索請求并返回與 “nginx” 相關(guān)的鏡像列表。

  • 搜索結(jié)果通常包括:

    • NAME:鏡像的名稱。
    • DESCRIPTION:鏡像的描述信息。
    • STARS:鏡像的星標(biāo)數(shù)量,反映了鏡像的受歡迎程度。
    • OFFICIAL:是否是官方鏡像的標(biāo)志。
[root@server ~]# docker search nginx
NAME                               DESCRIPTION                                      STARS     OFFICIAL
nginx                              Official build of Nginx.                         19721     [OK]
unit                               Official build of NGINX Unit: Universal Web …   25        [OK]
nginx/nginx-ingress                NGINX and  NGINX Plus Ingress Controllers fo…   89
nginxinc/nginx-unprivileged        Unprivileged NGINX Dockerfiles                   144
nginx/nginx-prometheus-exporter    NGINX Prometheus Exporter for NGINX and NGIN…   39
nginxinc/nginx-s3-gateway          Authenticating and caching gateway based on …   6
nginx/unit                         This repository is retired, use the Docker o…   64
nginx/nginx-ingress-operator       NGINX Ingress Operator for NGINX and NGINX P…   2
nginxinc/amplify-agent             NGINX Amplify Agent docker repository            1
nginx/nginx-quic-qns               NGINX QUIC interop                               1
nginxinc/ingress-demo              Ingress Demo                                     4
nginxproxy/nginx-proxy             Automated nginx proxy for Docker containers …   132
nginxproxy/acme-companion          Automated ACME SSL certificate generation fo…   131
bitnami/nginx                      Bitnami nginx Docker Image                       184
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr…   32
nginxinc/nginmesh_proxy_debug                                                       0
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we…   112
nginxproxy/docker-gen              Generate files from docker container meta-da…   16
nginxinc/mra-fakes3                                                                 0
kasmweb/nginx                      An Nginx image based off nginx:alpine and in…   7
nginxinc/mra_python_base                                                            0
nginxinc/ngx-rust-tool                                                              0
nginxinc/nginmesh_proxy_init                                                        0
rancher/nginx-ingress-controller                                                    12

查看正在運(yùn)行的容器docker ps

[root@server ~]# docker ps #列出正在運(yùn)行的容器[root@server ~]# docker ps -a  #列出正在運(yùn)行和未運(yùn)行的容器

獲取鏡像docker pull

  • Docker Hub上有大量的高質(zhì)量的鏡像可以用,從Docker鏡像倉庫獲取鏡像的命令是docker pull,其命令格式為:
[root@server ~]# docker pull [options] [域名[:端口號]/]倉庫名[:TAG標(biāo)簽]options:   #拉取時,options一般不寫-a   下載存儲庫中的所有標(biāo)記圖像-q    抑制冗長輸出#如果不指定TAG標(biāo)簽, 則默認(rèn)會選擇latest標(biāo)簽,這樣會下載倉庫中最新版本的鏡像。
[root@server ~]# docker pull nginx
Using default tag: latest   #默認(rèn)拉取最新版本
latest: Pulling from library/nginx
8a1e25ce7c4f: Pull complete
e78b137be355: Pull complete
39fc875bd2b2: Pull complete
035788421403: Pull complete
87c3fb37cbf2: Pull complete
c5cdd1ce752d: Pull complete
33952c599532: Pull complete
Digest: sha256:6db391d1c0cfb30588ba0bf72ea999404f2764febf0f1f196acd5867ac7efa7e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB[root@server ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
[root@server ~]# docker pull nginx:1.14
1.14: Pulling from library/nginx  #拉取1.14版本
27833a3ba0a5: Pull complete
0f23e58bd0b7: Pull complete
8ca774778e85: Pull complete
Digest: sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
Status: Downloaded newer image for nginx:1.14
docker.io/library/nginx:1.14
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB

docker tag

docker tag 命令添加的標(biāo)簽實際上起到了類似于軟鏈接的作用

[root@server ~]# docker tag nginx:1.14 test/nginx:v1
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
test/nginx   v1        295c7be07902   4 years ago   109MB
#這里我們可以看到nginx:1.14和test/nginx:v1的鏡像ID號是一致的[root@server ~]# docker image ls nginx
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
  • docker tag nginx:1.14 test/nginx:v1 命令用于給已有的 Docker 鏡像添加一個新的標(biāo)簽。在這個例子中,你正在給 nginx:1.14 鏡像添加一個新的標(biāo)簽 test/nginx:v1。

  • 具體來說:

    • nginx:1.14 是源鏡像的名稱和標(biāo)簽。這通常意味著你有一個名為 nginx,標(biāo)簽為 1.14 的鏡像在本地。
    • test/nginx:v1 是目標(biāo)鏡像的名稱和標(biāo)簽。其中 test 是新的鏡像倉庫名,nginx 是鏡像名,v1 是新的標(biāo)簽。
  • 執(zhí)行這個命令后,nginx:1.14 鏡像仍然存在于本地,并且你還會有一個新的標(biāo)簽 test/nginx:v1 指向相同的鏡像。這意味著你可以通過這兩個標(biāo)簽中的任何一個來運(yùn)行或推送鏡像。

  • 這個命令通常在你想要重新組織本地鏡像庫,或者準(zhǔn)備將鏡像推送到一個自定義的 Docker 倉庫時使用。例如,如果你有一個私有的 Docker 倉庫,并且你想要將本地的 nginx:1.14 鏡像推送到這個倉庫,你可能需要先給它加上一個符合你私有倉庫命名規(guī)范的標(biāo)簽。

  • 在執(zhí)行 docker tag 命令之后,你可以使用 docker images 來查看本地所有的鏡像及其標(biāo)簽,確保新的標(biāo)簽已經(jīng)被添加。

  • 如果之后你想要將這個新標(biāo)簽的鏡像推送到遠(yuǎn)程倉庫,你可以使用 docker push 命令,如下所示:

[root@server ~]# docker push test/nginx:v1

在執(zhí)行這個命令之前,你需要確保已經(jīng)登錄到了對應(yīng)的遠(yuǎn)程 Docker 倉庫(使用 docker login 命令),并且你有權(quán)限向該倉庫推送鏡像。

docker history

列出鏡像的各分層

[root@server ~]# docker history nginx:1.14  #查看該鏡像的層數(shù)
IMAGE          CREATED       CREATED BY                                       SIZE      COMMENT
295c7be07902   4 years ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
<missing>      4 years ago   /bin/sh -c #(nop)  STOPSIGNAL SIGTERM            0B
<missing>      4 years ago   /bin/sh -c #(nop)  EXPOSE 80                     0B
<missing>      4 years ago   /bin/sh -c ln -sf /dev/stdout /var/log/nginx…   22B
<missing>      4 years ago   /bin/sh -c set -x  && apt-get update  && apt…   53.8MB
<missing>      4 years ago   /bin/sh -c #(nop)  ENV NJS_VERSION=1.14.2.0.…   0B
<missing>      4 years ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.14.2-…   0B
<missing>      4 years ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
<missing>      4 years ago   /bin/sh -c #(nop)  CMD ["bash"]                  0B
<missing>      4 years ago   /bin/sh -c #(nop) ADD file:4fc310c0cb879c876…   55.3MB

docker history nginx:1.14 命令用于顯示 Docker 鏡像 nginx:1.14 的構(gòu)建歷史。執(zhí)行這個命令后,你會看到一個包含鏡像各層的列表每一層都記錄了創(chuàng)建時的命令以及該層的大小。

輸出可能類似于以下內(nèi)容:

IMAGE           CREATED             CREATED BY                                      SIZE                COMMENT
...             ...                 ...                                           ...                 ...
<missing>       months ago          /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon o...   0B                
<missing>       months ago          /bin/sh -c #(nop)  STOPSIGNAL SIGTERM         0B                
<missing>       months ago          /bin/sh -c #(nop)  EXPOSE 80/tcp              0B                
<missing>       months ago          /bin/sh -c ln -sf /dev/stdout /var/log/nginx...   22B               
<missing>       months ago          /bin/sh -c set -x     && addgroup --system --...   57.2MB            
<missing>       months ago          /bin/sh -c #(nop)  ENV NGINX_VERSION=1.14.2    0B                
<missing>       months ago          /bin/sh -c #(nop)  LABEL maintainer=NGINX Do...   0B                
<missing>       months ago          /bin/sh -c #(nop)  CMD ["bash"]                0B                
<missing>       months ago          /bin/sh -c #(nop) ADD file:15139a917863c048...   69.1MB            

在輸出中:

  • IMAGE 列顯示的是每一層的 ID。
  • CREATED 列顯示了該層創(chuàng)建的時間。
  • CREATED BY 列顯示了創(chuàng)建該層時執(zhí)行的 Dockerfile 指令。
  • SIZE 列顯示了該層的大小。
  • COMMENT 列通常用于記錄額外的信息,但在這個例子中沒有使用。

注意,有些層的 CREATED 列可能顯示為 <missing>,這通常意味著這些層是在構(gòu)建基礎(chǔ)鏡像時創(chuàng)建的,而不是在構(gòu)建 nginx:1.14 鏡像時直接添加的。

上傳鏡像docker push

docker push 命令用于將本地的 Docker 鏡像推送到 Docker 鏡像倉庫中,可以是 Docker Hub 這樣的公共倉庫,也可以是自托管的私有倉庫。在推送鏡像之前,你需要先使用 docker login 命令登錄到目標(biāo)倉庫。

基本語法如下:

docker push [OPTIONS] NAME[:TAG]

其中:

  • [OPTIONS] 是可選參數(shù),用于配置推送操作的一些選項。
  • NAME 是要推送的鏡像的名稱。
  • TAG 是可選的鏡像標(biāo)簽,用于指定要推送的鏡像版本。如果省略標(biāo)簽,Docker 會默認(rèn)使用 latest 標(biāo)簽。

推送鏡像時,Docker 會將鏡像拆分成多個層(layer),并逐一上傳到倉庫中。在上傳過程中,Docker 會顯示進(jìn)度條以及每層的大小信息。請注意,進(jìn)度條顯示的是未壓縮的層大小,實際的上傳數(shù)據(jù)在發(fā)送前會被壓縮,因此上傳的大小可能不會與進(jìn)度條完全匹配。

示例

假設(shè)你已經(jīng)登錄到了一個 Docker 倉庫,并且有一個名為 myimage 的本地鏡像,你可以使用以下命令將其推送到倉庫中:

docker push myimage:v1.0

這條命令會將標(biāo)簽為 v1.0myimage 鏡像推送到你登錄的 Docker 倉庫中。

注意事項

  • 在推送鏡像之前,請確保你已經(jīng)登錄到了目標(biāo) Docker 倉庫,并且擁有足夠的權(quán)限來推送鏡像。
  • 如果遇到推送失敗的情況,可能是由于網(wǎng)絡(luò)連接問題、倉庫權(quán)限問題、鏡像名稱或標(biāo)簽格式不正確等原因。你可以根據(jù)錯誤信息來排查問題。
  • 在推送鏡像時,最好加上明確的標(biāo)簽,以便在后續(xù)使用時能夠區(qū)分不同的鏡像版本。

總之,docker push 命令是 Docker 中用于將本地鏡像推送到遠(yuǎn)程倉庫的重要工具,通過它可以實現(xiàn)鏡像的共享和分發(fā)。

鏡像體積SIZE

[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
test/nginx   v1        295c7be07902   4 years ago   109MB
  • 這里標(biāo)識的所占用空間和在Docker Hub上看到的鏡像大小不同。Docker Hub中顯示的體積是壓縮后的體積。在鏡像下載和上傳過程中鏡像是保持著壓縮狀態(tài)的,因此 Docker Hub 所顯示的大小是網(wǎng)絡(luò)傳輸中更關(guān)心的流量大小。而docker images顯示的是鏡像下載到本地后展開的大小,準(zhǔn)確說,是展開后的各層所占空間的總和,因為鏡像到本地后,查看空間的時候, 更關(guān)心的是本地磁盤空間占用的大小。
  • 另外一個需要注意的問題是docker images
    列表中的鏡像體積總和并非是所有鏡像實際硬盤消耗。由于 Docker 鏡像是多層存儲結(jié)構(gòu),并且可以繼承、復(fù)用,因此不同鏡像可能會因為使用相同的基礎(chǔ)鏡像,從而擁有共同的層。由于 Docker 使用 UnionFs,相同的層只需要保存一份即可因此實際鏡像硬盤占用空間很可能要比這個列表鏡像大小的總和要小的多。

虛懸鏡像

如果docker images查看鏡像的顯示結(jié)果中出現(xiàn)了沒有倉庫名,也沒有標(biāo)簽,均為<none>的鏡像,舊的鏡像上的這個名稱則被取消,從而成為了<none>。除了 docker pull 可能導(dǎo)致這種情況, docker build 也同樣可以導(dǎo)致這種現(xiàn)象。 由于新舊鏡像同名舊鏡像名稱被取消,從而出現(xiàn)倉庫名、標(biāo)簽均為<one>的鏡像。這類無標(biāo)簽鏡像也被稱為虛懸鏡像(danglingimage),可以用下面的命令專門顯示這類鏡像:

#查看虛懸鏡像
[root@server ~]# docker images -f dangling=true 
  • 一般來說,虛懸鏡像已經(jīng)失去了存在的價值,是可以隨意刪除的,可以用下面的命令刪除:
#清空虛懸鏡像
[root@server ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
#顯示包括中間層鏡像在內(nèi)的所有鏡像
[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
test/nginx   v1        295c7be07902   4 years ago   109MB

在這里插入圖片描述

導(dǎo)出鏡像docker image save

  • 或者使用docker save

docker image save 是一個 Docker CLI 命令,用于將指定的 Docker 鏡像打包成一個 .tar 文件, 并保存到本地計算機(jī)上。這樣, 你就可以在沒有該Docker 環(huán)境的機(jī)器上導(dǎo)入和運(yùn)行這個鏡像,或者將其備份以供將來使用。

該命令的語法如下:

docker image save [OPTIONS] IMAGE [IMAGE...]

其中,OPTIONS 可以包括:

  • -o, --output:指定輸出文件名。
  • --quiet, -q:僅顯示鏡像ID。

例如,要將名為 myimage 的 Docker 鏡像保存到名為 myimage.tar 的文件中,你可以運(yùn)行以下命令:

docker image save -o myimage.tar myimage

你也可以在同一命令中指定多個鏡像名稱以將它們一起保存到歸檔文件中。例如:

docker image save -o multiple-images.tar image1 image2 image3

這將把 image1、image2image3 這三個鏡像一起打包到 multiple-images.tar 文件中。

總之,docker image save 命令提供了一種方便的方式來備份和傳輸 Docker 鏡像,是 Docker 管理中的重要工具之一。

[root@server ~]# docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
test/nginx   v1        295c7be07902   4 years ago   109MB[root@server ~]# docker image save ubuntu.tar.gz ubuntu  #執(zhí)行錯誤原因:沒有-o或重定向
cowardly refusing to save to a terminal. Use the -o flag or redirect[root@server ~]# docker image save ubuntu > ubuntu.tar.gz  #使用重定向
[root@server ~]# ll
-rw-r--r--  1 root root 80425472  324 11:33 ubuntu.tar.gz[root@server ~]# docker image save -o nginx.tar.gz nginx #使用-o
[root@server ~]# ll -h  #由文件大小,我們可以看到,他把上面兩個名為nginx的鏡像都打包了
總用量 367M
-rw-------  1 root root 290M  324 11:36 nginx.tar.gz
-rw-r--r--  1 root root  77M  324 11:33 ubuntu.tar.gz[root@server ~]# docker image save -o docker-nginx.gz nginx:1.14 #打包1.14版本的nginx
[root@server ~]# ll -h
總用量 475M
-rw-------  1 root root 108M  324 11:37 docker-nginx.gz
-rw-------  1 root root 290M  324 11:36 nginx.tar.gz
-rw-r--r--  1 root root  77M  324 11:33 ubuntu.tar.gz
#使用docker save
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago    77.9MB
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
[root@server ~]# docker save -o mysql.tar.gz mysql
[root@server ~]# ll -h
總用量 1.1G
-rw-------  1 root root 108M  324 11:37 docker-nginx.gz
-rw-------  1 root root 619M  324 12:25 mysql.tar.gz
-rw-------  1 root root 290M  324 11:36 nginx.tar.gz
-rw-r--r--  1 root root  77M  324 11:33 ubuntu.tar.gz

刪除鏡像docker image rm

刪除Docker鏡像的方法有多種,以下是一些常見的操作:

  1. 使用鏡像ID或鏡像名進(jìn)行刪除:

    • docker rmi [鏡像ID]
    • docker rmi [鏡像名:標(biāo)簽]

    請注意,如果鏡像正在被容器使用,你需要先刪除容器才能刪除鏡像。

  2. 強(qiáng)制刪除鏡像:
    當(dāng)Docker因為某種原因無法刪除某個鏡像時,可以使用-f選項來強(qiáng)制刪除。

    • docker rmi -f [鏡像ID或鏡像名]
  3. 刪除所有未使用的鏡像:
    使用docker image prune命令可以清理所有未被容器引用的鏡像。

    • docker image prune
  4. 刪除所有鏡像(包括正在使用的):
    這是一個較為危險的操作,因為它會刪除所有鏡像,包括那些正在被容器使用的鏡像。

    • docker rmi $(docker images -q)
  5. 批量刪除特定時間前的鏡像:
    使用過濾器可以刪除所有創(chuàng)建時間超過特定時長的鏡像。

    • docker image prune -a --filter "until=168h"
      上面的命令會刪除所有創(chuàng)建時間超過168小時(7天)的鏡像。
  6. 清理虛懸鏡像:
    虛懸鏡像通常是構(gòu)建過程中留下的,沒有標(biāo)簽的鏡像。可以使用docker image prune命令進(jìn)行清理。

    • docker image prune
  7. 查看Docker鏡像、容器和卷:
    在刪除之前,建議首先查看當(dāng)前系統(tǒng)中存在的Docker鏡像、容器和卷,以避免誤刪。

    • 使用docker images查看鏡像列表。
    • 使用docker ps查看正在運(yùn)行的容器。
    • 使用docker volume ls查看卷列表。

在刪除鏡像之前,請確保已經(jīng)備份了重要的數(shù)據(jù),并且確認(rèn)要刪除的鏡像確實不再需要,以避免數(shù)據(jù)丟失或服務(wù)中斷。

[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB
nginx        1.14      295c7be07902   4 years ago   109MB
test/nginx   v1        295c7be07902   4 years ago   109MB#第一種刪除方式docker image rm 鏡像名
[root@server ~]# docker image rm nginx:1.14
Untagged: nginx:1.14
Untagged: nginx@sha256:f7988fb6c02e0ce69257d9bd9cf37ae20a60f1df7563c3a2a6abe24160306b8d
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB
test/nginx   v1        295c7be07902   4 years ago   109MB#第二種刪除方式docker rmi 鏡像名
[root@server ~]# docker rmi nginx
Untagged: nginx:latest
Untagged: nginx@sha256:6db391d1c0cfb30588ba0bf72ea999404f2764febf0f1f196acd5867ac7efa7e
Deleted: sha256:92b11f67642b62bbb98e7e49169c346b30e20cd3c1c034d31087e46924b9312e
Deleted: sha256:d9e826dbb4b3c5770fe92638baa8c6614f210d782a5d021a123fe9fa1f92c23d
Deleted: sha256:2a75285e888884bed4d630896c86ecd71739c6e82669e21ad7a050f33c9ac48d
Deleted: sha256:32bfe3f040358ab8f9872a63d4ddefdc68f35d991ca10a812cbac5912ae9f97b
Deleted: sha256:1330486eb62ea7e96f384961b77b0fc85f5d4422e761114ef3a72e7cb89751a4
Deleted: sha256:a375372209a0f2b2c697a52cce46bc41b495bf86184ae83dd5146e20c22078eb
Deleted: sha256:450787ca55caa59d0288de9cf36fc6b77d1b208a77eb837ec3d25b385f99cafb
Deleted: sha256:a483da8ab3e941547542718cacd3258c6c705a63e94183c837c9bc44eb608999
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
test/nginx   v1        295c7be07902   4 years ago   109MB[root@server ~]# docker pull nginx  #再拉取一個nginx鏡像
Using default tag: latest
latest: Pulling from library/nginx
8a1e25ce7c4f: Pull complete
e78b137be355: Pull complete
39fc875bd2b2: Pull complete
035788421403: Pull complete
87c3fb37cbf2: Pull complete
c5cdd1ce752d: Pull complete
33952c599532: Pull complete
Digest: sha256:6db391d1c0cfb30588ba0bf72ea999404f2764febf0f1f196acd5867ac7efa7e
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB
test/nginx   v1        295c7be07902   4 years ago   109MB#通過鏡像ID強(qiáng)制刪除鏡像(-f表示強(qiáng)制性刪除)
[root@server ~]# docker rmi -f 295 
Untagged: test/nginx:v1
Deleted: sha256:295c7be079025306c4f1d65997fcf7adb411c88f139ad1d34b537164aa060369
Deleted: sha256:19606512dfe192788a55d7c1efb9ec02041b4e318587632f755c5112f927e0e3
Deleted: sha256:0b83495b3ad3db8663870c3babeba503a35740537a5e25acdf61ce6a8bdad06f
Deleted: sha256:5dacd731af1b0386ead06c8b1feff9f65d9e0bdfec032d2cd0bc03690698feda
[root@server ~]# docker images -a  #列出所有鏡像
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB

注意

  • 如果觀察上面這幾個命令的運(yùn)行輸出信息的話,你會注意到刪除行為分為兩類一類是Untagged另一類是Deleted。鏡像的唯一標(biāo)
    識是其 ID 和摘要
    而一個鏡像可以有多個標(biāo)簽。
  • 當(dāng)我們使用上面命令刪除鏡像的時候, 實際上是在要求刪除某個標(biāo)簽的鏡像。所以首先需要做的是將滿足我們要求的所有鏡像標(biāo)簽都取
    ,這就是我們看到的 Untagged 的信息。
  • 因為一個鏡像可以對應(yīng)多個標(biāo)簽,因此當(dāng)我們刪除了所指定的標(biāo)簽后可能還有別的標(biāo)簽指向了這個鏡像,如果是這種情況, 那么Delete 行為就不會發(fā)生所以并非所有的 docker image rm 都會產(chǎn)生刪除鏡像的行為,有可能僅僅是取消了某個標(biāo)簽而已。
  • 當(dāng)該鏡像所有的標(biāo)簽都被取消了,該鏡像很可能會失去了存在的意義,因此會觸發(fā)delete刪除行為。鏡像是多層存儲結(jié)構(gòu), 因此在刪除的時候也是從上層向基礎(chǔ)層方向依次進(jìn)行判斷刪除,鏡像的多層結(jié)構(gòu)讓鏡像復(fù)用變動非常容易,因此很有可能某個其它鏡像正依賴于當(dāng)前鏡像的某一層。 這種情況,依舊不會觸發(fā)刪除該層的行為。 直到?jīng)]有任何層依賴當(dāng)前層時,才會真實的刪除當(dāng)前層。
  • 除了鏡像依賴以外,還需要注意的是容器對鏡像的依賴。如果有用這個鏡像啟動的容器存在(即使容器沒有運(yùn)行), 那么同樣不可以刪除這個鏡像。

導(dǎo)入鏡像docker image load

  • 或者使用docker load

docker image load 是一個 Docker CLI 命令,用于將以前使用 docker save 命令保存的鏡像加載到 Docker 中。這個命令可以將 .tar 文件中存儲的一個或多個 Docker 鏡像恢復(fù)為其原始狀態(tài),并將其添加到本地 Docker 鏡像庫中。

通常,你可能會先使用 docker save 命令將一個或多個鏡像保存到一個 .tar 文件中,以便在沒有直接訪問 Docker 倉庫的情況下,能夠?qū)⑦@些鏡像傳輸?shù)狡渌麢C(jī)器或備份起來。然后,當(dāng)需要加載這些鏡像時,可以使用 docker image load 命令將它們從 .tar 文件中恢復(fù)到 Docker 中。

下面是 docker image load 命令的基本使用方式:

docker image load < 鏡像文件名.tar

或者,你可以使用 -i 選項指定輸入文件的路徑:

docker image load -i /path/to/鏡像文件名.tar

例如,如果你有一個名為 myimage.tar 的文件,你可以使用以下命令將其加載到 Docker 中:

docker image load < myimage.tar

加載完成后,你可以使用 docker images 命令來查看新加載的鏡像是否出現(xiàn)在本地鏡像列表中。

需要注意的是,docker image load 命令不會創(chuàng)建容器,只是將鏡像加載到本地 Docker 環(huán)境中。要基于這些鏡像創(chuàng)建容器,你需要使用 docker run 命令。

[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago    77.9MB
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
[root@server ~]# docker images -aq
ca2b0f26964c
92b11f67642b
019814493c7a
[root@server ~]# ll -h
總用量 1.1G
-rw-------  1 root root 108M  324 11:37 docker-nginx.gz
-rw-------  1 root root 619M  324 12:25 mysql.tar.gz
-rw-------  1 root root 290M  324 11:36 nginx.tar.gz
-rw-r--r--  1 root root  77M  324 11:33 ubuntu.tar.gz[root@server ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago   77.9MB
nginx        latest    92b11f67642b   5 weeks ago   187MB[root@server ~]# docker image load -i mysql.tar.gz
18a3ada103a9: Loading layer [==================================================>]  118.8MB/118.8MB
96549124ed74: Loading layer [==================================================>]  11.26kB/11.26kB
331304b328ea: Loading layer [==================================================>]  2.359MB/2.359MB
7d05fbfb31ee: Loading layer [==================================================>]  13.85MB/13.85MB
d8fb47b60f94: Loading layer [==================================================>]  6.656kB/6.656kB
a5d9662dde43: Loading layer [==================================================>]  3.072kB/3.072kB
7fafcf5c6ac1: Loading layer [==================================================>]    201MB/201MB
ec9a59df23f2: Loading layer [==================================================>]  3.072kB/3.072kB
5458227f9e0f: Loading layer [==================================================>]  312.7MB/312.7MB
14544546851f: Loading layer [==================================================>]   16.9kB/16.9kB
Loaded image: mysql:latest
[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago    77.9MB
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB[root@server ~]# ll -h
總用量 1.1G
-rw-------  1 root root 108M  324 11:37 docker-nginx.gz
-rw-------  1 root root 619M  324 12:25 mysql.tar.gz
-rw-------  1 root root 290M  324 11:36 nginx.tar.gz
-rw-r--r--  1 root root  77M  324 11:33 ubuntu.tar.gz[root@server ~]# docker load < ubuntu.tar.gz
5498e8c22f69: Loading layer [==================================================>]  80.41MB/80.41MB
Loaded image: ubuntu:latest
[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago    77.9MB
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB

查看鏡像的詳細(xì)信息docker image inspect

docker image inspect 是一個 Docker CLI 命令,用于獲取一個或多個 Docker 鏡像的詳細(xì)信息。這個命令返回有關(guān)鏡像的 JSON 格式的結(jié)構(gòu)化數(shù)據(jù),包括鏡像的 ID、創(chuàng)建時間、父鏡像、大小、配置、層等。

基本語法如下:

docker image inspect [OPTIONS] IMAGE [IMAGE...]

其中,IMAGE 是你想要檢查的鏡像的名稱或 ID??梢灾付ǘ鄠€鏡像來同時獲取它們的信息。

OPTIONS 是可選參數(shù),可以用來定制輸出的格式。比如,可以使用 --format 參數(shù)來指定一個 Go 模板,以自定義輸出的格式。

例如,如果你想要獲取名為 myimage 的鏡像的詳細(xì)信息,你可以運(yùn)行:

docker image inspect myimage

這將返回一個 JSON 對象,其中包含了 myimage 鏡像的詳細(xì)信息。

如果你只想獲取某些特定的信息,比如鏡像的創(chuàng)建時間,你可以使用 --format 參數(shù)來定制輸出。例如:

docker image inspect --format='{{.Created}}' myimage

這將只返回鏡像的創(chuàng)建時間。

[root@server ~]# docker images -a
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ubuntu       latest    ca2b0f26964c   3 weeks ago    77.9MB
nginx        latest    92b11f67642b   5 weeks ago    187MB
mysql        latest    019814493c7a   2 months ago   632MB
[root@server ~]# docker image inspect mysql
[{"Id": "sha256:019814493c7ab16a057af0399b1288a1208b75ba852b915541840095c0fedfd0","RepoTags": ["mysql:latest"],"RepoDigests": [],"Parent": "","Comment": "buildkit.dockerfile.v0","Created": "2024-01-18T17:37:32Z","DockerVersion": "","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"ExposedPorts": {"3306/tcp": {},"33060/tcp": {}},"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin","GOSU_VERSION=1.16","MYSQL_MAJOR=innovation","MYSQL_VERSION=8.3.0-1.el8","MYSQL_SHELL_VERSION=8.3.0-1.el8"],"Cmd": ["mysqld"],"ArgsEscaped": true,"Image": "","Volumes": {"/var/lib/mysql": {}},"WorkingDir": "","Entrypoint": ["docker-entrypoint.sh"],"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 632338890,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/71019f4f52c5c447bc6c339e4a33d35d43060053f80199afe55f0a74c97f950b/diff:/var/lib/docker/overlay2/98071bd50aaace91cafcbbd6d6f1f61667b863b844a14c55500d9b5dff5496ea/diff:/var/lib/docker/overlay2/51bbf41162dfd698ab0d05d934272ac6d407ee840dd23ad148b689ec08ff6ad0/diff:/var/lib/docker/overlay2/ea36002cf9f7fab18e7f80f6a73876de5ab2a9600091a5c3abf299eec79f8fc2/diff:/var/lib/docker/overlay2/59e2297f480e1a4fbe0b2664bab19ac5875598ab5b8096dfbcd4a3ad7f1a3bc3/diff:/var/lib/docker/overlay2/73c545c7c9c2075a9027c75f35d26d571395f0d2e2ec5c347c553b26a005ea8f/diff:/var/lib/docker/overlay2/5fa774e73b382b03832fde505e94e3d1583edb1ea81c331646ece1480a2361c8/diff:/var/lib/docker/overlay2/8a43e4bce01c3577aa197076d2afe2f35866386e6d999a211c72b7aa53f0cfa4/diff:/var/lib/docker/overlay2/031b942ad12868d5b2f563779b592447f7c7f1439d6d402b7587e9a6be920e25/diff","MergedDir": "/var/lib/docker/overlay2/9f2e70c39118a4a92510f835d5e2fc704fb5a88d4c6b5dbf1c1c8cb0b15b0794/merged","UpperDir": "/var/lib/docker/overlay2/9f2e70c39118a4a92510f835d5e2fc704fb5a88d4c6b5dbf1c1c8cb0b15b0794/diff","WorkDir": "/var/lib/docker/overlay2/9f2e70c39118a4a92510f835d5e2fc704fb5a88d4c6b5dbf1c1c8cb0b15b0794/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:18a3ada103a9229bc00b549b66ae7caa0bc0eb47e785859d8b1346a254a871d1","sha256:96549124ed74012f28231a5c9584343eccb1352a3cdfc17234fa0d22d59c0667","sha256:331304b328ea1ee4e6f879ee5ea83a84dfeee92e8f6eed430dc0ec91daf6325e","sha256:7d05fbfb31eee6df20a572fafc7b50f9518838d3c13de89b88e9fae44585306e","sha256:d8fb47b60f94e1033c12c982cc669024cafa77b33d9ad7d1cd7f2605740417b5","sha256:a5d9662dde43371156b5a4dd21052b47f40606a780d039d37ed112e03049baf9","sha256:7fafcf5c6ac1cd816b47ef599217575cdde05e4a05e12e4e96afbe3e6236896e","sha256:ec9a59df23f223ccd0d7d4490f904c95b1d1d1c6ad83d11c4cb7ebc1b1672d74","sha256:5458227f9e0f698c36186c085570240db025e101186f88fce300958cda13651f","sha256:14544546851f4a2de63ac98a464da491096c36cdfc94b10cd26dc8da572a5eb5"]},"Metadata": {"LastTagTime": "0001-01-01T00:00:00Z"}}
]

Docker容器操作

啟動容器

Docker運(yùn)行容器前需要本地存在對應(yīng)的鏡像,如果本地不存在該鏡像,Docker會從鏡像倉庫下載該鏡像。

方法1

  • 使用docker run
  • 或者使用docker container run

docker runDocker 命令行接口(CLI)中用于創(chuàng)建并啟動新容器的命令。使用 docker run,您可以基于指定的鏡像來運(yùn)行一個新的容器實例,并可以傳遞各種參數(shù)來配置容器的行為。

下面是 docker run 的基本語法:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS:這是可選的,用于配置容器的行為。例如,您可以設(shè)置端口映射、環(huán)境變量、卷掛載等。
  • IMAGE:指定要基于哪個鏡像來創(chuàng)建并啟動容器。
  • COMMAND:在容器內(nèi)部要執(zhí)行的命令。如果鏡像定義了默認(rèn)的命令,那么這個 COMMAND 可以省略。
  • ARG:傳遞給 COMMAND 的參數(shù)。
示例
  1. 運(yùn)行一個基于 ubuntu 鏡像的容器,并啟動 bash shell
docker run -it ubuntu bash

這里 -it 選項用于保持容器的標(biāo)準(zhǔn)輸入(stdin)打開,并分配一個偽終端(pseudo-TTY)。

  1. 在后臺運(yùn)行一個基于 nginx 鏡像的容器,并映射端口
docker run -d -p 8080:80 nginx

這里 -d 選項用于在后臺運(yùn)行容器,-p 8080:80 將容器的 80 端口映射到主機(jī)的 8080 端口。

  1. 設(shè)置環(huán)境變量并運(yùn)行容器
docker run -e MY_VAR=myvalue ubuntu echo $MY_VAR

這里 -e MY_VAR=myvalue 設(shè)置了一個環(huán)境變量 MY_VAR,并在容器內(nèi)執(zhí)行 echo $MY_VAR 命令。

  1. 掛載卷并運(yùn)行容器
docker run -v /host/directory:/container/directory ubuntu ls /container/directory

這里 -v /host/directory:/container/directory 將主機(jī)上的 /host/directory 目錄掛載到容器內(nèi)的 /container/directory 目錄。

常用選項
  • -d, --detach:在后臺運(yùn)行容器并打印容器 ID。
  • -i, --interactive:保持 stdin 打開,即交互式訪問
  • -t, --tty分配一個偽終端或保持 stdin 打開。
  • -p, --publish list:發(fā)布容器端口到主機(jī)。格式為主機(jī)端口:容器端口
  • -P:隨機(jī)端口映射,容器內(nèi)部端口隨機(jī)映射到主機(jī)的端口
  • -e, --env list:設(shè)置環(huán)境變量。
  • -v, --volume list:掛載卷。
  • --rm容器一停,自動刪除
  • --name string:為容器指定一個名稱。
  • --restart string:設(shè)置容器的重啟策略。
  • --network string:指定容器要使用的網(wǎng)絡(luò)。
注意

如果在沒有對應(yīng)鏡像的情況下使用docker run,則docker run就等價于docker pull,docker create,docker start

[root@server ~]# docker run -it ubuntu bash
root@58349642f2b2:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
root@58349642f2b2:/# exit
exit
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED          STATUS                      PORTS     NAMES
58349642f2b2   ubuntu    "bash"    26 seconds ago   Exited (0) 21 seconds ago             quizzical_meninsky
#Exited表示容器已關(guān)閉[root@server ~]# docker run -it --rm ubuntu bash
root@24d9e0f33ed4:/# ls
bin   dev  home  lib32  libx32  mnt  proc  run   srv  tmp  var
boot  etc  lib   lib64  media   opt  root  sbin  sys  usr
root@24d9e0f33ed4:/# exit
exit
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@server ~]# docker run -it -d -P nginx bash
8cf6390252dfdd5025ebcb9329cd4fd45fedc6a9174bf564cf1b5e6d7597e725
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                      NAMES
8cf6390252df   nginx     "/docker-entrypoint.…"   11 seconds ago   Up 10 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   wonderful_austin
#Up表示容器正在運(yùn)行
[root@server ~]# docker run --name web1 -it -d -p 8888:80 nginx #加-d后臺運(yùn)行
d7688268707e97555ee4745bfdf0e7f334f8e2d690325b74309f1012656fdcad
[root@server ~]# docker port web1 #查看web1的docker端口映射
80/tcp -> 0.0.0.0:8888
80/tcp -> [::]:8888
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                 NAMES
d7688268707e   nginx     "/docker-entrypoint.…"   22 seconds ago   Up 21 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker run --name web1 -it -p 8888:80 nginx /bin/bash #不加-d進(jìn)入交互模式
root@1f1e37ecc503:/# ls
bin   dev                  docker-entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  docker-entrypoint.d  etc                   lib   media  opt  root  sbin  sys  usr
root@1f1e37ecc503:/# exit
exit
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                     PORTS     NAMES
1f1e37ecc503   nginx     "/docker-entrypoint.…"   27 seconds ago   Exited (0) 6 seconds ago             web1

方式2(不推薦)

  • 先使用docker create創(chuàng)建一個容器
  • 在使用docker start啟動容器
注意

如果在沒有對應(yīng)鏡像的情況下使用docker create,則docker create就等價于docker pull,docker create

刪除容器

要刪除Docker容器,你可以使用docker rm命令。以下是關(guān)于刪除容器的一些常見操作和注意事項:

刪除單個容器

要刪除一個正在運(yùn)行的容器,你需要首先停止它,然后再刪除?;蛘?#xff0c;你可以使用-f選項來強(qiáng)制刪除正在運(yùn)行的容器。

# 停止容器
docker stop [容器ID或名稱]# 刪除容器
docker rm [容器ID或名稱]

或者,你可以一步完成,直接強(qiáng)制刪除正在運(yùn)行的容器:

docker rm -f [容器ID或名稱]

刪除多個容器

你可以使用空格分隔的容器ID或名稱列表來刪除多個容器:

docker rm [容器ID1] [容器ID2] ...

或者,結(jié)合docker ps命令和xargs來刪除所有停止的容器:

docker rm $(docker ps -aq)

這里的-a選項表示顯示所有容器(包括已停止的),-q選項表示只輸出容器ID。

刪除所有容器(包括正在運(yùn)行的)

要刪除所有容器,包括正在運(yùn)行的容器,可以使用以下命令:

docker rm -f $(docker ps -aq)

這將會強(qiáng)制刪除所有容器,所以請確保你真的想要這么做。

清除所有處于關(guān)閉狀態(tài)的容器

[root@server ~]# docker container prune

注意事項

  • 在刪除容器之前,請確保容器內(nèi)的數(shù)據(jù)已經(jīng)備份或不再需要,因為刪除容器會同時刪除容器內(nèi)的文件系統(tǒng)。
  • 如果容器正在運(yùn)行重要的服務(wù)或進(jìn)程,請確保在刪除之前已經(jīng)進(jìn)行了適當(dāng)?shù)耐C(jī)處理。
  • 使用-f選項強(qiáng)制刪除容器時,請格外小心,因為這可能會中斷正在運(yùn)行的進(jìn)程或?qū)е聰?shù)據(jù)丟失。

查看容器列表

在刪除容器之前,你可以使用docker ps命令查看正在運(yùn)行的容器,或者使用docker ps -a查看所有容器(包括已停止的)。這可以幫助你確定要刪除的容器。

# 查看正在運(yùn)行的容器
docker ps# 查看所有容器(包括已停止的)
docker ps -a

通過結(jié)合這些命令和選項,你可以有效地管理Docker容器,確保只刪除不再需要的容器。

[root@server ~]# docker run -it -d -P nginx bash
8cf6390252dfdd5025ebcb9329cd4fd45fedc6a9174bf564cf1b5e6d7597e725
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                        NAMES
8cf6390252df   nginx     "/docker-entrypoint.…"   11 seconds ago   Up 10 seconds   0.0.0.0:32768->80/tcp, :::32768->80/tcp   wonderful_austin
[root@server ~]# docker rm 8cf6390252df  #由于容器正在運(yùn)行,所以無法普通刪除
Error response from daemon: cannot remove container "/wonderful_austin": container is running: stop the container before removing or force remove
[root@server ~]# docker rm -f 8cf6390252df #通過-f強(qiáng)制刪除
8cf6390252df
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS                      PORTS     NAMES
c15039e3ae2a   ubuntu    "bash"                    21 seconds ago   Exited (0) 16 seconds ago             affectionate_edison
83fd92a37ddf   ubuntu    "bash"                    16 minutes ago   Created                               fervent_knuth
341263befffb   nginx     "/docker-entrypoint.…"   18 minutes ago   Created                               cool_jennings
[root@server ~]# docker ps -aq  #-q只顯示容器ID
c15039e3ae2a
83fd92a37ddf
341263befffb
[root@server ~]# docker rm `docker ps -aq`  #通過反引號包裹
c15039e3ae2a
83fd92a37ddf
341263befffb
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

查看容器運(yùn)行狀態(tài)

[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED          STATUS          PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   54 seconds ago   Up 53 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker container ls -a
CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker container ls
CONTAINER ID   IMAGE     COMMAND                   CREATED              STATUS              PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1

停止運(yùn)行的容器docker stop/kill

[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED             STATUS             PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   About an hour ago   Up About an hour   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker stop web1
web1
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@server ~]# docker start web1
web1
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS          PORTS                                 NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 52 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker kill -s 9 web1  #-s 9表示強(qiáng)制終止
web1
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

激活關(guān)閉的容器docker start/restart

docker start 是一個 Docker 命令行接口(CLI)命令,用于啟動一個或多個已經(jīng)存在的、但是當(dāng)前處于停止?fàn)顟B(tài)的容器。當(dāng)你使用 docker run 命令創(chuàng)建并啟動容器后,你可以使用 docker stop 命令來停止容器。之后,如果你想再次啟動這個容器,就可以使用 docker start 命令。

基本語法如下:

docker start [OPTIONS] CONTAINER [CONTAINER...]
  • OPTIONS:可選參數(shù),用于配置啟動容器的行為。雖然 docker start 通常不需要額外的選項,但 Docker 提供了其他選項用于高級用途。
  • CONTAINER:要啟動的容器的名稱或ID。可以指定多個容器來同時啟動它們。

示例

  1. 啟動名為 mycontainer 的容器
docker start mycontainer
  1. 啟動多個容器
docker start container1 container2 container3

注意事項

  • 在啟動容器之前,確保容器已經(jīng)創(chuàng)建并存在于 Docker 系統(tǒng)中。
  • 當(dāng)你使用 docker start 命令時,容器將從其上次停止時的狀態(tài)恢復(fù),這意味著任何在容器內(nèi)部運(yùn)行的進(jìn)程將恢復(fù)執(zhí)行。
  • 如果容器之前因為某種錯誤而退出,并且你想要重新啟動它,使用 docker start 通常是合適的。但是,如果容器因為配置錯誤或其他問題而不斷失敗,你可能需要進(jìn)入容器內(nèi)部進(jìn)行調(diào)試,或者重新創(chuàng)建容器。
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@server ~]# docker restart web1
web1
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS         PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 4 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker stop e5475d3f8a4f
e5475d3f8a4f
[root@server ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS                      PORTS     NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Exited (0) 30 seconds ago             web1
[root@server ~]# docker start e5475d3f8a4f
e5475d3f8a4f
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS         PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 4 seconds   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1

查看容器

查看容器的詳細(xì)信息docker container inspect

  • 或使用docker inspect
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS         PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 6 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker inspect web1
[{"Id": "e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff","Created": "2024-03-24T06:03:17.50320209Z","Path": "/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 38619,"ExitCode": 0,"Error": "","StartedAt": "2024-03-24T07:53:58.881752968Z","FinishedAt": "2024-03-24T07:53:42.230209857Z"},"Image": "sha256:92b11f67642b62bbb98e7e49169c346b30e20cd3c1c034d31087e46924b9312e","ResolvConfPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/resolv.conf","HostnamePath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/hostname","HostsPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/hosts","LogPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff-json.log","Name": "/web1","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {"80/tcp": [{"HostIp": "","HostPort": "8888"}]}
[root@server ~]# docker inspect web1 | grep -i address"LinkLocalIPv6Address": "","SecondaryIPAddresses": null,"SecondaryIPv6Addresses": null,"GlobalIPv6Address": "","IPAddress": "172.17.0.2","MacAddress": "02:42:ac:11:00:02","MacAddress": "02:42:ac:11:00:02","IPAddress": "172.17.0.2","GlobalIPv6Address": "",
[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS       PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   4 hours ago   Up 2 hours   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker container inspect web1
[{"Id": "e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff","Created": "2024-03-24T06:03:17.50320209Z","Path": "/docker-entrypoint.sh","Args": ["nginx","-g","daemon off;"],"State": {"Status": "running","Running": true,"Paused": false,"Restarting": false,"OOMKilled": false,"Dead": false,"Pid": 38619,"ExitCode": 0,"Error": "","StartedAt": "2024-03-24T07:53:58.881752968Z","FinishedAt": "2024-03-24T07:53:42.230209857Z"},"Image": "sha256:92b11f67642b62bbb98e7e49169c346b30e20cd3c1c034d31087e46924b9312e","ResolvConfPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/resolv.conf","HostnamePath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/hostname","HostsPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/hosts","LogPath": "/var/lib/docker/containers/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff/e5475d3f8a4f6818eb701a7b68a1f54417260510a0e3c688442139e0cf3c8eff-json.log","Name": "/web1","RestartCount": 0,"Driver": "overlay2","Platform": "linux","MountLabel": "","ProcessLabel": "","AppArmorProfile": "","ExecIDs": null,"HostConfig": {"Binds": null,"ContainerIDFile": "","LogConfig": {"Type": "json-file","Config": {}},"NetworkMode": "default","PortBindings": {"80/tcp": [{"HostIp": "","HostPort": "8888"}]

查看容器內(nèi)的進(jìn)程docker top

docker top 命令用于查看 Docker 容器中正在運(yùn)行的進(jìn)程。通過這個命令,你可以列出容器中所有進(jìn)程的信息,包括進(jìn)程 ID、進(jìn)程名稱、CPU 占用率、內(nèi)存占用率等。使用 docker top 命令需要指定容器的 ID 或名稱。

基本語法如下:

docker top [OPTIONS] CONTAINER [ps OPTIONS]

其中:

  • [OPTIONS]docker top 命令的可選參數(shù)。
  • CONTAINER 是要查看的容器的名稱或 ID。
  • [ps OPTIONS] 是傳遞給 ps 命令的選項,用于定制進(jìn)程的顯示方式。
示例
  1. 查看容器中的進(jìn)程

    使用 docker top 命令查看名為 mycontainer 的容器中的進(jìn)程:

    docker top mycontainer
    

    這將返回容器內(nèi)所有正在運(yùn)行的進(jìn)程列表,包括進(jìn)程 ID、進(jìn)程名稱等。

  2. 查看進(jìn)程并提取 CPU 和內(nèi)存信息

    你可以結(jié)合其他命令(如 awk)來提取 docker top 的輸出中的特定信息,比如 CPU 和內(nèi)存使用情況:

    docker top mycontainer | awk '{print $2, $3, $9, $10}'
    

    這條命令將輸出進(jìn)程名稱、PID、CPU 占用率和內(nèi)存占用率。

  3. 使用選項查看特定信息

    docker top 命令也支持一些選項來定制輸出。例如,使用 -u 選項可以以用戶為主的格式顯示進(jìn)程信息:

    docker top -u mycontainer
    
注意事項
  • 在執(zhí)行 docker top 命令時,確保容器正在運(yùn)行,否則你將無法看到任何進(jìn)程信息。
  • 如果容器中有多個進(jìn)程,docker top 將顯示所有這些進(jìn)程的信息。
  • docker top 命令返回的是容器運(yùn)行時的實時進(jìn)程信息,如果容器中的進(jìn)程狀態(tài)發(fā)生變化,你需要重新執(zhí)行 docker top 命令來查看最新的進(jìn)程信息。

總之,docker top 命令是 Docker 提供的用于查看容器內(nèi)部進(jìn)程狀態(tài)的有力工具,它可以幫助你更好地理解和監(jiān)控容器的運(yùn)行情況。

[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS       PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   4 hours ago   Up 2 hours   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1[root@server ~]# docker top web1
UID                 PID                 PPID                CSTIME               TTY                 TIME                CMD
root                38619               38580               015:53               pts/0               00:00:00            nginx: master process nginx -g daemon off;
101                 38647               38619               015:53               pts/0               00:00:00            nginx: worker process
101                 38648               38619               015:53               pts/0               00:00:00            nginx: worker process

您已經(jīng)成功地使用了 docker top 命令來查看名為 web1 的容器中的進(jìn)程信息。從您提供的輸出中,我們可以看到容器 web1 中正在運(yùn)行兩個 nginx 進(jìn)程:一個主進(jìn)程(master process)和兩個工作進(jìn)程(worker process)。

這里是每個列的解釋:

  • UID:用戶ID,運(yùn)行該進(jìn)程的用戶在容器內(nèi)的唯一標(biāo)識。
  • PID:進(jìn)程ID,這是每個進(jìn)程在容器內(nèi)的唯一標(biāo)識。
  • PPID:父進(jìn)程ID,即創(chuàng)建該進(jìn)程的進(jìn)程的ID。
  • C:CPU利用率,這個值通常表示該進(jìn)程最近的CPU使用率。
  • STIME:進(jìn)程啟動時間。
  • TTY:進(jìn)程關(guān)聯(lián)的終端類型,如果是 pts/0,則通常表示這個進(jìn)程是在偽終端上運(yùn)行的。
  • TIME:該進(jìn)程自啟動以來消耗的CPU時間。
  • CMD:啟動進(jìn)程的命令。

從輸出中我們可以看到:

  • 主進(jìn)程(PID 38619)以 nginx: master process nginx -g daemon off; 的形式運(yùn)行,這意味著它是 nginx 的主進(jìn)程,并且 nginx 是以守護(hù)進(jìn)程模式關(guān)閉(即在前臺運(yùn)行)啟動的。
  • 兩個工作進(jìn)程(PID 38647 和 38648)以 nginx: worker process 的形式運(yùn)行,它們是處理實際HTTP請求的 nginx 工作進(jìn)程。

這個輸出可以幫助您確認(rèn) nginx 在容器 web1 中正在運(yùn)行,并且有兩個工作進(jìn)程正在處理請求。如果您需要進(jìn)一步診斷或管理這些進(jìn)程,您可以使用 docker exec 命令在容器內(nèi)運(yùn)行其他命令,比如 pskill 等。

docker stats

docker stats 命令用于動態(tài)顯示 Docker 容器的資源消耗情況它可以提供關(guān)于容器使用 CPU、內(nèi)存、網(wǎng)絡(luò) I/O 和塊 I/O 等資源的實時統(tǒng)計信息。

使用 docker stats 命令時,可以指定要查看的容器名稱或 ID,也可以不指定任何參數(shù)以查看所有運(yùn)行中的容器的統(tǒng)計信息。命令的輸出將包括每個容器的 ID、名稱、CPU 使用率、內(nèi)存使用量、網(wǎng)絡(luò) I/O、塊 I/O 以及進(jìn)程數(shù)等。

此外,docker stats 命令還支持一些可選參數(shù),如 --all 用于列出所有容器的信息(包括已停止的容器,但已停止的容器不會返回任何信息),--no-stream 用于只查看容器的靜態(tài)信息,以及 --format 用于指定返回值的模板文件等。

在終端或命令行界面中運(yùn)行 docker stats 命令后,將實時顯示容器的資源使用情況??梢酝ㄟ^按 Ctrl+C 組合鍵來停止輸出。

在window上訪問Linux中運(yùn)行的nginx容器

訪問的IP地址為Linux主機(jī)的IP地址,端口是啟動nginx容器時映射的端口
在這里插入圖片描述

查詢?nèi)萜鲀?nèi)部日志docker logs

docker logs 命令用于檢索容器的日志輸出。當(dāng)你運(yùn)行一個容器時,該容器可能會產(chǎn)生各種日志信息,比如應(yīng)用程序的運(yùn)行狀態(tài)、錯誤信息等。使用 docker logs 命令,你可以查看這些日志,以了解容器內(nèi)部的運(yùn)行情況。

基本語法如下:

docker logs [OPTIONS] CONTAINER

其中:

  • OPTIONS 是可選參數(shù),用于配置日志檢索的行為。
  • CONTAINER 是你要查看日志的容器的名稱或 ID。

示例

示例1:查看容器的日志
docker logs mycontainer

這條命令會顯示名為 mycontainer 的容器的日志輸出。

示例2:實時查看容器的日志
docker logs -f mycontainer

使用 -f--follow 選項,可以實時跟蹤容器的日志輸出即當(dāng)新的日志產(chǎn)生時,它們會立即顯示在終端上。這對于觀察容器的實時運(yùn)行狀態(tài)非常有用。

示例3:查看容器的日志并限制輸出行數(shù)
docker logs --tail 10 mycontainer

使用 --tail 選項,你可以限制顯示的日志行數(shù)。在這個例子中,只顯示 mycontainer 容器的最后 10 行日志。

示例4:查看容器的日志并顯示時間戳
docker logs --timestamps mycontainer

使用 --timestamps 選項,可以在每條日志前面顯示時間戳,這有助于你了解日志的產(chǎn)生時間。

注意事項

  • 如果容器已經(jīng)停止,你仍然可以查看它的日志,但實時跟蹤(使用 -f 選項)將不起作用。
  • 默認(rèn)情況下,docker logs 顯示的是容器的標(biāo)準(zhǔn)輸出(stdout)和標(biāo)準(zhǔn)錯誤(stderr)。如果你需要查看其他類型的日志,可能需要調(diào)整你的應(yīng)用程序或服務(wù)的日志配置。
  • 如果容器的日志量非常大,使用 docker logs 可能會產(chǎn)生大量的輸出。在這種情況下,使用 --tail 選項來限制輸出行數(shù)可能是個好主意。
[root@server ~]# docker logs 容器名或容器ID

docker wait

docker wait 命令用于阻塞一個或多個 Docker 容器直到這些容器停止運(yùn)行并在容器退出時打印出它們的退出代碼。這個命令對于需要等待容器完成其任務(wù)并獲取其退出狀態(tài)的情況非常有用。

命令的基本語法如下:

docker wait [OPTIONS] CONTAINER [CONTAINER...]

其中 CONTAINER 可以是容器的 ID 或名稱,并且可以指定多個容器。

使用示例

  1. 首先,啟動一個 Docker 容器,并給它一個名稱,例如 my_container
docker run --name my_container -dit ubuntu bash
  1. 然后,使用 docker wait 命令等待這個容器退出:
docker wait my_container

此時,docker wait 命令會阻塞,直到 my_container 容器停止運(yùn)行。一旦容器停止,docker wait 會打印出容器的退出代碼。

  1. 你可以在另一個終端窗口中停止 my_container 容器,例如使用 docker stop 命令:
docker stop my_container

當(dāng)容器停止后,之前運(yùn)行的 docker wait 命令會退出并打印出容器的退出代碼。

注意事項

  • docker wait 命令不會顯示容器內(nèi)部的日志或輸出,它只關(guān)注容器的運(yùn)行狀態(tài)和退出代碼。
  • 如果容器已經(jīng)在運(yùn)行并且沒有退出,docker wait 命令會阻塞直到容器退出。
  • 退出代碼通常用于表示容器執(zhí)行的結(jié)果,例如 0 通常表示成功,非零值表示出錯或異常。

通過使用 docker wait 命令,你可以確保在容器完成其任務(wù)并退出之前,其他依賴于該容器狀態(tài)的操作不會繼續(xù)執(zhí)行。這對于構(gòu)建自動化腳本和容器編排非常有用。

進(jìn)入容器docker exec

  • 在使用 -d 參數(shù)時,容器啟動后會進(jìn)入后臺,用戶無法看到容器中的信息,也無法進(jìn)行操作
  • 這個時候如果需要進(jìn)入容器進(jìn)行操作,推薦使用官方的 attachexec 命令

docker exec 是一個 Docker 命令用于在正在運(yùn)行的容器中執(zhí)行命令。它允許你在容器的上下文中運(yùn)行任何命令,就像你在容器的 shell 中手動執(zhí)行一樣。這對于需要在運(yùn)行中的容器中進(jìn)行診斷、調(diào)試或執(zhí)行其他任務(wù)時非常有用。

基本語法如下:

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

其中:

  • OPTIONS:是可選的,用于配置 docker exec 命令的行為。
  • CONTAINER:是要在其中執(zhí)行命令的容器的名稱或ID。
  • COMMAND:是要在容器內(nèi)執(zhí)行的命令。
  • ARG...:是傳遞給命令的參數(shù)。

常用選項

  • -i:保持標(biāo)準(zhǔn)輸入打開,通常與 -t 一起使用,以便與容器進(jìn)行交互。
  • -t:分配一個偽終端,這通常用于創(chuàng)建一個交互式的 shell 會話。
  • -d:在后臺運(yùn)行命令。
  • -u:以指定的用戶身份執(zhí)行命令。
  • -e:設(shè)置環(huán)境變量。

示例

  1. 在容器中啟動交互式 bash shell
docker exec -it mycontainer /bin/bash

這將在名為 mycontainer 的容器中啟動一個交互式的 bash shell,允許你與容器進(jìn)行交互。

  1. 在容器中執(zhí)行單個命令
docker exec mycontainer ls -l

這將在 mycontainer 容器中執(zhí)行 ls -l 命令,并顯示結(jié)果。

  1. 在容器中執(zhí)行多個命令

如果你想在容器中執(zhí)行多個命令,你需要將它們連接起來并通過 shell 執(zhí)行。例如:

docker exec mycontainer bash -c "cd /some/directory && ls -l"

在這個例子中,我們首先切換到 /some/directory 目錄,然后列出該目錄的內(nèi)容。

請注意,要使用 docker exec 命令,容器必須已經(jīng)啟動并且至少有一個進(jìn)程正在運(yùn)行。如果容器沒有運(yùn)行,你需要先使用 docker start 命令啟動它。

對于 docker exec 的更多詳細(xì)信息和可用選項,你可以查閱 Docker 官方文檔或使用 docker exec --help 命令來獲取幫助。

[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS          PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 22 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker exec -it e5475d3f8a4f /bin/bash
root@e5475d3f8a4f:/# ls
bin   docker-entrypoint.d   home   media  proc  sbin  tmp
boot  docker-entrypoint.sh  lib    mnt    root  srv   usr
dev   etc                   lib64  opt    run   sys   var
root@e5475d3f8a4f:/#

導(dǎo)出容器docker export

docker export 命令用于將 Docker 容器的文件系統(tǒng)導(dǎo)出為一個 tar 歸檔文件。這對于備份容器狀態(tài)、遷移容器到其他機(jī)器或共享容器的文件系統(tǒng)非常有用。

基本語法如下:

docker export [OPTIONS] CONTAINER

其中 CONTAINER 是要導(dǎo)出文件系統(tǒng)的容器的名稱或 ID。

選項

  • -o--output:用于指定輸出的文件名或路徑。如果不指定,tar 歸檔文件將默認(rèn)輸出到標(biāo)準(zhǔn)輸出(stdout)。

使用示例

  1. 導(dǎo)出容器到標(biāo)準(zhǔn)輸出

    將名為 mycontainer 的容器的文件系統(tǒng)導(dǎo)出到標(biāo)準(zhǔn)輸出,并將輸出重定向到一個 tar 文件:

    docker export mycontainer > mycontainer.tar
    
  2. 導(dǎo)出容器到指定文件

    使用 -o 選項直接將容器導(dǎo)出到指定的 tar 文件:

    docker export -o mycontainer.tar mycontainer
    
  3. 按日期保存為 tar 文件

    你可以結(jié)合 shell 命令來按日期保存 tar 文件:

    docker export -o mysql-`date +%Y%m%d`.tar b5t2r1x794o3
    

    這將會導(dǎo)出 ID 為 b5t2r1x794o3 的容器的文件系統(tǒng),并以當(dāng)前日期命名 tar 文件。

注意事項

  • 導(dǎo)出的 tar 文件僅包含容器的文件系統(tǒng),并不包含容器的配置信息(如環(huán)境變量、網(wǎng)絡(luò)配置等)。
  • 如果需要遷移或備份整個容器狀態(tài),除了文件系統(tǒng)外,還需要考慮其他配置和元數(shù)據(jù)。
  • 導(dǎo)出的 tar 文件可以在其他 Docker 環(huán)境中使用 docker import 命令導(dǎo)入,以創(chuàng)建一個新的鏡像。

docker export 命令是 Docker 工具鏈中用于管理容器文件系統(tǒng)的重要命令之一,尤其在需要遷移、備份或共享容器狀態(tài)時非常有用。

導(dǎo)入容器docker import

docker import 命令用于將本地文件系統(tǒng)上的文件或目錄,或者從遠(yuǎn)程URL導(dǎo)入為Docker鏡像。

其基本語法如下:

docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

參數(shù)說明:

  • OPTIONS:可選參數(shù),用于配置導(dǎo)入操作的一些選項。
  • file|URL|-:必需參數(shù),指定要導(dǎo)入的文件路徑或URL??梢允且粋€文件路徑,也可以是一個URL,或者使用-表示從標(biāo)準(zhǔn)輸入中讀取tar歸檔文件。
  • REPOSITORY:可選參數(shù),指定要創(chuàng)建的新鏡像的名稱。
  • TAG:可選參數(shù),指定要創(chuàng)建的新鏡像的標(biāo)簽。

示例

示例1:從本地文件系統(tǒng)導(dǎo)入

假設(shè)我們有一個名為example.tar的tar歸檔文件,它包含了我們想要導(dǎo)入的文件系統(tǒng)。我們可以使用docker import命令來創(chuàng)建一個新的鏡像:

docker import example.tar myimage:1.0

這將會將example.tar中的文件系統(tǒng)導(dǎo)入到myimage:1.0鏡像中。之后,我們可以使用docker run命令來運(yùn)行這個新建的容器。

示例2:從遠(yuǎn)程URL導(dǎo)入

如果我們想要從一個遠(yuǎn)程URL導(dǎo)入文件系統(tǒng),我們可以直接將URL作為參數(shù)傳遞給docker import命令:

docker import http://example.com/path/to/image.tar myimage:1.0

這將會將遠(yuǎn)程URL中的文件系統(tǒng)導(dǎo)入到myimage:1.0鏡像中。

注意事項

如果在使用docker import命令時遇到無法啟動容器的問題,可能的原因包括導(dǎo)入的文件或URL中缺少依賴項或配置文件,或者與宿主機(jī)環(huán)境不兼容等。這時,需要檢查導(dǎo)入的文件或URL是否包含所需的依賴項和配置文件,以及宿主機(jī)環(huán)境是否與導(dǎo)入的鏡像兼容。如果以上方法都無法解決問題,可以嘗試重新導(dǎo)入鏡像。

請注意,docker import命令創(chuàng)建的鏡像可能不如使用Dockerfile創(chuàng)建的鏡像透明和可維護(hù)。在可能的情況下,推薦使用Dockerfile來構(gòu)建和管理鏡像。

查看容器的IP地址

root@e5475d3f8a4f:/# hostname -I
172.17.0.2root@e5475d3f8a4f:/# hostname -i
172.17.0.2

查看容器中的環(huán)境變量

[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS          PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   2 hours ago   Up 31 minutes   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1
[root@server ~]# docker exec -it web1 echo $PATH
/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

其他容器命令

docker rename

修改容器名

  • 或使用docker container rename
[root@server _data]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                     NAMES
630a7fa66f4c   nginx:latest   "/docker-entrypoint.…"   4 minutes ago   Up 4 minutes   0.0.0.0:32770->80/tcp, :::32770->80/tcp   web1
[root@server _data]# docker container rename web1 nginx-web1
[root@server _data]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                     NAMES
630a7fa66f4c   nginx:latest   "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:32770->80/tcp, :::32770->80/tcp   nginx-web1
[root@server _data]# docker rename nginx-web1 web1
[root@server _data]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                     NAMES
630a7fa66f4c   nginx:latest   "/docker-entrypoint.…"   5 minutes ago   Up 5 minutes   0.0.0.0:32770->80/tcp, :::32770->80/tcp   web1

docker cp

docker cp 命令用于在 Docker 容器本地文件系統(tǒng) 之間復(fù)制文件或目錄這個命令允許你將文件或目錄從容器內(nèi)部復(fù)制到主機(jī)上或者將文件或目錄從主機(jī)復(fù)制到容器內(nèi)部。這對于備份容器內(nèi)的數(shù)據(jù)、在容器和主機(jī)之間傳輸文件以及在容器內(nèi)設(shè)置初始文件等場景非常有用。

命令的基本語法如下:

  • 從容器復(fù)制到宿主機(jī):docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
  • 從宿主機(jī)復(fù)制到容器:docker cp [OPTIONS] SRC_PATH DEST_PATH CONTAINER:DEST_PATH

其中:

  • CONTAINER 可以是容器的 ID 或名稱,無論是正在運(yùn)行還是已停止的容器都可以使用。
  • SRC_PATH 是源文件或目錄在容器內(nèi)的路徑。
  • DEST_PATH 是目標(biāo)路徑在主機(jī)上的位置,或者是目標(biāo)路徑在容器內(nèi)的位置(當(dāng)從主機(jī)復(fù)制到容器時)。

注意,docker cp 命令會假定容器路徑相對于容器的根(/)目錄,而主機(jī)路徑則是相對于執(zhí)行 docker cp 命令的當(dāng)前目錄。

此外,docker cp 命令還支持一些可選參數(shù):

  • -a:將復(fù)制的文件或目錄保留其原始屬性,包括所有者、權(quán)限等。
  • -L:如果 SRC_PATH 是一個符號鏈接,則復(fù)制鏈接指向的文件或目錄。
  • -p:保留源文件或目錄的時間戳。
  • -R-r:遞歸復(fù)制整個目錄。

使用 docker cp 命令時,請確保目標(biāo)路徑是可寫的,并且具有足夠的權(quán)限來執(zhí)行復(fù)制操作。

docker diff

docker diff 命令用于檢查 Docker 容器內(nèi)文件系統(tǒng)的更改當(dāng)運(yùn)行了一個容器后,你可能想知道容器內(nèi)修改了哪些文件,這時就可以使用 docker diff 命令。

該命令的語法為:docker diff <container_name or container_id>,其中 <container_name or container_id> 是容器的名稱或 ID。

執(zhí)行 docker diff 命令后,將輸出類似于下面的內(nèi)容:

  • C /path/to/changed/file:表示文件被修改。
  • D /path/to/deleted/file:表示文件被刪除。
  • A /path/to/added/file:表示文件被添加。

例如,如果你想查看名為 mycontainer 的容器內(nèi)的文件變化,可以執(zhí)行 docker diff mycontainer。這將列出所有在容器內(nèi)被添加、刪除或修改的文件路徑。

此外,當(dāng)在容器中刪除文件時,如果你想在主機(jī)上同步刪除這些文件,可以使用 docker diff 命令查看容器中的文件變化,并使用正則表達(dá)式匹配出被刪除的文件路徑,然后在主機(jī)上執(zhí)行刪除操作。

docker port

docker port 命令用于查看容器的端口映射信息。在 Docker 中,容器的端口默認(rèn)是私有的,也就是說,容器內(nèi)部運(yùn)行的服務(wù)只能在容器內(nèi)部訪問為了使得這些服務(wù)能夠被外部訪問我們需要使用端口映射功能,將容器內(nèi)的端口映射到宿主機(jī)的某個端口上。docker port 命令就是用來查看這種映射關(guān)系的。

使用 docker port 命令時,需要指定容器的名稱或 ID,以及容器內(nèi)部的端口號。命令的基本語法如下:

docker port <container_name or container_id> <container_port>

其中,<container_name or container_id> 是你想要查看端口映射信息的容器的名稱或 ID,<container_port> 是容器內(nèi)部的端口號。

例如,假設(shè)你有一個名為 mycontainer 的容器,容器內(nèi)部運(yùn)行著一個服務(wù),監(jiān)聽在端口 8080 上。你可以使用以下命令來查看這個端口在宿主機(jī)上的映射情況:

docker port mycontainer 8080

如果端口已經(jīng)被映射到了宿主機(jī)的某個端口上,docker port 命令會輸出宿主機(jī)的 IP 地址和端口號。例如:

0.0.0.0:32768

這表示容器內(nèi)部的 8080 端口被映射到了宿主機(jī)的 32768 端口上,并且宿主機(jī)的任何 IP 地址都可以訪問這個端口。

需要注意的是,如果容器內(nèi)部的端口沒有被映射到宿主機(jī)上,docker port 命令將不會返回任何輸出。此外,如果容器沒有運(yùn)行,該命令也無法獲取到端口映射信息。

[root@server ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                   CREATED       STATUS       PORTS                                   NAMES
e5475d3f8a4f   nginx     "/docker-entrypoint.…"   4 hours ago   Up 2 hours   0.0.0.0:8888->80/tcp, :::8888->80/tcp   web1[root@server ~]# docker port web1
80/tcp -> 0.0.0.0:8888
80/tcp -> [::]:8888

docker update

docker update 命令用于更新一個或多個正在運(yùn)行的容器的配置。它可以用來改變?nèi)萜鞯馁Y源限制,如 CPU 和內(nèi)存,或者調(diào)整容器的重啟策略等。

以下是 docker update 命令的一些常用選項和示例:

  1. 更新 CPU 使用量限制
    使用 --cpus 選項來設(shè)置容器可使用的 CPU 核心數(shù)。
docker update --cpus=2 my_container

這會將 my_container 容器的 CPU 使用量限制設(shè)置為 2 個核心。
2. 更新內(nèi)存使用限制
使用 --memory 選項來設(shè)置容器可使用的內(nèi)存限制。你可以使用單位(如 MB、GB)來指定內(nèi)存大小。

docker update --memory=512m my_container

這將把 my_container 容器的內(nèi)存使用限制設(shè)置為 512MB。
3. 設(shè)置容器的重啟策略
使用 --restart 選項來設(shè)置容器的重啟策略。可能的值包括 no(不重啟)、on-failure[:<max-retries>](出錯時重啟,最多重試次數(shù))和 always(總是重啟)。

docker update --restart=on-failure:3 my_container

這會將 my_container 容器的重啟策略設(shè)置為在出錯時重試 3 次。
4. 更新容器的網(wǎng)絡(luò)設(shè)置
雖然 docker update 命令主要用于更新容器的資源限制和重啟策略,但也可以用來更改容器的網(wǎng)絡(luò)配置,例如添加或刪除網(wǎng)絡(luò)接口、更改 IP 地址等。具體的網(wǎng)絡(luò)設(shè)置更新方法會根據(jù)你的網(wǎng)絡(luò)配置和需求而有所不同。

需要注意的是,更新容器的配置可能會影響到容器內(nèi)運(yùn)行的應(yīng)用程序和服務(wù)的性能和行為。因此,在執(zhí)行 docker update 命令之前,最好先了解各個選項的作用,并測試其對容器和應(yīng)用程序的影響。

另外,一些配置(如網(wǎng)絡(luò)設(shè)置)可能需要在創(chuàng)建容器時就指定,而不是在容器運(yùn)行后再進(jìn)行更新。如果你發(fā)現(xiàn)某些配置無法通過 docker update 命令進(jìn)行修改,可能需要考慮重新創(chuàng)建容器并指定正確的配置。

http://www.risenshineclean.com/news/48504.html

相關(guān)文章:

  • gta5資產(chǎn)網(wǎng)站正在建設(shè)現(xiàn)在陽性最新情況
  • 橙子建站輸入了驗證碼有危險嗎sem工具是什么
  • 建筑工程招聘信息網(wǎng)seo優(yōu)化工具
  • 類似behance的設(shè)計網(wǎng)站seo顧問張智偉
  • 手機(jī)網(wǎng)站cms手機(jī)百度助手
  • 服務(wù)器能放多少個網(wǎng)站廣州最新新聞
  • 國外扁平化網(wǎng)站設(shè)計欣賞優(yōu)化大師使用心得
  • 煙臺產(chǎn)品網(wǎng)站建設(shè)百度seo如何做
  • dw做網(wǎng)站上海百度推廣官方電話
  • 拼多多的網(wǎng)站建設(shè)海淀區(qū)seo引擎優(yōu)化
  • 做個網(wǎng)站要多久百度指數(shù)的各項功能
  • 重慶企業(yè)網(wǎng)站建設(shè)聯(lián)系電話青島seo網(wǎng)站關(guān)鍵詞優(yōu)化
  • 梅州網(wǎng)站制作百度搜索引擎優(yōu)化詳解
  • 天眼查官方網(wǎng)站黃岡網(wǎng)站推廣
  • 哪個網(wǎng)站幫別人做ppt上海推廣seo
  • 垂直行業(yè)門戶網(wǎng)站建設(shè)方案百度權(quán)重怎么提高
  • 做直播網(wǎng)站vps可以嗎技術(shù)培訓(xùn)機(jī)構(gòu)
  • 免費(fèi)建商城網(wǎng)站網(wǎng)址查詢
  • 私彩票網(wǎng)站建設(shè)網(wǎng)站seo優(yōu)化排名
  • 做模具的網(wǎng)站seo智能優(yōu)化
  • wordpress用戶排行榜廈門seo服務(wù)
  • 做亞馬遜網(wǎng)站費(fèi)用嗎必應(yīng)收錄提交入口
  • 一個網(wǎng)站可以做多少個關(guān)鍵詞百度網(wǎng)頁排名怎么提升
  • wordpress首頁截斷seo白帽優(yōu)化
  • php動態(tài)網(wǎng)站開發(fā)簡介網(wǎng)站制作平臺
  • 自己怎么做系統(tǒng)網(wǎng)站能打開的a站
  • 共享辦公室 設(shè)計網(wǎng)站性能優(yōu)化
  • 鐵漢生態(tài)建設(shè)有限公司網(wǎng)站最新黑帽seo培訓(xùn)
  • 如何做屬于自己的領(lǐng)券網(wǎng)站廈門人才網(wǎng)最新招聘信息
  • 越南做企業(yè)網(wǎng)站百度云電腦版網(wǎng)站入口