1.需求
- 最近需要用到docker比較多,遂安裝使用下,第一次用docker搭建測試環境,不得不說,docker真香。期間遇到了比較多奇奇怪怪的問題,網上的教程也比較多比較亂,遂記錄一下。
- 如果不是在kali上安裝,例如debian9或10可以參考這個鏈接:https://www.myfreax.com/how-to-install-and-use-docker-on-debian-9/
2.安裝docker
apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo 'deb https://apt.dockerproject.org/repo debian-stretch main' > /etc/apt/sources.list.d/docker.list
apt-get install apt-transport-https ca-certificates
apt-get update && sudo apt-get install docker-engine
//由於版本變化等各種其他復雜原因,如果安裝docker-engine這一步失敗的話,建議改為apt-get install docker.io
systemctl start docker
3.配置阿里雲鏡像下載加速
-
注冊登錄阿里雲鏡像加速頁面:https://cr.console.aliyun.com/#/accelerator
-
注冊完之后拿到自己的加速器地址
-
修改/etc/docker/daemon.json文件配置
{
"registry-mirrors": ["https://××××××.mirror.aliyuncs.com"]
} -
重啟daemon:systemctl daemon-reload
-
重啟docker服務:systemctl restart docker
4.如果發現沒有docker-compose的話,可以按下面的方式安裝
詳見:https://github.com/docker/compose/releases
curl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
注:用pip安裝docker-compose的話貌似會遇到一些奇奇怪怪的問題
5.docker常用指令
- 啟動:systemctl start docker
- 一鍵運行docker:docker-compose up -d,運行該命令需要當前目錄下有docker-compose.yaml文件,一般支持docker一鍵部署的github項目下載下來只來會有這個文件。
- 查看鏡像:docker images
- 查看容器:docker ps -a
- 停止所有容器運行:docker rm $(docker ps -aq)
- 刪除所有鏡像:docker rmi $(docker images -q),刪除鏡像前需要停止運行的容器
- 容器重啟:docker-compose restart,配置文件、代碼修改或者版本更新(從Github拉下最新的代碼),不需要重新build,只需要執行docker-compose restart
- 數據持久化保存:將docker/data/mysql目錄掛載到外部目錄即可,一般支持一鍵部署的會將配置寫在docker-compose.yaml文件里,自己build的話可以是-v ./docker/data/mysql/:/var/lib/mysql
- 查看日志:docker-compose logs
- 移除容器:docker-compose down -v
- 注:
- docker bulid和run用於創建單個鏡像和容器,Dockerfile文件指定基礎信息
- docker-compose是多容器管理,也就是常說的容器編排,根據docker-compose.yml文件定義容器運行時屬性,指明容器間依賴
- 在實際的生產環境中,多容器的創建和管理使用K8S比較多
6.[補充]docker部署服務的幾種方式
- 1.根據公網上已有的鏡像直接pull+run部署,例如某個webserevr
docker search webserevr
docker pull jsda**/webserver
docker run -d -p 80:80 webserver
- 2.下載github上某個支持docker部署的項目,舉一個例子
git clone https://github.com/firesunCN/BlueLotus_XSSReceiver.git
cd BlueLotus_XSSReceiver
docker build -t bluelotus . #.表示從當前路徑尋找Dockerfile文件,該文件包含了基礎鏡像、創建容器后運行的指令、端口等信息
docker images #這個時候可以看到已創建好的bluelotus鏡像
docker run -d -p 80:80 bluelotus #指定run bluelotus鏡像,以創建容器
訪問 http://ip/admin.php 密碼 bluelotus
- 3.使用docker-compose一鍵部署
git clone https://github.com/***/***.git
docker-compose up -d