Docker 筆記
Docker 常用 command line
docker images # 查看本機所有 images
docker ps -a # 列出所有容器
命令會啟動一個新的 Docker 容器,並在其中執行 Node.js 命令列 shell。-i 標誌會允許您與容器進行互動,而-t 標誌會為容器分配一個終端。node 部分會指定要執行的 Node.js 命令。
docker run -it node
Docker run 命令
-d : 在後台執行
-p : 對應的port
--name: container 名稱
--rm:容器停止後,自動刪除(測試用)
-t : 開啟終端機
-i : 可以輸入
info
範例:執行 docker 建立一個 nginx container 並且把本地的 7777 對應到 container nginx 的 80 port
docker run -d -p 7777:80 --name webserver nginx
Docker ps 命令
docker ps [option] # 列出所有容器
# option
-a :顯示所有的容器,包括未運行的。
-f :根據條件過濾顯示的內容。
--format : 指定返回值的模板文件。
-l : 顯示最近創建的容器。
-n 目錄:最近創建的n個目錄。
--no-trunc :不截斷輸出。
-q :靜默模式,只顯示容器編號。
-s :顯示總的文件大小。
實例
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... PORTS NAMES
09b93464c2f7 nginx:latest "nginx -g 'daemon off" ... 80/tcp, 443/tcp myrunoob
96f7f14e99ab mysql:5.6 "docker-entrypoint.sh" ... 0.0.0.0:3306->3306/tcp mymysql
輸出詳情介紹:
- CONTAINER ID:容器 ID。
- IMAGE: 使用的鏡像。
- COMMAND:啟動容器時運行的命令。
- CREATED: 容器的創建時間。
- STATUS:容器狀態。
- 狀態有 7 種:
- 創建(已創建)
- restarting(重啟中)
- 運行(運行中)
- 移除(遷移中)
- paused(暫停)
- 退出(停止)
- 死亡(死亡)
- 狀態有 7 種:
- PORTS:容器的端口信息和使用的連接類型(tcp\udp)。
- NAMES:自動分配的包含名稱。
docker --help
讓你可以進到 docker 去輸入一些 input 好可以進行程式的運算
-i interactive
-t
docker images & containers: Core Building Blocks
說明主要 build image 和 如何做用 container 的內容
delete image & containers
docker rm [container_id, container_id2, container_id3...]
removing stopped containers automatically
這個比較不懂
簡單的範例
建立一個簡單的 express server,
const express = require("express");
const app = express();
const port = 3000;
app.get("/", (req, res) => res.send("Hello World!"));
app.listen(port, () => console.log(`Example app listening at http://localhost:${port}`));
dockerFile
FROM node
WORKDIR /app
COPY package.json /app
RUN npm install
COPY . /app
EXPOSE 3000
CMD ["node", "server.js"]
# docker build
# 這樣子我們建立了一個 image,接下來我們要把這個 image 執行起來,就可以看到我們的 server 了
# docker run -p 3000:3000 -d <image id>
# -p 3000:3000 代表我們要把 container 的 3000 port 對應到 host 的 3000 port
# -d 代表我們要把 container 在背景執行
# <image id> 就是我們剛剛 build 出來的 image id
這些是 Docker 的命令,用於管理容器和映像。以下是每個命令的解釋:
1. docker ps
列出當前運行中的容器。
2. docker stop <container id>
停止運行中的指定容器,<container id> 是容器的唯一標識符。
3. docker rm <container id>
刪除指定的容器,必須在容器停止後才能刪除。
4. docker rmi <image id>
刪除指定的映像,<image id> 是映像的唯一標識符。
5. docker run -p 3000:3000 -d <image id>
使用指定的映像啟動一個新的容器,並將容器的 3000 端口映射到主機的 3000 端口,-d 表示在後台運行。
6. docker exec -it <container id> /bin/bash
在指定的容器中啟動一個交互式的 Bash 終端,允許用戶進入容器進行操作。
7. docker logs <container id>
查看指定容器的日誌輸出,這對於調試和監控容器的運行狀態非常有用。
這些命令是 Docker 的基本操作,幫助用戶管理和操作容器及映像。
docker run build .
docker run -p 3000:3000 [image_id]
檢查 image 的方法
看看我有多少的 images
docker images
docker image inspect [image_id]
sharing images & container

Managing Data & Working with Volumes
在 image 裡面我們所能抓到的值,只能用來 read,但是在 container 裡面我們可以對 裡面的值做 read, write 的動作
data 種類
-
application (code + env)
read-only (images)
-
temporary (cache, log, user input)
read-write (container)
-
persistent (database, config) read-write (container && volume)