Docker常用的命令

来源:https://www.cnblogs.com/xyh9039/p/18378883
-Advertisement-
Play Games

本章將和大家分享Docker中常用的命令。廢話不多說,下麵我們直接進入主題。 1、配置鏡像加速源 拉取鏡像慢,配置載入鏡像地址: 創建一個或修改 /etc/docker/daemon.json 文件(如果不存在則創建): vim /etc/docker/daemon.json 並添加或修改regis ...


本章將和大家分享Docker中常用的命令。廢話不多說,下麵我們直接進入主題。

1、配置鏡像加速源

拉取鏡像慢,配置載入鏡像地址:

創建一個或修改 /etc/docker/daemon.json 文件(如果不存在則創建):

vim /etc/docker/daemon.json

並添加或修改registry-mirrors欄位,例如:

{
    "registry-mirrors": [
        "https://dockerproxy.com",
        "https://docker.chenby.cn",
        "https://dockerpull.com",
        "https://dockerhub.jobcher.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hub.uuuadc.top",
        "https://mirror.baidubce.com",
        "https://mirror.ccs.tencentyun.com",
        "https://docker.m.daocloud.io",
        "https://docker.nju.edu.cn",
        "https://docker.mirrors.ustc.edu.cn",
        "https://hus-mirror.c.163.com",
        "https://dockerhub.azk8s.cn",
        "https://registry.cn-hangzhou.aliyuncs.com"
    ]
}

或者

{
    "registry-mirrors": [
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn"
    ]
}

或者

{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live"
    ]
}

配置鏡像加速源:

保存文件並退出編輯器。

重新載入配置文件並重啟Docker服務以使配置生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

驗證配置:

重啟Docker服務後,可以通過運行docker info命令來查看Docker的配置信息,確認Registry Mirrors部分是否已包含你設置的鏡像加速器地址。

註意:鏡像加速源可能會隨時間而變化。

2、拉取鏡像

此處以拉取 nginx 鏡像為例:

docker pull nginx

3、首次啟動鏡像

docker run -d -p 8090:80 --name nginx-container nginx:latest

示例:

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        latest    5ef79149e0ec   10 days ago   188MB
[root@localhost ~]# docker run -d -p 8090:80 --name nginx-container nginx:latest
96a5d9d2505293a05e1d07640f308576856b60147393c0764078f4d3163f8214
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                   NAMES
96a5d9d25052   nginx:latest   "/docker-entrypoint.…"   19 seconds ago   Up 18 seconds   0.0.0.0:8090->80/tcp, :::8090->80/tcp   nginx-container
[root@localhost ~]#

參數說明:

  • -d:這個選項表示以“分離模式”運行容器,即容器在後臺運行。
  • -p 8090:80 :這個選項用於映射容器的埠到宿主機的埠。在這個例子中,它將容器內的80埠(Nginx預設的服務埠)映射到宿主機的8090埠。這意味著,當你訪問宿主機的8090埠時,實際上是在訪問容器中Nginx服務的80埠。
  • --name nginx-container:這個選項用於指定容器的名稱,這裡是nginx-container。為容器指定一個名稱後,你可以通過該名稱來引用容器,而不是使用容器ID或隨機生成的名稱。
  • nginx:latest:這指定了要使用的Docker鏡像,這裡是Nginx的最新版本(標記為latest)。
  • -it:結合使用 -i(互動式操作)和 -t(分配一個偽終端)。通常用於需要互動式會話的容器。
  • -p:發佈容器埠到宿主機。格式為 <宿主機埠>:<容器埠> 或 <宿主機埠>:<容器埠>/協議>。註意 -p 後面直接跟埠映射,並不直接指定 IP 地址。IP 地址通常在 --network 參數中通過自定義網路來指定容器的網路配置。
  • -v:掛載捲,格式為 <宿主機路徑>:<容器內路徑>:<選項>。<選項> 是可選的,比如 ro 表示只讀。
  • --volumes-from:從指定的容器掛載捲。這允許你從另一個容器繼承捲設置。

查看日誌:

docker logs 96a5d9d25052(容器的ID)

示例:

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                                   NAMES
96a5d9d25052   nginx:latest   "/docker-entrypoint.…"   19 seconds ago   Up 18 seconds   0.0.0.0:8090->80/tcp, :::8090->80/tcp   nginx-container
[root@localhost ~]# docker logs 96a5d9d25052

容器啟動成功後我們通過瀏覽器來訪問一下nginx服務:

可以發現,nginx運行成功了。

4、inspect命令

docker inspect 命令是 Docker 中的一個非常有用的命令,它允許你獲取 Docker 對象的詳細信息,包括容器(containers)、鏡像(images)、網路(networks)、捲(volumes)和插件(plugins)等。當你需要深入瞭解 Docker 對象的配置和狀態時,這個命令就非常有用了。
對於容器(containers),docker inspect 命令可以顯示容器的配置和狀態信息,如網路設置、環境變數、掛載的捲、啟動命令等。

基本語法:

docker inspect [OPTIONS] NAME|ID [NAME|ID...]
  • NAME|ID:指定要檢查的 Docker 對象的名稱或ID。你可以指定多個對象,用空格分隔。
  • [OPTIONS]:可以使用的選項,但大多數情況下,直接運行 docker inspect 而不帶任何選項就足夠了。

示例:

查看單個容器的詳細信息

[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED       STATUS          PORTS                                   NAMES
96a5d9d25052   nginx:latest   "/docker-entrypoint.…"   5 hours ago   Up 16 minutes   0.0.0.0:8090->80/tcp, :::8090->80/tcp   nginx-container
[root@localhost ~]# docker inspect nginx-container

這裡 nginx-container 是你想要查看的容器的名稱或ID。

5、啟動已存在容器

docker start <容器 ID/Name>
docker restart 容器id1 [容器id2] [...]  #重啟

6、查看docker容器列表

docker ps  #查看正在運行的容器列表
docker ps –a #所有容器列表(包含存活和退出容器)

7、停止容器

docker stop <容器 ID/Name>

8、進入容器

docker exec -it 容器ID或容器別名稱 /bin/bash

從這個容器退出,不會導致容器的停止,推薦大家使用

9、查看容器的某些進程PID

doker top name

10、刪除容器

docker stop <container_id_or_name> #刪除前先停止容器
docker rm <container_id_or_name>  #刪除容器
docker rm $(docker ps -aq)  #一次性刪除所有已經停止的容器

11、查看鏡像列表

docker images

12、啟動所有容器

docker start $(docker ps -a -q)

13、修改Docker容器內的文件

1)使用docker exec命令和文本編輯器

如果你只是想臨時修改容器內的文件,並且容器內有可用的文本編輯器(如vi、nano等),你可以使用docker exec命令來啟動一個互動式shell會話,併在這個會話中編輯文件。例如:

docker exec -it <container_id_or_name> bash  
# 然後,在bash會話中,你可以使用任何可用的編輯器來修改文件  
# 例如:vi /path/to/your/file  
# 修改完成後,使用:wq退出vi

2)使用docker cp命令

如果你想要從宿主機上直接修改文件,然後將其複製回容器內,可以使用docker cp命令。首先,從容器中將文件複製到宿主機:

docker cp <container_id_or_name>:/path/to/container/file /path/to/host/directory

然後,在宿主機上修改文件,修改完成後,再將文件複製回容器:

docker cp /path/to/host/directory/file <container_id_or_name>:/path/to/container/file

14、創建容器時指定IP

Docker創建容器時預設採用bridge網路,自動分配ip,不允許自己指定。

在實際部署中,我們需要指定容器ip,不允許其自動分配ip,尤其是搭建集群時,固定ip是必須的。

我們可以創建自己的bridge網路,例如:mynet,創建容器的時候指定網路為mynet並指定ip即可。

15、查看網路模式

docker network ls

16、創建一個新的bridge網路

docker network create --driver bridge --subnet=172.19.0.0/16 --gateway=172.19.0.1 dockercompose

17、查看網路信息

docker network inspect dockercompose

18、創建容器並指定容器ip

docker run -it --name nginx-second --network=dockercompose --ip 172.19.0.6 nginx
# 驗證是否固定
docker insepect 容器ID | grep "IpAddress"
"SecondaryIPAddresses": null,
            "IPAddress": "",
                    "IPAddress": "172.19.0.6",

19、查看數據捲相關信息

docker inspect -f {{.Volumes}} 容器名

 

至此本文就全部介紹完了,希望對您有所幫助!


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 第1章:WPF概述 本章目標 瞭解Windows圖形演化 瞭解WPF高級API 瞭解解析度無關性概念 瞭解WPF體繫結構 瞭解WPF 4.5 WPF概述 ​ 歡迎使用 Windows Presentation Foundation (WPF) 桌面指南,這是一個與解析度無關的 UI 框架,使用基於矢 ...
  • 前言 今天給大家推薦一個超實用的開源項目《.NET 7 + Vue 許可權管理系統 小白快速上手》,DncZeus的願景就是做一個.NET 領域小白也能上手的簡易、通用的後臺許可權管理模板系統基礎框架。 不管你是技術小白還是技術大佬或者是不懂前端Vue 的新手,這個項目可以快速上手讓我們從0到1,搭建自 ...
  • 前言 MediatR 是 .NET 下的一個實現消息傳遞的庫,輕量級、簡潔高效,用於實現進程內的消息傳遞機制。它基於中介者設計模式,支持請求/響應、命令、查詢、通知和事件等多種消息傳遞模式。通過泛型支持,MediatR 可以智能地調度不同類型的消息,非常適合用於領域事件處理。 在本文中,將通過一個簡 ...
  • 最近做項目過程中,使用到了海康相機,官方只提供了C/C++的SDK,沒有搜尋到一個合適的封裝了的C#庫,故自己動手,簡單的封裝了一下,方便大家也方便自己使用和二次開發 ...
  • Scoop 安裝 環境需求 PowerShell 5 + .NET Framework 4.5 + 安裝 指定安裝位置(配置環境變數) 以管理員身份打開PowerShell $env:SCOOP='D:\Applications\Scoop' [Environment]::SetEnvironmen ...
  • 第二十一章 machine.UART類實驗 1)實驗平臺:正點原子DNK210開發板 2)章節摘自【正點原子】DNK210使用指南 - CanMV版 V1.0 3)購買鏈接:https://detail.tmall.com/item.htm?&id=782801398750 4)全套實驗源碼+手冊+ ...
  • 概述 Windows 遠程桌面(也稱為 RDP)允許你從一臺電腦遠程連接到另一臺運行 Windows 操作系統的電腦。 開啟遠程桌面 在“設置”中前往“系統>遠程桌面”,將“遠程桌面”設置為“開”。 確保Windows正確存儲微軟賬號的密碼 絕大多數情況下,我們將使用微軟賬號及其密碼來登錄“遠程 ...
  • liwen01 2024.09.01 前言 最近十幾年,通信技術發展迅猛,通信標準更新頻繁,有的設備還在使用 802.11/b/g/n 協議,有的已支持到 WiFi6、WiFi7。 而國內有關無線 WiFi 的書籍或資料卻很少,就算能找著的,大多也是比較老舊。本文試圖使用最新的數據來介紹 WiFi ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...