1. 程式人生 > >Docker基礎教程——容器

Docker基礎教程——容器

    容器是Docker的另一個核心概念。

    一般來說,映象的一個執行例項就是容器,容器提供了一個可寫的檔案層。

    本文同上一篇介紹映象一樣的結構,逐步介紹容器。

    1、建立容器

    Docker的容器非常輕量級,建立和刪除都很容易。

    1.1、新建容器

    新建容器使用docker create命令:

docker create -it ubuntu:latest
    此時建立好的容器處於停止狀態,使用docker pa -a可以檢視容器列表。

    停止的容器可以使用docker start命令啟動。

    1.2、啟動容器

    啟動容器有兩種方式:

    1、基於映象新建容器並啟動

    2、啟動終止狀態的容器

    主要涉及的命令為docker run,等價於先執行docker create,然後執行docker start命令。

    比如:

docker run ubuntu /bin/bash 'hello word'
    會啟動容器並輸出hello word然後自動終止。

    利用docker run建立並啟動容器時,docker在後臺執行的標準操作包括:

  • 檢查本地是否存在指定的映象,不存在就從倉庫下載
  • 利用映象建立並啟動一個容器
  • 分配一個檔案系統,並在只讀的映象層外面掛載一層可讀寫層
  • 從宿主主機配置的網橋介面中橋接一個虛擬介面道容器中去。
  • 從地址池中分配一個IP給容器
  • 執行使用者指定的應用程式
  • 執行完畢後容器被終止
    下面啟動一個bash終端與使用者互動:
docker run -t -i ubuntu /bin/bash
    -t:讓docker分配一個偽終端並繫結到容器的標準輸入上。

    -i:讓容器的標準輸入保持開啟。

    互動模式下使用者可以通過所建立的中斷來輸入命令,這和一般linux的中斷使用起來是一樣的。

    輸入exit或者按ctrl+d可以退出容器。

    對於所建立的bash容器,當使用exit命令退出後,docker容器也會自動終止,因為對於docker來說,沒有執行中的應用後,容器也沒有必要繼續運行了。

    1.3、守護態執行

    可以通過-d引數讓docker容器在後臺以守護態(Daemonized)形式執行。

    比如:

docker run -d ubuntu /bin/bash -c "while true;do each hello word; sleep 1 done"
    使用docker ps命令檢視容器資訊。

    使用docker logs獲取容器的輸出資訊。

    2、終止容器

    終止一個執行中的命令是docker stop,格式:

docker stop [-t|--time[=10]]
    這時會首先向容器傳送SIGTERM訊號,等待一段時間後(預設為10s),再次傳送SIGNKILL訊號終止容器。

    同樣的,像剛剛前面說的一樣,當Docker容器中指定的應用終結時,容器頁自動終止。

    可以通過docker ps命令檢視:

docker ps -a -q
    這裡引數表示檢視所有退出的容器。

    容器(被)終止後,可以通過docker start重新啟動。

    而docker restart命令,頁如我們所料,會首先終止一個執行態的容器,然後再重新啟動它。

    3、進入容器

    啟動容器時若加上引數-d會進入後臺,無法直接看到容器中的內容。

    如果想進入容器,有多種方法:docker attach命令、docker exec命令以及nsenter工具等。

    3.1、attach命令

    這是Docker自帶的命令。

    如果我們有如下執行的容器:

docker run -idt ubuntu
    可以這樣進入:
docker attach 容器Name
    但是,當多個視窗(終端)同時attach到一個容器時,所有視窗都會同步顯示,當某個視窗因為命令等阻塞後,其他視窗也會被阻塞而不能執行操作。

    3.2、exec命令

    exec是docker中1.3版本開始提供的工具,可以直接在容器中執行命令。

    還是剛剛那個執行的容器的例子,如果想要進入並啟動一個bash:

docker exec -ti 容器ID /bin/bash

    3.3、nsenter工具

    nsenter工具包含在util-linux 2.23版本及以後,如果系統中的對應包版本較低,可以如下安裝新版:

。。。。。。

    4、刪除容器

    刪除容器使用docker rm命令,格式為:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
    支援的選項:
  • -f、--force=false:因為執行中的容器預設是不能被刪除的,這個引數就是強行終止並刪除一個執行中的容器。
  • -l、--link=false:刪除容器的連線,但保留容器。
  • -v、--volumes=false:刪除容器掛在的資料卷。
    例如,刪除終止狀態的容器:
docker rm 容器ID
    刪除執行中的容器:
docker rm -f 容器ID

    5、匯入匯出容器

    跟映象一樣,容器也可以匯出為一個檔案和從檔案中匯入容器。

    5.1、匯出容器到檔案

    匯出容器是將一個以及從映象建立為容器的例項匯出到一個檔案,而不管此時這個容器是否處於執行狀態。

    命令為dicker export,格式:

docker export CONTAINER
    一個匯出的示例:
docker export 容器ID >匯出後的檔名.tar
    然後可以將檔案傳送到其他地方以實現容器的遷移。

    5.2、從檔案匯入容器

    對於剛剛匯出的容器,對應使用docker import命令匯入,然後成為映象
cat 檔名.tar | docker import - 映象名字:TAG
    比如:
cat test.tar | docker import - test/ubuntu:v0.0.1
    映象的匯入使用的是docker load,下面是兩者的區別:
  • 容器快照檔案將丟失所有的歷史記錄和元資料資訊(僅儲存容器的快照狀態),所以從容器快照匯入時一般會重新指定標籤等元資料資訊。
  •  映象檔案儲存完整記錄,所以體積頁更大。

小結

    容器是直接提供應用服務的元件,操作都非常輕量級,是docker實現快速的啟停和高效服務效能的基礎。

相關推薦

Docker基礎教程——容器

    容器是Docker的另一個核心概念。     一般來說,映象的一個執行例項就是容器,容器提供了一個可寫的檔案層。     本文同上一篇介紹映象一樣的結構,逐步介紹容器。     1、建立容器     Docker的容器非常輕量級,建立和刪除都很容易。     1.

docker 基礎教程-入門:(三)--簡單製作映象

前言            一般情況下,我們中直接使用docker官網的庫,就可以找到我們日常開發中需要的映象,比如:ubuntu、tomcat、apache、nginx、php、mysql、redi

Docker基礎教程——介紹及核心概念

    1、介紹     額,介紹我就拉一段百科吧。     Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面。  

Docker基礎教程——Dockerfile

    Dockerfile是一個文字格式的配置檔案,我們可以使用Dockerfile檔案快速建立自定義的映象。     Dockerfile支援的眾多指令是本文主要要介紹的內容,之後會給出一個基本示例。     一般而言,Docker分為4部分:基礎映象資訊、維護者資訊

Docker基礎教程(1)安裝

1. 安裝 本文參考了官網(可能需要科學上網)。 本文安裝的docker版本是社群版(CE),如需要企業版請自行購買。 1.1 解除安裝舊版本 如果你之前安裝過docker(被稱為docker或者docker-engine)的話,你首先需要解除

Docker基礎-容器操作

days time create 執行 4.0 spa repos contain 官方 1、創建容器 1.新建容器   可以使用docker create命令新建一個容器。 [root@linux-node1 ~]# docker create -it ubuntu:l

Docker深入淺出系列教程——容器管理【附加視頻】

img 一個 世界 das 運行時 允許 一起 檢查 proxy 我是架構師張飛洪,鉆進浩瀚代碼,十年有余,人不堪其累,吾不改其樂。如果你和我的看法不一樣,請關註我的頭條號,我們一起奇聞共賞,疑義相析。 接下來來講解Docker三大組件之一的容器,如果說鏡像是靜態

Docker系列教程之三】Docker容器是如何工作的

在上一篇的文章中,我給大家主要介紹了一下 Docker 環境的搭建,簡單的講解了一下 Docker 架構,以及用 Docker 命令簡單演示了一下如何拉去一個 images 映象。本篇我們將剖析一下 Docker&nbs

docker基礎容器中bash: sudo: command not found問題解決

問題 我們在建立基礎容器之後,進入容器,使用sudo許可權進行下載的時候,但是會出現: 解決 需要更新一遍軟體源,選擇適當的debian映象,這裡以163的映象為例: wget http://mirrors.163.com/.help/sources.list.squeez

Docker基礎篇3:容器管理

1、建立容器常用選項 1.1、建立容器常用指令 【建立容器常用指令】 【建立容器是限制資源】   1.2、建立容器應用 【執行一個容器】 [[email protected]_190_147_centos ~]# docker container

docker基礎學習(進入與退出docker容器--圖文結合)

今天開始學習docker容器技術。Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何介面,更重要的是容器效能開銷極低。所以容器技術是很重要的一門技術。 首先我們要在

Docker基礎容器的縮減方法

系統環境: Centos6.5_x86_64 核心:4.11.3-1.el6.elrepo.x86_64   升級核心主要是方便安裝docker,之前的環境被弄壞了; docker版本:version 1.7.1  效果:基礎的系統映象為109.8MB 具體的

Docker基礎 5.Docker容器資料卷

Docker基礎 @Author:hanguixian @Email:[email protected] Docker文件:https://docs.docker.com/ Dcker中文文件:https://docs.docker-cn.com/ 五.

Docker深入淺出系列教程——容器管理

我是架構師張飛洪,鑽進浩瀚程式碼,十年有餘,人不堪其累,吾不改其樂。如果你和我的看法不一樣,請關注我的頭條號,我們一起奇聞共賞,疑義相析。 接下來來講解Docker三大元件之一的容器,如果說映象是靜態的只讀檔案,那麼容器就是帶有執行時需要的可寫檔案層。也可以這樣理解,映象是物件的模板——類,容器是類

docker基礎容器中bash: vi: command not found問題解決

問題 我們在建立基礎容器之後,進入容器,進行編輯配置檔案的時候,需要使用vim或者vi命令,但是會出現: 這是因為vim沒有安裝。 解決 使用如下命令安裝: apt-get update apt-get install vim 然後就可以了。

docker 基礎命令與容器操作

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

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

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

容器自動化(一):docker基礎(上)

一,Docker簡介,功能特性與應用場景 1.1 Docker簡介 Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後釋出到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。 一個完整的Docker有以

Docker基礎學習(八)-Docker容器的跨主機連線

Docker網橋實現跨主機容器連線 docker網橋實現跨主機連線的網路拓撲圖如下: 在同一個docker主機中,docker容器通過虛擬網橋連線(docker0),如果將連線容器的網橋docker0也橋接到宿主機提供的網絡卡上,將docker0分配的IP地址和宿主機

Docker基礎學習(三)-Docker容器

一,容器的基本操作 1,啟動容器: $ docker run IMAGE[COMMAND] [AEG...] IMAGE:指定容器執行的映象 COMMAND:指定執行的命令 ARG:執行的引數 例如: $ docker run ubuntu echo "Hell