Docker按部就班

上一篇大體介紹了什麼是Docker和其安裝(以Ubuntu爲例)。這篇來講說,Docker的基本操做。html

非Root用戶受權

上一篇的演示中使用的都是默認登陸了Root權限後的操做,而實際的開發運維狀況下,咱們通常極少使用Root權限,因此Docker提供了一個權限組,咱們只須要把當前用戶加入到Docker用戶組中。docker

一共須要三條指令:shell

$ sudo groupadd docker
$ sudo gpasswd -a ${USER} docker
$ sudo service docker restart
複製代碼

三條指令的意思分別是:ubuntu

  • 添加docker用戶組,通常會默認建立,提示已存在
  • 將用戶添加到docker用戶組
  • 重啓docker服務

示例以下bash

user

注意 重啓服務後,仍需推出當前用戶,從新登錄使用戶權限生效!運維

容器的基本操做

本內容僅提供經常使用操做命令及參數,並不是完整內容,具體能夠參考官方文檔或三方手冊補全。ui

推薦參考菜鳥教程(RUNOOB.COM)的-Docker命令大全spa

啓動容器

$ docker run IMAGE [COMMAND] [AGR…]
複製代碼
  • run 在新容器中執行的命令
  • IMAGE 啓動容器所使用的操做系統的鏡像
  • [COMMAND] 容器啓動後的運行命令
  • [AGR] 命令參數

示例:操作系統

一個執行單一指令的基本容器3d

$ docker run ubuntu echo 'Hello world!'
複製代碼

hello

啓動交互式容器

$ docker run -i -t IMAGE /bin/bash
複製代碼
  • -i 開啓標準輸入(交互) --interactive = true | false 默認是false
  • -t 分配僞tty終端 --tty = true | false 默認是false

示例:

$ docker run -i -t ubuntu /bin/bash
複製代碼

itrun

docker建立了一個容許使用bash交互的系統,當執行exit時推出,釋放資源。

查看容器

PS 列舉

$ docker ps [OPTIONS]
複製代碼
  • -a 查看全部容器
  • -l 查看最近建立的容器
  • 無參 正在運行的容器

ps

inspect 查看容器信息

docker inspect NAME|ID [NAME|ID...]
複製代碼

參數爲 ps列舉出的ID /NAME

執行後列舉出容器的元信息,此處略過。

順帶一提:

前文中run指令中未提到,給容器指定名稱的方法:

$ docker run --name=自定義名 -i -t IMAGE /bin/bash
複製代碼

從新啓動中止的容器

不少時候並不須要不停的建立容器,而是能夠將已經中止的容器重啓來使用。

$ docker start [-i] 容器名
複製代碼
  • -i 交互模式

示例以下:

start

刪除中止的容器

$ docker rm 容器名
複製代碼

示例以下:

rm

守護式容器

區別於交互式容器,守護式容器有以下特色:

  • 能長期運行
  • 沒有交互式會話
  • 適合運行應用程序和服務

以守護形式運行容器

推出交互模式,後臺運行:

使用快捷鍵 Ctrl+P + Ctrl+Q

退出交互

退出交互後,容器仍在運行,使用docker ps查看

直到執行exit,容器被釋放

附加到運行中的容器

$ docker attach 容器名
複製代碼

執行指令後從新進入容器交互界面,圖略

建立守護式容器

直接使用run來建立交互式容器

$ docker run -d IMAGE [COMMAND] [AGR…]
複製代碼

區別於默認模式,-d參數表面啓動後臺駐留

示例:(這裏經過編寫一個循環shell來驗證)

$ docker run --name dc_test -d ubuntu /bin/sh -c "while true; do echo 'hello world'; sleep 1; done"
複製代碼

執行後返回ID,截圖略

查看容器運行狀況

$ docker logs [-f] [-t] [--tail] 容器名
複製代碼

參數:

  • -f 保持跟蹤日誌變化並返回結果 --follows = true | false 默認爲false
  • -t 返回結果加上時間戳 --timestamps = true | false 默認爲false
  • --tail = all 返回結尾處制定數量的日誌 不指定則返回全部

示例:

$ docker logs dc_test --tail 3 -t -f
複製代碼

之前面建立的dc_test容器爲例,先顯示三行,並保持跟蹤且顯示時間戳:

log

注意Ctrl+C退出(Linux下絕大部分操做通用嘛)

查看進程內容

查看運行中容器的進程:

$ docker top 容器名
複製代碼

top

在運行的容器中啓動新的進程

Docker的理念是,在一個容器中使用一個服務,但仍然提供了在一個容器中運行多個進程的方法,從而實現對運行中容器進行維護,監控等操做。

$ docker exec [-d] [-i] [-t] 容器名 [COMMAND] [AGR…]
複製代碼

參數-d/-i/-t 和前面run相同

$ docker exec -i -t dc_test /bin/bash
複製代碼

之前面建立的dc_test容器爲例,爲其添加一個bash終端進程,並使用top指令查看

exec

中止守護式容器

stop

$ docker stop 容器名
複製代碼

發送中止信號給容器,等待容器的中止。

kill

$ docker kill 容器名
複製代碼

直接中止容器。

相關文章
相關標籤/搜索