執行容器
Docker 在隔離的容器中執行程序。容器是在主機上執行的程序。主機可以是本機或遠端。當您執行 docker run
時,執行的容器程序會被隔離,因為它有自己的檔案系統、自己的網路,以及與主機分離的獨立程序樹。
此頁面詳細說明如何使用 docker run
指令來執行容器。
一般格式
docker run
指令採用以下格式
$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
docker run
指令必須指定一個映像檔參考來建立容器。
映像檔參考
映像檔參考是映像檔的名稱和版本。您可以使用映像檔參考來建立或執行基於映像檔的容器。
docker run IMAGE[:TAG][@DIGEST]
docker create IMAGE[:TAG][@DIGEST]
映像檔標籤是映像檔版本,省略時預設為 latest
。使用標籤可以從特定版本的映像檔執行容器。例如,要執行 ubuntu
映像檔的 24.04
版本:docker run ubuntu:24.04
。
映像檔摘要
使用 v2 或更新版本映像檔格式的映像檔具有稱為摘要的內容可定址識別碼。只要用於產生映像檔的輸入不變,摘要值就是可預測的。
以下範例從具有 sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0
摘要的 alpine
映像檔執行容器
$ docker run alpine@sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0 date
選項
[OPTIONS]
讓您可以設定容器的選項。例如,您可以為容器命名 (--name
),或將其作為背景程序執行 (-d
)。您也可以設定選項來控制資源限制和網路等。
指令和引數
您可以使用 [COMMAND]
和 [ARG...]
位置引數來指定容器啟動時要執行的指令和引數。例如,您可以將 sh
指定為 [COMMAND]
,並結合 -i
和 -t
旗標,在容器中啟動互動式 Shell (如果所選映像檔在 PATH
上有 sh
可執行檔)。
$ docker run -it IMAGE sh
注意
根據您的 Docker 系統設定,您可能需要在
docker run
指令前加上sudo
。為了避免在docker
指令中使用sudo
,您的系統管理員可以建立一個名為docker
的 Unix 群組,並將使用者新增到該群組。有關此設定的詳細資訊,請參閱您作業系統的 Docker 安裝說明文件。
前景和背景
當您啟動容器時,容器預設會在前台中執行。如果您想要在背景中執行容器,可以使用 --detach
(或 -d
) 旗標。這會在不佔用終端機視窗的情況下啟動容器。
$ docker run -d <IMAGE>
當容器在背景中執行時,您可以使用其他 CLI 指令與容器互動。例如,docker logs
可讓您檢視容器的日誌,而 docker attach
則將其帶到前景。
$ docker run -d nginx
0246aa4d1448a401cabd2ce8f242192b6e7af721527e48a810463366c7ff54f1
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0246aa4d1448 nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second 80/tcp pedantic_liskov
$ docker logs -n 5 0246aa4d1448
2023/11/06 15:58:23 [notice] 1#1: start worker process 33
2023/11/06 15:58:23 [notice] 1#1: start worker process 34
2023/11/06 15:58:23 [notice] 1#1: start worker process 35
2023/11/06 15:58:23 [notice] 1#1: start worker process 36
2023/11/06 15:58:23 [notice] 1#1: start worker process 37
$ docker attach 0246aa4d1448
^C
2023/11/06 15:58:40 [notice] 1#1: signal 2 (SIGINT) received, exiting
...
有關與前景和背景模式相關的 docker run
旗標的詳細資訊,請參閱
docker run --detach
: 在背景中執行容器docker run --attach
: 附加到stdin
、stdout
和stderr
docker run --tty