動態

詳情 返回 返回

Docker容器使用指南:從概念到命令實操 - 動態 詳情

前言

在雲計算和軟件開發領域,Docker就像“輕量級的數字集裝箱”,能把應用和依賴打包成標準化單元,解決“在我電腦上能跑,在你電腦上跑不起來”的痛點。今天就來分享一下Docker的基礎概念和一些實操命令。

一、Docker是什麼?

1. Docker——一個“輕量級的數字集裝箱”

Docker是一款開源的容器化平台,簡單説就是“把應用程序和它需要的環境(比如庫、配置、依賴)打包在一起”,形成一個獨立的“容器”。就像海運中的集裝箱,不管用什麼船運,裏面的貨物(應用)和包裝(環境)都不變,能在任何支持Docker的平台上穩定運行。

和傳統虛擬機(比如VMware)不同,Docker容器不用模擬完整的操作系統,只共享主機的內核,啓動快、佔用資源少——一個主機能跑上百個Docker容器,卻很難同時跑幾十個虛擬機。

2. Docker有什麼用?

  • 環境一致性:開發時在自己電腦上配置好環境,打包成容器後,測試、生產環境直接用這個容器,不用再反覆調試“為什麼這裏報錯”,避免“我這能跑”,“你那跑不了”的尷尬;
  • 資源高效利用:容器啓動快(秒級啓動)、佔用內存少,比虛擬機更輕量化,適合需要大量部署應用的場景(比如電商平台的多服務架構);
  • 簡化部署與遷移:一個容器可以輕鬆部署到Linux、Windows、macOS,甚至雲服務器上,遷移時不用重新配置環境,真正實現“一次打包,到處運行”。

3. Docker適用的典型場景

  • 軟件開發與測試:開發團隊統一使用Docker容器,確保每個人的開發環境一致,測試時直接用開發環境的容器,減少環境差異導致的bug;
  • 微服務架構部署:比如電商平台的“用户服務”“訂單服務”“支付服務”,每個服務打包成一個容器,獨立部署、升級,某一個服務故障不會影響整體;
  • 持續集成/持續部署(CI/CD):在自動化流程中,用Docker容器打包應用,自動完成測試、構建、部署,提高開發效率;
  • 單機多應用部署:個人開發者在一台服務器上,用Docker分別部署博客、小程序後台、數據分析工具,各應用互不干擾,管理更清晰。

二、Docker的基礎

在學命令前,先認識Docker的3個核心組件,就像學開車前要知道方向盤、油門、剎車的作用:

  • 鏡像(Image):容器的“模板”,比如“ubuntu鏡像”“nginx鏡像”,包含了操作系統或應用的基礎文件。用同一個鏡像能做出多個相同的容器;
  • 容器(Container):鏡像運行後的實例,是獨立的運行單元。可以啓動、停止、刪除,每個容器都是隔離的,不會互相影響;
  • 倉庫(Repository):存放鏡像的地方,比如Docker官方倉庫(Docker Hub),裏面有各種現成的鏡像(ubuntu、nginx、mysql等),可以直接下載使用,就像“軟件應用商店”。

三、Docker容器常用命令

1. 查看Docker命令幫助

Docker客户端命令很豐富,想了解某個命令的用法,用docker command --help就能查看詳細説明,比如想知道docker stats(查看容器資源佔用)怎麼用:

$ docker stats --help

執行後會顯示docker stats的參數、用法示例,遇到不懂的命令,這招總能幫上忙。
在這裏插入圖片描述

2. 下載鏡像:獲取容器“模板”

如果本地沒有需要的鏡像(比如ubuntu鏡像),用docker pull命令從倉庫下載,就像從應用商店下載軟件:

$ docker pull ubuntu

命令執行後,會自動下載最新版本的ubuntu鏡像,下載完成後,就能用這個鏡像啓動容器了。
在這裏插入圖片描述

3. 啓動容器:運行你的應用

啓動容器的核心命令是docker run,根據需求添加參數,常見場景如下:

場景1:交互式進入容器(適合測試)

想啓動ubuntu容器,並以命令行模式進入(比如在容器裏執行Linux命令),用-it參數(-i是交互式操作,-t是分配終端):

$ docker run -it ubuntu /bin/bash

執行後會直接進入ubuntu容器的命令行,此時輸入ls(查看目錄)、pwd(查看當前路徑)等命令,和在真實的ubuntu系統裏操作一樣。
退出容器:輸入exit並回車,容器會停止運行。
在這裏插入圖片描述

場景2:後台運行容器(適合長期服務)

大部分時候,我們希望容器在後台運行(比如部署的nginx服務),用-d參數指定後台模式,再用--name給容器起個好記的名字(比如“ubuntu-test”):

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

執行後會返回容器的ID,此時容器在後台運行,不會佔用當前終端。
在這裏插入圖片描述

4. 容器管理:啓動、停止、重啓、查看

查看所有容器(包括已停止的)

想知道當前有哪些容器,用docker ps -a-a表示“所有”,不加-a只顯示運行中的容器):

$ docker ps -a

結果會顯示容器ID、名字、狀態(運行中/已停止)、啓動時間等信息。
在這裏插入圖片描述

啓動已停止的容器

如果容器不小心停止了(比如用exit退出的交互式容器),用docker start + 容器名/容器ID重啓:

# 比如啓動名為“ubuntu-test”的容器
$ docker start ubuntu-test

停止運行中的容器

docker stop + 容器名/容器ID停止容器,就像關掉正在運行的軟件:

$ docker stop ubuntu-test

重啓容器

不管容器是運行中還是已停止,用docker restart能直接重啓:

$ docker restart ubuntu-test

5. 進入後台運行的容器

容器後台運行時,想進入裏面操作(比如查看日誌、修改配置),有兩種方法,推薦用第二種:

方法1:docker attach(退出會停止容器)

$ docker attach ubuntu-test

注意:用attach進入後,輸入exit退出時,容器會跟着停止,適合臨時查看,不適合長期操作。

方法2:docker exec(推薦,退出不影響容器)

-it參數進入容器的交互式終端,退出時容器仍會後台運行,是更常用的方式:

$ docker exec -it ubuntu-test /bin/bash

進入後可以正常執行命令,想退出時輸入exit,容器會繼續在後台運行。

6. 容器導出與導入:備份與遷移

導出容器為快照文件

想把某個容器備份(比如配置好的ubuntu容器),用docker export導出為tar文件:

# 導出名為“ubuntu-test”的容器,保存為ubuntu1.tar
$ docker export ubuntu-test > ubuntu1.tar

導出的tar文件可以拷貝到其他電腦,再導入為鏡像。

從快照文件導入為鏡像

把備份的tar文件導入,生成新的鏡像(比如命名為“test/ubuntu:v1”),後續可以用這個鏡像啓動新容器:

$ cat ubuntu.tar | docker import - test/ubuntu:v1

7. 刪除容器:清理無用容器

不用的容器可以刪除,釋放資源,用docker rm命令(-f參數強制刪除運行中的容器):

# 強制刪除名為“ubuntu-test”的容器
$ docker rm -f ubuntu-test

注意:刪除容器不會刪除鏡像,後續還能用鏡像啓動新容器。

四、常見問題:Docker命令報“權限不足”怎麼辦?

執行Docker命令時,可能會遇到這樣的報錯:

Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.26/images/json: dial unix /var/run/docker.sock: connect: permission denied

報錯原因

Docker進程默認用Unix Socket(而非TCP端口)通信,這個Socket文件屬於root用户,普通用户沒有訪問權限,所以執行docker ps等命令會提示“權限不足”。

2種解決辦法

方法1:臨時用sudo獲取管理員權限

每次執行Docker命令前加sudo,比如:

$ sudo docker ps

這種方法簡單,但每次都要輸sudo,比較麻煩。

方法2:永久解決(推薦)

把當前用户加入“docker用户組”——Docker守護進程啓動時,會賦予“docker用户組”訪問Socket的權限,加入後普通用户也能執行Docker命令:

# 1. 創建docker用户組(如果已存在會提示,不用管)
sudo groupadd docker
# 2. 把當前登錄用户加入docker用户組
sudo gpasswd -a $USER docker
# 3. 更新用户組(讓設置立即生效,不用重啓電腦)
newgrp docker
# 4. 測試:執行docker ps,不報錯就成功了
docker ps

五、總結

Docker的核心是“容器化思維”,從“下載鏡像→啓動容器→管理容器”的實操開始,熟悉命令後再逐步探索更復雜的用法(比如Docker Compose管理多容器、Docker Swarm集羣)。

Docker的優勢在於“簡單、高效、一致”,無論是開發、測試還是部署,用Docker能幫你省去大量環境配置的時間,把精力放在核心業務上。

user avatar hard_heart_603dd717240e2 頭像 wan9 頭像 johanazhu 頭像 coderleo 頭像 wuyagege 頭像 anjingdexiaoyanyao_ciaxxr 頭像 qinyuanqiblog 頭像 hyfhao 頭像 yaochujiadejianpan 頭像 judei 頭像 openhacking 頭像 bssj 頭像
點贊 14 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.