`docker`指令總覽及系統指令
===
(last update:2021/10/31)
## `docker`指令分類一覽
* 系統相關:`docker system` **列出docker相關資訊**
* 映像檔相關:`docker image` **管理映像檔**
* 容器相關:`docker container` **container通常省略**
* 網路相關:`docker network` **管理網路**
* 儲存相關:`docker volume` **管理docker儲存設備**
* ~~服務相關:`docker service`~~ **管理系統服務,有了k8s就沒落了**
* ~~堆疊相關:`docker stack`~~ **管理多個容器堆疊,有了k8s就沒落了**
* ~~多主機相關:`docker swarm`~~ **管理多台主機的docker叢集,有了k8s就沒落了**
### 系統圖解

### 所有指令一覽
* `docker attach` **連接到一個執行中容器的輸出(顯示容器)**
* `docker build` **利用自建的`Dockerfile`建立映像檔**
* `docker commit` **從目前執行的container建立一個映像檔**
* `docker cp` **容器間或實體機容器間複製檔案**
* `docker exec` **連接至容器內執行,如`docker exec -it name bash`**
* `docker export` **把容器的檔案系統存成tar壓縮檔**
* <span style="color:red"> `docker images` **列出所有映像檔** </span>
* `docker import` **從tar檔案建立映像檔**
* `docker info` **列出目前docker的系統資訊**
* `docker inspect` **列出docker的`json`系統完整資訊** </span>
* `docker kill` **刪除執行中的容器**
* `docker load` **從tar中載入映像檔**
* `docker login` **登入docker的映像檔hub**
* `docker logout` **登出docker的映像檔hub**
* `docker logs` **查看容器的輸出資訊**
* `docker pause` **暫停容器的執行**
* `docker port` **列出容器對外開放的通訊埠**
* <span style="color:red">`docker ps` **列出執行的容器`docker ps -a`**</span>
* <span style="color:red">`docker pull` **下載映像檔**</span>
* <span style="color:red">`docker push` **上傳映像檔**</span>
* `docker rename` **更名映像檔**
* `docker restart` **重啟映像檔**
* <span style="color:red">`docker rm` **刪除容器**</span>
* `docker rmi` **刪除映像檔**
* <span style="color:red">`docker run` **啟動一個新的容器執行**</span>
* `docker save` **將容器存入tar中**
* <span style="color:red">`docker search` **搜索docker hub**</span>
* `docker start` **啟動停止的容器**
* `docker stats` **列出容器的執行狀態**
* `docker stop` **停止容器**
* `docker tag` **幫映像檔取標籤名稱**
* `docker top` **列出執行中容器目前的處理程序**
* `docker unpause` **讓暫停中的容器繼續執行**
## 系統相關指令範例
**範例1:`docker version`**
列出docker版本,注意不同版本會有不同功能。有些功能在新版本均移除,請注意 https://docs.docker.com/engine/deprecated/。
```
(joshhuAI)joshhu:~/ $ docker version [0:06:34]
Client: Docker Engine - Community
Version: 20.10.7
API version: 1.41
Go version: go1.13.15
Git commit: f0df350
Built: Wed Jun 2 11:56:47 2021
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.7
API version: 1.41 (minimum version 1.12)
Go version: go1.13.15
Git commit: b0f5bc3
Built: Wed Jun 2 11:54:58 2021
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.4.6
GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d
nvidia:
Version: 1.0.0-rc95
GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
docker-init:
Version: 0.19.0
GitCommit: de40ad0
(joshhuAI)joshhu:~/ $
```
**範例2:`docker info`**
顯示系統資訊。
```
(joshhuAI)joshhu:~/ $ docker info [0:06:43]
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 7
Server Version: 20.10.7
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux nvidia runc
Default Runtime: nvidia
Init Binary: docker-init
containerd version: d71fcd7d8303cbf684402823e425e9dd2e99285d
runc version: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-142-generic
Operating System: Ubuntu 16.04.7 LTS
OSType: linux
Architecture: x86_64
CPUs: 24
Total Memory: 62.83GiB
Name: joshhuai
ID: YSFJ:UUP7:B7EV:OZLF:IX7Q:SVIP:4SM6:OVMR:SC7D:FVYV:D2N2:SAXM
Docker Root Dir: /var/lib/docker
Debug Mode: false
Username: joshhu
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
WARNING: No swap limit support
```
**範例3:`docker system prune`**
清除系統所有不要的東西。
```
(joshhuAI)joshhu:~/ $ docker system prune [0:09:24]
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
(joshhuAI)joshhu:~/ $
```
**範例4:`docker system events`**
檢視主機目前執行docker有關的訊息。
```
docker run -d newimage
```
```
(joshhuAI)joshhu:~/ $ docker system events [0:12:03]
2021-10-31T00:12:56.299461853+08:00 container create 3d0571ca7fad49b69e48debc97880478acc5d4b74792cb78e3b07c29ee1b88fc (image=newimage, name=intelligent_snyder)
2021-10-31T00:12:56.320222453+08:00 network connect 5b4c28676aae128b3b825b86714510df45a86cd62e35bc9ec2b1ef3cbca66950 (container=3d0571ca7fad49b69e48debc97880478acc5d4b74792cb78e3b07c29ee1b88fc, name=bridge, type=bridge)
2021-10-31T00:12:56.881895643+08:00 container start 3d0571ca7fad49b69e48debc97880478acc5d4b74792cb78e3b07c29ee1b88fc (image=newimage, name=intelligent_snyder)
```
```
docker rm -f 3
```
```
(joshhuAI)joshhu:~/ $ docker system events [0:11:22]
2021-10-31T00:11:45.735274280+08:00 container kill 781d1370a70ee9b2cd0b54ae0ae1a90acea648897e05307ad9232f4730bca6ca (image=newimage, name=romantic_volhard, signal=9)
2021-10-31T00:11:45.799964394+08:00 container die 781d1370a70ee9b2cd0b54ae0ae1a90acea648897e05307ad9232f4730bca6ca (exitCode=137, image=newimage, name=romantic_volhard)
2021-10-31T00:11:45.944675253+08:00 network disconnect 5b4c28676aae128b3b825b86714510df45a86cd62e35bc9ec2b1ef3cbca66950 (container=781d1370a70ee9b2cd0b54ae0ae1a90acea648897e05307ad9232f4730bca6ca, name=bridge, type=bridge)
2021-10-31T00:11:46.005736426+08:00 container destroy 781d1370a70ee9b2cd0b54ae0ae1a90acea648897e05307ad9232f4730bca6ca (image=newimage, name=romantic_volhard)
```
**範例5:`docker system df`**
列出目前磁碟使用狀況,主要為映像檔。
```
(joshhuAI)joshhu:~/ $ docker system df [0:14:15]
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 0 544.4MB 544.4MB (100%)
Containers 0 0 0B 0B
Local Volumes 4 0 7.184GB 7.184GB (100%)
Build Cache 0 0 0B 0B
(joshhuAI)joshhu:~/ $
```
###### tags: `docker`