1. 程式人生 > >docker基礎命令之容器篇

docker基礎命令之容器篇

什麼是容器? 就是映象的執行時物件 如何建立容器 $ sudo docker create -it ubuntu:latest
7a0c26f96889de46b6276608501b7e8f99e4e31e42ec4a288a1f8e7644316637
$sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a0c26f96889 ubuntu:latest "/bin/bash" 6 seconds ago stoic_albattani 使用docker create命令新建的容器處於停止狀態,可以使用docker start命令來啟動它。 啟動容器
有兩種方式,一種是基於映象新建一個容器並啟動,另外一個是將在終止狀態(stopped)的容器重新啟動。所需要的命令主要為docker run,等價於先執行docker create命令,再執行docker start命令。 例如,下面的命令輸出一個“Hello World”,之後容器自動終止:
$ sudo docker run ubuntu /bin/echo 'Hello world'
Hello world
這跟在本地直接執行/bin/echo'hello world'幾乎感覺不出任何區別。
當利用docker run來建立並啟動容器時,Docker在後臺執行的標準操作包括:
  1. 檢查本地是否存在指定的映象,不存在就從公有倉庫下載。
  2. 利用映象建立並啟動一個容器。
  3. 分配一個檔案系統,並在只讀的映象層外面掛載一層可讀寫層。
  4. 從宿主主機配置的網橋介面中橋接一個虛擬介面到容器中去。
  5. 從地址池配置一個IP地址給容器。
  6. 執行使用者指定的應用程式。
  7. 執行完畢後容器被終止。
下面的命令則啟動一個bash終端,允許使用者進行互動:
$ sudo docker run -t -i ubuntu:14.04 /bin/bash
[email protected]:/#
其中, -t選項讓Docker分配一個偽終端(pseudo-tty)並繫結到容器的標準輸入上, -i則讓容器的標準輸入保持開啟
在互動模式下,使用者可以通過所建立的終端來輸入命令,例如:
[email protected]
:/# pwd
/
[email protected]:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[email protected]:/# ps
PID TTY TIME CMD
1 ? 00:00:00 bash
11 ? 00:00:00 ps
在容器內用ps命令檢視程序,可以看到,只運行了bash應用,並沒有執行其他不需要的程序。
使用者可以按Ctrl+d或輸入exit命令來退出容器:
[email protected]:/# exit
exit 守護態執行 更多的時候,需要讓Docker容器在後臺以守護態(Daemonized)形式執行。使用者可以通過新增-d引數來實現。
例如下面的命令會在後臺執行容器:
$ sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
ce554267d7a4c34eefc92c5517051dc37b918b588736d0823e4c846596b04d83
容器啟動後會返回一個唯一的ID,也可以通過docker ps命令來檢視容器資訊:
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce554267d7a4 ubuntu:latest "/bin/sh -c 'while t About a minute ago
Up About a minute determined_pik
要獲取容器的輸出資訊,可以通過docker logs命令:
$ sudo docker logs ce5
hello world
hello world
hello world
. . . 4.2 終止容器
可以使用docker stop來終止一個執行中的容器,命令的格式為docker stop[-t|--time[=10]]。它會首先向容器傳送SIGTERM訊號,等待一段時間後(預設為10秒),再發送SIGKILL訊號終止容器。
此外,當Docker容器中指定的應用終結時,容器也自動終止。例如對於上一節中只啟動了一個終端的容器,使用者通過exit命令或Ctrl+d來退出終端時,所建立的容器立刻終止。
另外,可以使用docker stop來終止一個執行中的容器:
$ sudo docker stop ce5
ce5
⚠️注意 docker kill命令會直接傳送SIGKILL訊號來強行終止容器。
可以使用docker ps-a-q命令看到處於終止狀態的容器的ID資訊。例如:
$ sudo docker ps -a -q
ce554267d7a4
d58050081fe3
e812617b41f6
處於終止狀態的容器,可以通過docker start命令來重新啟動:
$ sudo docker start ce5
ce5
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce554267d7a4 ubuntu:latest "/bin/sh -c 'while t 4 minutes ago
Up 5 seconds determined_pike
此外,docker restart命令會將一個執行態的容器終止,然後再重新啟動它: $ sudo docker restart ce5
ce5
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce554267d7a4 ubuntu:latest "/bin/sh -c 'while t 5 minutes ago
Up 14 seconds determined_pike 匯出容器
匯出容器是指匯出一個已經建立的容器到一個檔案,不管此時這個容器是否處於執行狀態,可以使用docker export命令,該命令格式為docker export CONTAINER。
檢視所有的容器如下所示:
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce554267d7a4 ubuntu:latest "/bin/sh -c 'while t" 3 minutes ago Exited (-1) 13 seconds ago determined_pike
d58050081fe3 ubuntu:latest "/bin/bash" About an hour ago Exited (0) About an hour ago berserk_brattain
e812617b41f6 ubuntu:latest "echo 'hello! I am h" 2 hours ago Exited (0) 3 minutes ago silly_leakey
分別匯出ce554267d7a4容器和e812617b41f6容器到test_for_run.tar檔案和test_for_stop.tar檔案: $ sudo docker export ce5 >test_for_run.tar
$ ls
test_for_run.tar
$ sudo docker export e81 >test_for_stop.tar
$ ls
test_for_run.tar test_for_stop.tar
可將這些檔案傳輸到其他機器上,在其他機器上通過匯入命令實現容器的遷移。
匯入容器
匯出的檔案又可以使用docker import命令匯入,成為映象,例如:
$ cat test_for_run.tar | sudo docker import - test/ubuntu:v1.0
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
test/ubuntu v1.0 9d37a6082e97 About a minute ago 171.3 MB
讀者可能會記得,筆者在之前章節曾介紹過使用docker load命令來匯入一個映象檔案。
實際上,既可以使用docker load命令來匯入映象儲存檔案到本地的映象庫,又可以使用docker import命令來匯入一個容器快照到本地映象庫。這兩者的區別在於容器快照檔案將丟棄所有的歷史記錄和元資料資訊(即僅儲存容器當時的快照狀態),而映象儲存檔案將儲存完整記錄,體積也要大。此外,從容器快照檔案匯入時可以重新指定標籤等元資料資訊。

相關推薦

docker基礎命令容器

什麼是容器? 就是映象的執行時物件 如何建立容器 $ sudo docker create -it ubuntu:latest 7a0c26f96889de46b6276608501b7e8f99e4e31e42ec4a288a1f8e7644316637 $sud

docker 基礎命令容器操作

docker ce-- 官方文件 docker官網下載地址 :https://docs.docker.com/install/ docker官方文件地址:https://docs.docker.com/get-started/ -----docker 設定映象加速器 阿里雲 &nbs

11、《每天5分鐘玩轉Docker容器技術》學習-Docker命令容器生命周期管理

hostman cloudman cloud openstack docker a) Docker create 命令docker create :創建一個新的容器但不啟動它docker create [OPTIONS] IMAGE [COMMAND] [ARG...]-a stdin:

12、《每天5分鐘玩轉Docker容器技術》學習-Docker命令容器操作命令

hostman cloudman cloud openstack docker a) Docker ps 命令docker ps : 列出容器docker ps [OPTIONS]-a :顯示所有的容器,包括未運行的。-f :根據條件過濾顯示的內容。--format :指定返回值的模板文件

docker 基礎命令操作 映象以及容器的基本操作演示

tomcat啟動後’,可以通過頁面訪問到預設頁面,可以更加直觀的顯示出來;我們就以tomcat為例,對映象,容易的基礎操作進行演示; 1.查詢映象命令 docker search tomcat , 執行後,出現一個列表,表頭的相關資訊,看名字,可以很容易的理解,分別是

Linux基礎命令grep

模式匹配 lin 大小寫 表達式 ignore col -c 分組 nbsp grep : 根據pattern(模式)搜索文本,並將符合模式的文本行顯示出來,並不會修改原文件。 用法: grep [options] ‘ pattern ‘ /file #

Linux基礎命令文件管理

linux文件管理 BASH Shell 對文件進行管理=============================================================創建、復制、刪除、移動、查看、編輯、壓縮、查找內容提要:Linux目錄結構文件定位 路徑文件管理一:Linux的目錄通常

docker基礎命令使用

基礎 虛擬 compose uno bsp 啟動 nbsp entos run docker-compose up -d docker exec -it 容器id /bin/bash docker save mynewimage > /tmp/xxxx.tardo

docker基礎命令

inspect spec push pan 進程 進入 dock 上傳 images docker virsion //查看版本docker images //查看鏡像docker search //搜索鏡像docker pull //下載鏡像docker pus

走進docker的世界入門

sha2 機器 dock 讓我 mini volume 混淆 運行 ice by zhouzhipeng from https://blog.zhouzhipeng.com/walk-in-docker-beginning.html本文可全文轉載,但需要保留原作者和出處。

Docker 基礎技術 Linux namespace 詳解

基本 mar $$ 裏的 sta 進程資源 進程間通信 開始 消息隊列 Docker 是“新瓶裝舊酒”的產物,依賴於 Linux 內核技術 chroot 、namespace 和 cgroup。本篇先來看 namespace 技術。 Docker 和虛擬機技術一樣,從操作系

docker基礎命令總結

.html busybox 文件 ges auth 文字 dock image web docker info 顯示docker詳細信息docker pull busybox 拉取鏡像docker pull nginxdocker images ngin

linux基礎命令企業面試題

con test 不包含 模擬 cto for oca 顏色 mtime 1.如何過濾出已知當前目錄下linzhongniao中的所有一級目錄(提示:不包含linzhongniao目錄下面目錄的子目錄及隱藏目錄,即只能是一級目錄)創建模擬數據: [root@linzhong

Docker 基礎命令

    本文件中使用“/#”表示正處於容器的互動式命令列中“#”表示處於宿主機命令列中   #Docker run –I –t Ubuntu /bin/bash  //建立並啟動容器,隨機分配容器名稱,如果本地沒有ubuntu映象會從倉庫下載 /# hostn

Linux基礎命令使用wget下載任意版本Tomcat

找到指定的下載地址 歷史版本: https://archive.apache.org/dist/tomcat/ 找到自己需要的版本: https://archive.apache.org/dist/tomcat/tomcat-8/v8.0.23/bin/ 官網下載

Linux基礎命令使用wget下載最新版JDK

找到指定的下載地址 登入Oracle https://login.oracle.com/oaam_server/login.do 選擇java 找到適合自己版本的jdk,因為我本地用的181,官網最新版本是191,所以,我需要181如圖 在Downloads 頁面

Day004_Linux基礎命令特殊符號與正則表示式萬用字元

特殊符號: . 點 cd . 表示當前目錄 ' '' 單引號,所見即所得 原封不動輸出 " ""雙引號,裡面的特殊符號會被解析執行   `` ====$( ) 先執行() 裡的命令,把結果留下 > 重定向符號  先清空檔案內容, 再追加檔案最後一行 &

docker基礎知識掛載本地目錄

docker可以支援把一個宿主機上的目錄掛載到映象裡。docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash通過-v引數,冒號前為宿主機目錄,必須為絕對路徑,冒號後為映象內掛載的路徑。現在映象內就可以共享宿主機裡的檔案了

Linux基礎命令sed用法

sed :流編輯器     1.sed:Stream Editor   行處理工具,流編輯器  對檔案內容逐行進行處理呼叫操作並顯示到STDOUT       &nbs

redis基礎命令String字串型別

連線redis見上一篇文章連線redis redis作為快取可以在記憶體中儲存五種資料型別,但是最底層還是String    五種資料型別:       String字串型別       hash面向物件的儲存方式       list連結串列       se