Docker 基本指令與操作筆記

因為平常架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/ 

發佈留言