Docker的筆記
初學技術建議先熟悉 docker 指令,剛開始可能會覺得有點小複雜,反正指令都這樣,會使用 docker 之後,可以使用 docker 很快的搭建環境。
一些概念
multi-stage build
這個可以讓我們在同一個 docker file 分成好幾個 stage ,根據需求去使用,詳情參考 Use multi-stage builds | Docker Documentation
Docker 的限制
- docker hub limit 有哪些?
配置
設定使用者群組,以便之後可以使用 docker
指令而不需要使用 sudo
。
常用指令
查看開啟的容器
docker ps
停止容器
docker stop 容器ID
查看未啟動的容器
docker container ls -a
移除容器
docker rm 容器ID
搜尋 image
docker search 名稱
獲取容器地址,出處
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名稱
作弊表
危險區
移除所有未開啟的容器,請確認沒有要保留的容器在使用此指令!!
sudo docker rm $(sudo docker container ls -a | awk '{ if (NR >= 2) { print $1 } }')
移除<none>
的image
sudo docker image rm $(sudo docker image ls -a | grep '<none>'| awk '{ print $3 }')
bash
啟動並執行bash
docker run --name http1 -it httpd bash
執行後啟動bash
docker exec -it 容器id /bin/bash
ARG 參數
可以使用 --build-arg
帶入參數
掛載
volumes掛載
docker run -v 主機地址:容器地址 image-name
檔案
複製的指令為
sudo docker cp /hostPath container:/containerPath
複製容器內部的檔案,以httpd
作為範例
sudo docker create --name temp httpd
sudo docker cp temp:/usr/local/apache2/conf/httpd.conf httpd.conf
sudo docker rm temp
Dockerfile
建立Dockerfile
FROM httpd
COPY ./httpd.conf /usr/local/apache2/conf/httpd.conf
build image
sudo docker build -t my-httpd .
Docker 停止與刪除所有容器
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
Docker Compose
Docker Remote
docker 設定遠程
docker context create <context_name> --docker "host=ssh://user@host:port"
切換 context
docker context use <context_name>
列出 context 列表
docker context list
參見文檔 Docker Context
安全性
docker group 之使用者,可以透過 docker | GTFOBins 描述方法提權
Docker