###### tags: `行雲CTF`
# CTFD & Docker指令
## 基礎觀念(可跳過)
小小科普:
ISO生成VM,如同image生成container
## VM 和 Docker差異

- docker較輕量
# 實作
## 先SSH連線到CTFD主機上
## 下載image
``` docker pull tutum/lamp```
## 查看已下載的image
```docker images```
## 生成container
```docker run -d -p 2333:80 -p 3306:3306 tutum/lamp```
-
- run生成指令
- 到實體主機 port 2333對應到container port 80
- container port 3306 對應到實體主機 port 3306
## docker ps -a
- 查看container進程
- 可以看到剛剛新建的container
## 進入指定container的bash shell
```docker exec -it [container id] bash```
- 進入Container ID是 2f88bd53d042的shell
```sudo docker exec -it 2f88bd53d042 bash```
## 更多操作指令
### 啟動容器
docker start [container id]
### 關閉容器進程
docker kill [container id]
- 如同bash的kill
### 停止容器
docker stop [container id]
### 删除容器(注意要關了容器才能删)
- 刪除特定容器
docker rm [container id]
- 刪除所有容器
docker rm -f $(docker ps -a -q)
## 鏡像指令
### 查詢所有鏡像
docker image ls
### 刪除鏡像
- 刪除特定image
docker rmi [image id]
- 刪除所有容器
docker rmi -f $(docker images)
## 啟動
### 啟動所有容器
```docker start $(docker ps -a | awk '{ print $1}' | tail -n +2)```
## 匯入匯出
- Export Container
```docker export Web_Export.tar```
- import image
- docker import – [定義名稱/TAG] < [匯出的名稱].tar
### save容器
- 相當於匯出或是儲存目前狀態
[save load指令參考來源](https://blog.csdn.net/guizaijianchic/article/details/78324646)
```sudo docker save conainter_name > 打包好的檔名.tar```
```sudo docker save pwn_deploy_chroot > pwn_deploy_chroot.tar```
### load容器
- 相當於載入image
```docker load < 包的名稱.tar```
```docker load < pwn_deploy_chroot.tar```
### commit和save連用
#### commit
```docker commit -m "Added Git package" -a "Starter" 88400ddfbf99 ubuntu:v2```
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- -m 後面附帶commit的說明訊息
- -a 可以附加作者的資訊
剩下附帶參數分別是container id以及tag
#### save
- docker save可將image存到本機檔案。
```docker save -o ubuntu.tar ubuntu:v3```