基礎 Docker 介紹與用法
本文講述 Docker 的 基本知識 與 用法&指令
重要觀念 Docker != Container
Docker 架構:
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>