###### tags: `Docker` ## Docker 指令 ### Docker 版本 - docker version ### Docker Image - 下載 image - docker image pull nginx → 下載 nginx 的 image - docker image pull nginx:alpine → 下載 nginx alpine 的版本 - 建立 image - docker image build -t [IMAGE_NAME] . - docker image build -t [ACCOUNT/IMAGE-NAME] . - 查看 image - docker image -a → 查看所有 images - 刪除 image - docker image rm [IMAGE_ID] - 刪除所有無 tag image - docker image prune -f ### Docker Container - 運行容器 - docker container run -p 80:80 nginx:alpine → 運行 nginx:alpine 在 80 port 上,80(local):80(container) - docker container run -d -p 80:80 nginx:alpine → 運行非連接容器模式 - 停止容器 - docker container stop [CONTAINER_ID] - 在原本的畫面中,按下 ctrl + c 會離開、關閉容器 - 查看容器 - docker container ls → 可以看到所有運行中的容器 - docker container ls -a → 可以看到所有停止和運行中的容器 - docker logs [CONTAINER_ID] → 顯示容器 log - docker logs -t [CONTAINER_ID] → 顯示時間戳容器 log - docker container inspect [CONTAINER_ID] → 可以檢視容器細節 - 連接容器 - docker container attach [CONTAINER_ID] → 即可回到該容器,ctrl + c 關閉該容器 - 刪除容器 - docker container rm [CONTAINER_ID] → 刪除已停止容器 - docker container prune -f → 刪除所有已停止的容器 - docker system prune -f → 刪除已停止容器/image/network - 操作容器 - docker container exec -it [CONTAINER_ID] sh - 開啟一個新的交互式會話或進程 - **`i`**(或 **`-interactive`**):保持容器的標準輸入開放。 - **`t`**(或 **`-tty`**):分配一個虛擬終端(pseudo-TTY)。 ## Docker file - **FROM** - **`FROM`** 指令用於指定基礎映像。所有 Dockerfile 的建立都必須從一個基礎映像開始,或者從另一個使用 **`FROM`** 指令的映像開始。這決定了應用的運行環境。 - **WORKDIR**(工作目錄) - **`WORKDIR`** 指令用於設定容器內的當前工作目錄。之後的 **`RUN`**、**`CMD`**、**`ENTRYPOINT`**、**`COPY`** 和 **`ADD`** 指令都會在這個目錄下執行。 - 常見的專案目錄為 **`/app`** 或 **`/usr/src/app`** - **COPY**(複製) - **`COPY`** 指令將從 Docker 主機的指定路徑複製文件或目錄到容器內的指定路徑。它僅複製新文件,不會執行任何檔案。 - **ADD**(添加) - **`ADD`** 指令與 **`COPY`** 類似,也是用來從 Docker 主機複製文件到容器。不同之處在於 **`ADD`** 可以**處理 URL 和自動解壓縮壓縮包**到目標目錄。 - **RUN**(執行) - **`RUN`** 指令用於在建立映像時執行命令,這些命令在新層上對映像進行修改,然後將結果保存下來。通常用於安裝軟體包、建立配置文件等。 - **ENV**(環境變數) - **`ENV`** 指令用於設定環境變數。這些變數可在 Dockerfile 中的任何位置使用,並且在容器運行時可用。 - **EXPOSE**(暴露端口) - **`EXPOSE`** 指令用於指定容器在運行時應該監聽的端口。這對於與容器的網絡溝通非常重要。 - 指令告訴 Docker 這個容器在運行時會使用哪些端口。**它本身不會發佈端口**到宿主機,只是一種文檔化的聲明。 - **CMD**(命令) - **`CMD`** 指令提供了容器啟動時應該運行的命令。Dockerfile 中可以有多個 **`CMD`** 指令,但**只有最後一個會生效**。`CMD` 可以被 `docker run` 命令後面的參數覆蓋。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up