容器Docker學習系列十~高級操作

這一篇算是我們Docker容器命令的最后一篇文章了,基礎學習好了我們再去學習Docker中更高級的特性,用好容器,讓我們更加方便使用在開發(fā)上提高軟件的性能。

ps

這個命令是我們經常使用來展示容器信息。

docker ps [OPTIONS]

OPTIONS 可選參數:

  • -a :顯示所有的容器,包括未運行的。
  • -f :根據條件過濾顯示的內容。
  • --format :指定返回值的模板文件。
  • -l :顯示最近創(chuàng)建的容器。
  • -n :列出最近創(chuàng)建的n個容器。
  • --no-trunc :不截斷輸出。
  • -q :靜默模式,只顯示容器編號。
  • -s :顯示總的文件大小。
    我經常用的是 -a 或者不指定參數,也可以使用最近創(chuàng)建的幾個容器 -n。
    列子如下:
docker@ubuntu:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc8e73a8b48b        mongo               "docker-entrypoint.s…"   5 seconds ago       Up 3 seconds        27017/tcp           test-mongo
04d57e7380bf        redis               "docker-entrypoint.s…"   22 hours ago        Up 2 hours          6379/tcp            test-redis

docker@ubuntu:~$ docker ps -a   包含創(chuàng)建好 沒有啟用的
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc8e73a8b48b        mongo               "docker-entrypoint.s…"   21 seconds ago      Up 19 seconds       27017/tcp           test-mongo
f93712639869        redis               "docker-entrypoint.s…"   22 hours ago        Created                                 test-redis1
04d57e7380bf        redis               "docker-entrypoint.s…"   22 hours ago        Up 2 hours          6379/tcp            test-redis

docker@ubuntu:~$ docker ps -s
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS               NAMES               SIZE
fc8e73a8b48b        mongo               "docker-entrypoint.s…"   About a minute ago   Up About a minute   27017/tcp           test-mongo          0B (virtual 380MB)
04d57e7380bf        redis               "docker-entrypoint.s…"   22 hours ago         Up 2 hours          6379/tcp            test-redis          0B (virtual 83.4MB)

inspect

用來獲取容器或者鏡像的元數據

docker inspect [OPTIONS] NAME

OPTIONS 說明:

  • -f : 指定返回值的模板文件
  • -s: 顯示總的文件大小
  • --type: 為指定類型返回JSON數據
    列子: 內容太多,粘貼一部分,大家自己嘗試的時候可以多看看。獲取容器信息 有很多的。也可以利用-f指定返回內容
docker@ubuntu:~$ docker inspect test-redis 
[
    {
        "Id": "04d57e7380bf130ecaeca455340a9f18e3c40679c299a5f9b12b8842709e4305",
        "Created": "2018-08-31T15:44:24.634464326Z",
        "Path": "docker-entrypoint.sh",
        "Args": [
            "redis-server"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 2828,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-01T11:15:06.016924571Z",
            "FinishedAt": "2018-09-01T04:11:15.077538199-07:00"
        },
        "Image": "sha256:4e8db158f18dc71307f95260e532df39a9b604b51d4e697468e82845c50cfe28",
        "ResolvConfPath": "/var/lib/docker/containers/04d57e7380bf130ecaeca455340a9f18e3c40679c299a5f9b12b8842709e4305/resolv.conf",


docker@ubuntu:~$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test-redis 
172.17.0.2

top

查看容器中運行的進程信息,跟linux中的top類似, 并且也支持ps命令參數。

docker top [OPTIONS] 容器 [ps OPTIONS]

例子:

docker@ubuntu:~$ docker top test-redis 
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
999                 2828                2806                0                   04:15               pts/0               00:00:14            redis-server *:6379

attach

用來鏈接到正在運行中的容器

docker attach [OPTIONS] name(容器名字)

OPTIONS:

  • --sig-proxy=false
    例子:
docker@ubuntu:~$ docker attach test-redis 
^C1:signal-handler (1535809783) Received SIGINT scheduling shutdown...
1:M 01 Sep 13:49:44.031 # User requested shutdown...
1:M 01 Sep 13:49:44.033 * Saving the final RDB snapshot before exiting.
1:M 01 Sep 13:49:44.041 * DB saved on disk
1:M 01 Sep 13:49:44.042 # Redis is now ready to exit, bye bye...
docker@ubuntu:~$ docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
fc8e73a8b48b        mongo               "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       27017/tcp           test-mongo
docker@ubuntu:~$ docker attach --sig-proxy=false test-redis 
You cannot attach to a stopped container, start it first
docker@ubuntu:~$ docker start test-redis 
test-redis
docker@ubuntu:~$ docker attach --sig-proxy=false test-redis 

events

從容器中獲取實時事件

docker events [OPTIONS]
OPTIONS:

  • -f:根據給定的條件進行過濾。
  • --since:根據指定的時間戳顯示事件
    例子:
docker@ubuntu:~$ docker events --since="1525810182"
2018-09-01T04:15:04.930155641-07:00 network connect 702b1e16448dbb8fc6e0baf8d6a66d3c6c4c214ce2cf0e4281ab5d8826872099 (container=04d57e7380bf130ecaeca455340a9f18e3c40679c299a5f9b12b8842709e4305, name=bridge, type=bridge)
2018-09-01T04:15:05.020352568-07:00 volume mount 05911ac2f739e8d85206f0170cf26f066372a4e49b7a964202ff56dbe7325c6d (container=04d57e7380bf130ecaeca455340a9f18e3c40679c299a5f9b12b8842709e4305, destination=/data, driver=local, propagation=, read/write=true)
2018-09-01T04:15:06.088232843-07:00 container start 04d57e7380bf130ecaeca455340a9f18e3c40679c299a5f9b12b8842709e4305 (image=redis, name=test-redis)
2018-09-01T06:38:19.267367732-07:00 container create fc8e73a8b48be47f6fc59607506d4e78f0f8fe6a09a6f8c2b030c6cf5fc23264 (image=mongo, name=test-mongo)
2018-09-01T06:38:19.345489171-07:00 network connect 702b1e16448dbb8fc6e0baf8d6a66d3c6c4c214ce2cf0e4281ab5d8826872099 (container=fc8e73a8b48be47f6fc59607506d4e78f0f8fe6a09a6f8c2b030c6cf5fc23264, name=bridge, type=bridge)
2018-09-01T06:38:19.424505893-07:00 volume mount 3cbb0b38feb2d121bf065076e7354d59804ce7df091158addf3edf837d406a44 (container=fc8e73a8b48be47f6fc59607506d4e78f0f8fe6a09a6f8c2b030c6cf5fc23264, destination=/data/configdb, driver=local, propagation=, read/write=true)
2018-09-01T06:38:19.424512355-07:00 volume mount 4509ec37637d27647f8a98a1678318200bf772ae294bbc341b765fa606b20633 (container=fc8e73a8b48be47f6fc59607506d4e78f0f8fe6a09a6f8c2b030c6cf5fc23264, destination=/data/db, driver=local, propagation=, read/write=true)

logs

查看容器的日志

docker logs [OPTIONS] name(容器名字)

OPTIONS:

  • -f:跟蹤日志輸出
  • --since:顯示某個開始時間的日志
  • -t :顯示時間戳
  • --tail: 列出需要的最新N條容器日志

例子:使用的時候最好帶上參數這樣,能顯示出需要的日志,篩選掉不必要的日志內容

docker@ubuntu:~$ docker logs test-redis 
1:C 31 Aug 15:44:25.125 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 31 Aug 15:44:25.125 # Redis version=4.0.11, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 31 Aug 15:44:25.125 # Warning: no config file specified, using the default config. In order to specify a config file use redis-server /path/to/redis.conf
                _._                                                  
           _.-``__ ''-._                                             
      _.-``    `.  `_.  ''-._           Redis 4.0.11 (00000000/0) 64 bit
  .-`` .-```.  ```\/    _.,_ ''-._                                   
 (    '      ,       .-`  | `,    )     Running in standalone mode
 |`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379
 |    `-._   `._    /     _.-'    |     PID: 1
  `-._    `-._  `-./  _.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |           http://redis.io        
  `-._    `-._`-.__.-'_.-'    _.-'                                   
 |`-._`-._    `-.__.-'    _.-'_.-'|                                  
 |    `-._`-._        _.-'_.-'    |                             

export

將文件系統(tǒng)作為一個tar歸檔文件導出到STDOUT.我們使用導出的時候,相應的也會用到導入

docker export [OPTIONS] 容器id

OPTIONS:

  • -o 將輸入內容寫到文件

例子:

docker@ubuntu:~$ docker export -o test-redis.tar test-redis 
docker@ubuntu:~$ ls 
Desktop    Downloads         mongo.tar  Pictures  Templates       Videos
Documents  examples.desktop  Music      Public    test-redis.tar

port

列出指定的容器的端口映射信息,或者查找面向公眾的端口

docke port [OPTIONS] 容器名字或者id也可

例子:

docker@ubuntu:~$ docker port test-redis
6379/tcp -> 0.0.0.0:6379

wait

阻塞運行直到容器停止,然后打印出退出的代碼。

docker wait 名字 或者容器id

例子:

docker wait test-redis
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 《Docker從入門到實踐》閱讀筆記 原書地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo閱讀 11,668評論 1 39
  • 額外補充 查看容器運行狀態(tài) 進入容器內進行命令行操作 在容器mynginx中開啟一個交互模式的終端 容器生命周期管...
    tianmac閱讀 4,658評論 1 2
  • 轉載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,764評論 0 120
  • 在這聲明一下,這章跟之前的沒有關系哈,新坑。 “狄大人,什么時候給我發(fā)工資啊,你都欠了我好幾個月的了?!痹歼吿幚?..
    老婆愛吃蘋果派閱讀 1,196評論 3 7
  • 今天,我又去學鋼琴了,我走進琴室,老師讓我坐下彈上周布置的作業(yè),我很流利的彈完了。老師表揚我彈的很好! ...
    硯香閱讀 254評論 0 10

友情鏈接更多精彩內容