0%

docker 常用指令

docker 常用指令

  • 啟動容器
  • 列出容器
  • 執行容器
  • 連上容器
  • 容器 log
  • 停止容器
  • 移除容器
  • 登入 docker registry
  • 容器版號
  • 容器資訊
  • 儲存容器
  • 載入容器
  • docker 影像
  • docker 執行程式

    run

啟動一個容器有很多可以說明的。

1
$ docker run -ti alpine:3.11 sh

上面只是單純的啟動一個可以執行的shell的container。

容器名字 –name

1
$ docker run -ti --name shell alpine:3.11 sh

指定容器的名字為 shell

背景服務容器 –detach (-d)

1
$ docker run -d --name my-nginx nginx

執行一個持續在背景執行的container。
沒有指定時,會在執行的程式停止後,容器也停止。
或是容器將執行程式的輸出直到程式結束。
也會讓目前的 shell 被佔用住。

對應容器 port –public (-p)

1
$ docker run -d --name my-nginx -p 80:80 nginx

讓容器的port 80對應到host的port 80。提供服務。

容器環境變 –env (-e)

1
$ docker run -d -e http_proxy=http://proxy.hinet.net:80 nginx

在容器中設定環境變數 http_proxy 為 http://proxy.hinet.net:80

容器存儲 –volume (-v)

1
$ docker run -d -v $HOME/nginx/conf.d:/etc/nginx/conf.d nginx

將 $HOME/nginx/conf.d 目錄對應到容器內的 /etc/nginx/conf.d 目錄。
讓容器可以存取到在host中 ~/nginx/conf.d 目錄的容器。
存儲是需要花費時間再介紹的。

容器hostname –hostname (-h)

1
$ docker run -d --hostname nginx nginx

指定容器的 hostname 為 nginx 。

ps

列出目前已經啟動的容器.

1
2
3
 $ docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c22def86c59 sameersbn/squid:3.5.27-2 "/sbin/entrypoint.sh" 4 weeks ago Up 3 days 0.0.0.0:8080->3128/tcp squid

以上面的例子中,我們可以看到已經啟動的容器的一些資訊。
CONTAINER ID 當我們啟動一個容器在背景時,也會輸出。
一般我們可以用containerid的前面三四個字元來代表容器,也可以用 container name 代表容器。
我們在要處理和容器進行進一步的處理時,都會需要知道這個代表容器的代號。

exec

一般我們需要進入容器的 shell 可以使用。
或是需要在容器內執行特定的工作。

1
$ docker exec -ti squid sh

這兒我們在容器名字為 nginx 內執行 shell 。
-ti 代表兩個參數, t 代表有 tty。i 代表是互動的。

squid 是容器的名稱。在上一個例子中 7cc2 也可以代表,
所以可以將 squid 取代為 7cc2 來代表我們要處理的容器。

attach

一般我使用的是 exec 來進入容器。
attach後如果要結束也會讓原來的容器也結束掉。
不過特定情況還是有這樣的需求。

logs

當我們的容器執行在背景,我們只得到了containerid的輸出。
原來啟動容器的結果有需要觀察時就需要使用 logs的指令。

1
$ docker logs nginx

stop

我們也可以暫時讓容器停止。

1
$ docker stop nginx

rm

當我們不需要容器時,就可以移除容器,讓佔用的資源回收。
所以停止的容器仍然佔用一定的資源。
當我們重新啟動容器時,原來的資源就會連接到容器。

1
$ docker rm nginx

我們也可以用 -f 的參數將沒有停止的容器強止移除。

1
$ docker rm -f nginx

容器移除後,才是容器生命週期正式的結束。所有和容器相關的資源也就再也找不回來了。

登入 docker

1
$ docker login

當沒有指定 host 及 port 時,會連上官方的 registry。
一般情況是當我們想將我們的影像上傳的雲時才需要登入。
也可以登入私有的 registry ,來將影像上傳。

版號

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 $ docker version
Client: Docker Engine - Community
Version: 18.09.2
API version: 1.39
Go version: go1.10.8
Git commit: 6247962
Built: Sun Feb 10 04:12:39 2019
OS/Arch: darwin/amd64
Experimental: false

Server: Docker Engine - Community
Engine:
Version: 18.09.2
API version: 1.39 (minimum version 1.12)
Go version: go1.10.6
Git commit: 6247962
Built: Sun Feb 10 04:13:06 2019
OS/Arch: linux/amd64
Experimental: false

資訊

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 $ docker info
Containers: 3
Running: 0
Paused: 0
Stopped: 3
Images: 8
Server Version: 18.09.2
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 9754871865f7fe2f4e74d43e2fc7ccd237edcbce
runc version: 09c8266bf2fcf9519a651b04ae54c967b9ab86ec
init version: fec3683
Security Options:
seccomp
Profile: default
Kernel Version: 4.9.125-linuxkit
Operating System: Docker for Mac
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 1.952GiB
Name: linuxkit-025000000001
ID: C4Q7:5M7E:RWTV:5EQQ:K4RB:ONNA:C5YT:LDTN:JWTZ:6FX4:CRY2:LD5H
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
File Descriptors: 26
Goroutines: 53
System Time: 2020-10-16T08:02:10.6325398Z
EventsListeners: 2
HTTP Proxy: gateway.docker.internal:3128
HTTPS Proxy: gateway.docker.internal:3129
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine

影像

1
2
3
4
5
6
7
8
9
10
 $ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker dind b3893e48cf28 4 weeks ago 232MB
ha3in1 0.1 68add1c30858 4 weeks ago 30.1MB
haproxy 2.2 8e202ffaa1a8 5 weeks ago 93.3MB
haproxy latest 8e202ffaa1a8 5 weeks ago 93.3MB
haproxy 2.2-alpine a633e308ec29 5 weeks ago 24.6MB
python 3-alpine f4df7f234e59 4 months ago 78.9MB
haproxy 2.1.4 6600fae04efd 5 months ago 92.4MB
alpine 3.11 f70734b6a266 5 months ago 5.61MB

影像也需要花不少時間才可以講清楚的概念。

top

1
2
3
 $ docker top cadvisor
UID PID PPID C STIME TTY TIME CMD
root 4251 4115 7 Oct13 ? 05:43:53 /usr/bin/cadvisor -logtostderr

容器中執行的程式清單。

未來

docker 可以說明的主題還有很多,以後再說明。