因為平常架Lab滿常都還會用到docker的,如果是打一些vulnhub或是HTB也是有機會遇到docker。
這篇文章單純主要就是紀錄筆記一下一些基本常用的指令(對我來說啦~)。
安裝Docker
Ubuntu 18.04 安裝Docker
https://phoenixnap.com/kb/how-to-install-docker-on-ubuntu-18-04
Update Software Repositories
sudo apt-get update
Uninstall Old Versions of Docker
sudo apt-get remove docker docker-engine docker.io
Install Docker
sudo apt install docker.io
Start and Automate Docker
sudo systemctl start docker
sudo systemctl enable docker
(Optional): Check Docker Version
docker --version
(Optional): Check Docker Status
service docker status
(Optional): Add User
sudo usermod -aG docker [Username]
reboot
Docker IMAGE 指令
取得映像檔
如果不指定TAG 則預設會選擇latest tag
docker pull [NAME:TAG]
查看映像檔資訊
docker images
搜尋映像檔
docker search [IMAGE]
刪除映像檔
docker rmi [IMAGE]
Docker CONTAINER 常用指令
直接先run一個容器起來
run相當於先執行create再執行start
docker run -it ubuntu /bin/bash
可以再打開另外一個terminal視窗,輸入以下指令確認docker container狀態
docker ps -a
在要離開 docker container 的 terminal 時有一個坑。
就是如果輸入 exit 指令時,container 會被關閉
如果不要停止 container 而要退出 docker container 的terminal
需要輸入ctrl + p之後再輸入 ctrl + q 的按鍵,就不會把 container 關閉。
停止容器的指令
docker stop [NAME]
刪除容器
docker rm [NAME]
要再啟動已經停止的容器
docker start [NAME]
結束全部
docker stop $(docker ps -a -q)
Docker-compose 用法
docker-compose白話來說就是同時啟動好啟動好幾個container
docker-compose是yml格式 留言
一開始我們先了解 Docker Compose 是一個工具可以讓你可以透過一個指令就可以控制所有專案(project)中所需要的 services。Docker Compose 是用 YAML 檔案格式來描述和定義 project 中 services 運作關係,白話來說就是用來管理 Container 的文件檔。
什麼意思呢?
試想一下,我們在開發一個典型的 Web project 時通常不是只有一個 service,有可能需要 app server、database、cache,甚至是 reverse proxy 等 service 才能構成一個可以上線運行的專案,這些 service 往往會需要多個 container 來運行。此時若是使用 Docker CLI 需要手動輸入多少行才能正式啟動一個 project?這時候就是 Docker Compose 發揮功能的時候啦!
參考來源:
https://blog.techbridge.cc/2018/09/07/docker-compose-tutorial-intro/
https://ithelp.ithome.com.tw/users/20103456/ironman/1320
https://ithelp.ithome.com.tw/users/20103420/ironman/1046
docker-compose安裝
apt install docker-compose
執行
(直接在有yml的相同目錄下執行就可以)
docker-compose up -d
進入 docker container
要進入docker container主要有以下幾種方法:
- 使用docker attach
- 使用SSH
- 使用nsenter
- 使用exec
使用exec
查看相關指令
docker exec --help
進入container內
其中要修改的地方只有下面cve2020的地方
是利用docker ps -a列出資訊當中的NAMES欄位值
docker exec -t -i cve2020 /bin/bash
要退出docker中
exit
Docker 傳送檔案
以下指令中55667788是container的ID 留言
從主機複製檔案到容器中
docker cp /root/folder/test.txt 55667788:/test/
從容器中複製檔案到主機
docker cp 55667788:/test/test.txt /root/folder/