本文講述 Docker 的 基本知識 與 用法&指令

重要觀念 Docker != Container

Docker 架構:

vm_vs_container vm_vs_container_arch VM:
用來建立虛擬化運算環境的技術(OS層級虛擬化)

優點:

  • 安全性較高,因為硬體層以上都虛擬化
  • 可以選擇各種不同的 OS

缺點:

  • Image大小通常為GB
  • 啟動速度通常要花個幾分鐘
  • 資源使用較多,因為要將一部分資源分給 VM 的作業系統

Container:
Docker 是個管理容器的服務,提供應用層級虛擬化技術。容器不像虛擬機要在 Host OS 上再安裝 Guest OS,而可以直接共用底層 Host OS 的資源,同時具備其應用程式沙盒的隔離性。

優點:

  • Image大小通常為MB
  • 啟動速度較
  • 能將更多資源運用在跑服務上
  • 更新較為容易

缺點:

  • 安全性較
  • 同一台機器中,每個 Container 的 OS 都是相同

Docker Command:

docker pull <image_name:version_Tag>:把 docker image 下載下來

docker compose up -d :建立當前資料夾下的 docker-compose.yml 檔建立相對應的 container

docker -p <host端port:container端port>

docker compose ps -a:查看目前有在跑的 container 和 詳細資料

docker container ls:查看 container 目前有什麼在跑

docker stats:查看 container ID and 執行佔用 CPU or Memory …

docker run <container_ID or Container_name>:執行 container

docker stop <container_ID or Container_name>:停止 container

docker rm <container_ID or Container_name>:移除 container

docker compose stop <container_ID or compose_name>:停止

docker compose run <container_ID or compose_name>:開始

docker compose restart <container_ID or compose_name>:重啟 container

docker network ls:查看所有 docker 上 network 種類

docker network inspect <network_name>:查詢 接上此 network 的資訊

docker exec -it <container_id or container_name> <Command> :docker 跟 container 溝通

docker exec -it —user=root <container_id or container_name> <Command>:以 root權限 跟 container 溝通

docker compose build :把docker file 文件打包成一個image

看container ip:
docker inspect -f ‘{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ container_id or container_name

找資料位置:
docker volume ls # => get Container_ID
docker inspect -f ‘{{.Mounts}}’ <Container_ID>

Reference:

《Docker —— 從入門到實踐­》正體中文版 (Git book)

Docker Tips (Git book)

專題筆記: VM 與 Docker (Hackmd) by.@wei06097