Docker使用 - 容器

查看容器

命令:docker  ps  [options]linux

options有:docker

-a:查看全部容器,包含不在運行中的(不帶-a參數,是隻顯示運行中的容器)bash

-q:只顯示容器ID服務器

-s:多加一列來顯示總文件大小網絡

-l:顯示最近建立的容器(docker  ps  -l)app

-n:顯示最近建立的n個容器(docker  ps  -n  3, 顯示最近建立的3個容器)ui

--filter:根據條件過濾(不經常使用,容器數量沒大到那種程度須要用過濾器才能找到。)spa

 

啓動容器 

方式一:從一個鏡像中建立一個容器的同時並啓動

docker  run  [options]  鏡像名或鏡像ID  [command] [agrs]rest

options常有:

  • -d:讓docker在後臺運行而不是直接把執行命令的結果輸出在當前宿主機器下。
  • -t:讓docker分配一個僞終端(pseudo-tty)並綁定到容器的標準輸入上(配合-i使用)
  • -i:讓容器的標準輸入保持打開(配合-t使用)
  • --name:爲容器命名
  • --restart:是否跟隨宿主機開機啓動(默認爲「no」,能夠有「always」)
  • --privilleged:是否讓容器擁有root權限(可接 false 或者 true)
  • -v:建立數據卷( -v  本機目錄1:容器目錄1  -v  本機容器2:容器目錄2)
  • -p:綁定端口,將本機端口映射到容器端口,-p  本機端口:容器端口,由於容器內監聽的端口,本機並不知道,因此從外界來訪問本機的那個端口是訪問不到的,因此要作映射

數據卷

數據卷是一種技術,而不是某一個東西。日誌

簡單理解就是,將本機的某一個目錄映射到某一個或者多個容器的某目錄。這樣在本機修改代碼,就能夠直接用容器跑代碼

什麼是數據卷

數據卷 是一個可供一個或者多個容器使用的特殊目錄,它繞過UFS,能夠提供不少有用的特性:

  1. 數據卷 能夠在容器直接共享和重用
  2. 對 數據卷 的修改會立馬生效
  3. 對 數據卷 的更新,不會影響鏡像
  4. 數據卷 會默認一直存在,即便容器被刪除

注意:數據卷 的使用,相似linux下對目錄或者文件進行mount,鏡像中的被指定爲掛載點的目錄中的文件會隱藏掉,能顯示看的是掛着的 數據卷。

數據卷的用法

用鏡像來建立一個容器的同時,指定「-v」參數來指定目錄映射

準備:受權本地磁盤

命令:docker  run  -v  本地目錄:容器目錄  鏡像名稱或鏡像ID

若是要同時掛載多個目錄,能夠執行多個 -v 便可,如:

docker  run  -v  本地目錄1:容器目錄1  -v  本地目錄2:容器目錄2 鏡像名稱或鏡像ID 

方式二:啓動一個已經存在的容器

命令:docker  start  容器ID或容器名

 

更新容器

一個容器已經經過鏡像建立成功了,可是當初建立的時候,因爲考慮不周,忘了一些參數(好比開機啓動),這時候能夠經過 update 命令來更新容器。

命令:docker  update  [options]  容器名或容器ID

options有:

--blkio-weight(uint16): Block IO (relative weight), between 10 and 1000, or 0 to disable (default 0)
--cpu-period(int): Limit CPU CFS (Completely Fair Scheduler) period
--cpu-quota(int): Limit CPU CFS (Completely Fair Scheduler) quota
--cpu-rt-period(int): Limit the CPU real-time period in microseconds
--cpu-rt-runtime(int): Limit the CPU real-time runtime in microseconds
 --cpu-shares(int): CPU shares (relative weight)
--cpus(decimal): Number of CPUs
--cpuset-cpus(string): CPUs in which to allow execution (0-3, 0,1)
--cpuset-mems(string): MEMs in which to allow execution (0-3, 0,1)
--kernel-memory(bytes): Kernel memory limit
--memory bytes Memory limit
--memory-reservation(bytes): Memory soft limit
--memory-swap(bytes): Swap limit equal to memory plus swap: '-1' to enable unlimited swap
--restart(string): Restart policy to apply when a container exits

 

中止容器

命令:docker  stop  [options] 容器名或者容器ID

options有:

  -t:殺死容器進程前,給予容器用來中止的時間(默認是10秒)

 

重啓容器

命令:docker  restart  [options]  容器名或容器ID

options有:

  -t:殺死容器進程前,給予容器用來中止的時間(默認是10秒)

即便容器是關閉狀態,也能夠重啓,這點不像supervisor,supervisor的進程是關閉狀態的話,則沒法restart,只能start

 

刪除容器

命令:docker  rm  [options]  容器名或容器ID

options有:

  -f:強制刪除容器(默認狀況下,只有是中止狀態的容器才能夠刪除,可是帶上-f後,能夠直接刪除在運行中的容器)

  -l:移除容器間的網絡連接,而非容器自己(不懂,好像也用的少)

  -v:刪除與容器關聯的卷(這個仍是能夠有的)

 

批量刪除容器

命令:docker  rm  -f  $(docker  ps  -a  -q)
不是什麼新的知識點

 

在容器外執行容器裏的命令

命令:docker  exec  [options]  容器名或容器ID  [command]

通常是:docker  exec  -it  容器名或容器ID  /bin/bash ,用於進入容器,是否真的能在外面作到其餘的操做,暫未可知,我是驗證了:docker  exec  容器名  echo "hello world">test.txt ,未成功

 

查看容器日誌信息

命令:docker  logs  容器名或容器ID

 

主機和容器之間的內容拷貝(不建議,容器只作運算,最好不要往裏面拷文件,能夠作成數據卷映射)

主機拷貝到容器

命令:docker  cp  主機文件  容器ID或容器名:容器目錄

有點相似本機與遠程服務器之間的內容拷貝:scp 本機文件  遠程服務器:目錄

容器拷貝到主機

命令:docker  cp  容器ID或容器名:目錄/文件  本機目錄

相關文章
相關標籤/搜索