亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 服務器 > Web服務器 > 正文

CentOS系統下docker的安裝配置及使用介紹

2024-09-01 13:48:12
字體:
來源:轉載
供稿:網友

1 docker簡介

Docker 提供了一個可以運行你的應用程序的封套(envelope),或者說容器。它原本是dotCloud 啟動的一個業余項目,并在前些時候開源了。它吸引了大量的關注和討論,導致 dotCloud 把它重命名到 DockerInc。它最初是用 Go 語言編寫的,它就相當于是加在 LXC(LinuX Containers,linux容器)上的管道,允許開發者在更高層次的概念上工作。
    Docker 擴展了 Linux 容器(Linux Containers),或著說LXC,通過一個高層次的 API 為進程單獨提供了一個輕量級的虛擬環境。Docker 利用了 LXC, cgroups 和 Linux自己的內核。和傳統的虛擬機不同的是,一個 Docker容器并不包含一個單獨的操作系統,而是基于已有的基礎設施中操作系統提供的功能來運行的。

    Docker類似虛擬機的概念,但是與虛擬化技術的不同點在于下面幾點:

   1.虛擬化技術依賴物理CPU和內存,是硬件級別的;而docker構建在操作系統上,利用操作系統的containerization技術,所以docker甚至可以在虛擬機上運行。


   2.虛擬化系統一般都是指操作系統鏡像,比較復雜,稱為“系統”;而docker開源而且輕量,稱為“容器”,單個容器適合部署少量應用,比如部署一個redis、一個memcached。


   3.傳統的虛擬化技術使用快照來保存狀態;而docker在保存狀態上不僅更為輕便和低成本,而且引入了類似源代碼管理機制,將容器的快照歷史版本一一記錄,切換成本很低。


   4.傳統的虛擬化技術在構建系統的時候較為復雜,需要大量的人力;而docker可以通過Dockfile來構建整個容器,重啟和構建速度很快。更重要的是Dockfile可以手動編寫,這樣應用程序開發人員可以通過發布Dockfile來指導系統環境和依賴,這樣對于持續交付十分有利。


   5.Dockerfile可以基于已經構建好的容器鏡像,創建新容器。Dockerfile可以通過社區分享和下載,有利于該技術的推廣。


    Docker會像一個可移植的容器引擎那樣工作。它把應用程序及所有程序的依賴環境打包到一個虛擬容器中,這個虛擬容器可以運行在任何一種 Linux服務器上。這大大地提高了程序運行的靈活性和可移植性,無論需不需要許可、是在公共云還是私密云、是不是裸機環境等等。


   Docker也是一個云計算平臺,它利用Linux的LXC、AUFU、Go語言、cgroup實現了資源的獨立,可以很輕松的實現文件、資源、網絡等隔離,其最終的目標是實現類似PaaS平臺的應用隔離。
    Docker 由下面這些組成:
    1. Docker 服務器守護程序(server daemon),用于管理所有的容器。
    2. Docker 命令行客戶端,用于控制服務器守護程序。
    3. Docker 鏡像:查找和瀏覽 docker 容器鏡像。

2 docker特性

    文件系統隔離:每個進程容器運行在完全獨立的根文件系統里。
    資源隔離:可以使用cgroup為每個進程容器分配不同的系統資源,例如CPU和內存。
    網絡隔離:每個進程容器運行在自己的網絡命名空間里,擁有自己的虛擬接口和IP地址。
    寫時復制:采用寫時復制方式創建根文件系統,這讓部署變得極其快捷,并且節省內存和硬盤空間。
   日志記錄:Docker將會收集和記錄每個進程容器的標準流(stdout/stderr/stdin),用于實時檢索或批量檢索。
   變更管理:容器文件系統的變更可以提交到新的映像中,并可重復使用以創建更多的容器。無需使用模板或手動配置。
   交互式Shell:Docker可以分配一個虛擬終端并關聯到任何容器的標準輸入上,例如運行一個一次性交互shell。

3 兩個基礎概念images與container

    Container和Image在Docker的世界里,Image是指一個只讀的層(Layer),這里的層是AUFS里的概念,最直觀的方式就是看一下docker官方給出的圖:

CentOS,docker
   Docker使用了一種叫AUFS的文件系統,這種文件系統可以讓你一層一層地疊加修改你的文件,最底下的文件系統是只讀的,如果需要修改文件,AUFS會增加一個可寫的層(Layer),這樣有很多好處,例如不同的Container可以共享底層的只讀文件系統(同一個Kernel),使得你可以跑N多個Container而不至于你的硬盤被擠爆了!這個只讀的層就是Image!而如你所看到的,一個可寫的層就是Container。
   那Image和Container的區別是什么?很簡單,他們的區別僅僅是一個是只讀的層,一個是可寫的層,你可以使用dockercommit命令,將你的Container變成一個Image,也就是提交你所運行的Container的修改內容,變成一個新的只讀的Image,這非常類似于gitcommit命令。

4 docker安裝與啟動

    安裝docker


[[email protected] /]# yum -y install docker-io
 

    更改配置文件


[[email protected] /]# vi /etc/sysconfig/docker

    other-args列更改為:other_args="--exec-driver=lxc--selinux-enabled"

    啟動docker服務


[[email protected] /]# service docker start
Starting cgconfig service:                                 [  OK  ]
Starting docker:                                               [  OK  ]

    將docker加入開機啟動
[[email protected] /]# chkconfig docker on
 

    基本信息查看

    dockerversion:查看docker的版本號,包括客戶端、服務端、依賴的Go等


[[email protected] /]# docker version
Client version: 1.0.0
Client API version: 1.12
Go version (client): go1.2.2
Git commit (client): 63fe64c/1.0.0
Server version: 1.0.0
Server API version: 1.12
Go version (server): go1.2.2
Git commit (server): 63fe64c/1.0.0

    docker info:查看系統(docker)層面信息,包括管理的images, containers數等
[[email protected] /]# docker info
Containers: 16
Images: 40
Storage Driver: devicemapper
 Pool Name: docker-253:0-1183580-pool
 Data file: /var/lib/docker/devicemapper/devicemapper/data
 Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata
 Data Space Used: 2180.4 Mb
 Data Space Total: 102400.0 Mb
 Metadata Space Used: 3.4 Mb
 Metadata Space Total: 2048.0 Mb
Execution Driver: lxc-0.9.0
Kernel Version: 2.6.32-431.el6.x86_64
 

5 鏡像的獲取與容器的使用

   鏡像可以看作是包含有某些軟件的容器系統,比如ubuntu就是一個官方的基礎鏡像,很多鏡像都是基于這個鏡像“衍生”,該鏡像包含基本的ubuntu系統。再比如,hipache是一個官方的鏡像容器,運行后可以支持http和websocket的代理服務,而這個鏡像本身又基于ubuntu。

    搜索鏡像
    docker search <image>:在docker index中搜索image


[[email protected] /]# docker search ubuntu12.10
NAME                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
mirolin/ubuntu12.10                                                         0
marcgibbons/ubuntu12.10                                                     0
mirolin/ubuntu12.10_redis                                                   0
chug/ubuntu12.10x32         Ubuntu Quantal Quetzal 12.10 32bit  base i...   0
chug/ubuntu12.10x64         Ubuntu Quantal Quetzal 12.10 64bit  base i...   0
 

    下載鏡像

    docker pull <image> :從docker registry server中下拉image


[[email protected] /]# docker pull chug/ubuntu12.10x64
 

    查看鏡像

    docker images: 列出images

    docker images -a :列出所有的images(包含歷史)

    docker images --tree :顯示鏡像的所有層(layer)

    docker rmi  <image ID>:刪除一個或多個image


[[email protected] /]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
chug/ubuntu12.10x64   latest              0b96c14dafcd        4 months ago        270.3 MB
[[email protected] /]# docker images -a
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
chug/ubuntu12.10x64   latest              0b96c14dafcd        4 months ago        270.3 MB
<none>                <none>              31edfed3bb88        4 months ago        175.8 MB
[[email protected] /]# docker images --tree
Warning: '--tree' is deprecated, it will be removed soon. See usage.
└─31edfed3bb88 Virtual Size: 175.8 MB
  └─0b96c14dafcd Virtual Size: 270.3 MB Tags: chug/ubuntu12.10x64:latest
[[email protected] /]# docker rmi <image ID> ....
 

     使用鏡像創建容器


[[email protected] /]# docker run chug/ubuntu12.10x64  /bin/echo hello world
hello world

    交互式運行
[[email protected] /]# docker run -i -t chug/ubuntu12.10x64  /bin/bash
[email protected]:/#
 

    查看容器

    docker ps :列出當前所有正在運行的container
    docker ps -l :列出最近一次啟動的container
    docker ps -a :列出所有的container(包含歷史,即運行過的container)
    docker ps -q :列出最近一次運行的container ID


[[email protected] /]# docker ps
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
ccf3de663dc9        chug/ubuntu12.10x64:latest   /bin/bash           22 hours ago        Up 22 hours                             sharp_hypatia
[[email protected] /]# docker ps -l
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS                     PORTS               NAMES
f145f184647b        chug/ubuntu12.10x64:latest   /bin/bash           6 seconds ago       Exited (0) 3 seconds ago                       compassionate_galileo
[[email protected] /]# docker ps -a
CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS                        PORTS               NAMES
f145f184647b        chug/ubuntu12.10x64:latest   /bin/bash           30 seconds ago      Exited (0) 26 seconds ago                         compassionate_galileo
f4624b42fe7e        chug/ubuntu12.10x64:latest   /bin/bash           2 minutes ago       Exited (0) 2 minutes ago                          sharp_wilson
ccf3de663dc9        chug/ubuntu12.10x64:latest   /bin/bash           22 hours ago        Up 22 hours                                       sharp_hypatia
9cbaa79b9703        chug/ubuntu12.10x64:latest   /bin/bash           22 hours ago        Exited (127) 36 minutes ago                       berserk_mcclintock
2161509ff65e        chug/ubuntu12.10x64:latest   /bin/bash           22 hours ago        Exited (0) 22 hours ago                           backstabbing_mclean
[[email protected] /]# docker ps -q
ccf3de663dc9
 

    再次啟動容器

    docker start/stop/restart<container> :開啟/停止/重啟container
    docker start [container_id] :再次運行某個container(包括歷史container)
    docker attach [container_id]:連接一個正在運行的container實例(即實例必須為start狀態,可以多個窗口同時attach一個container實例)
    docker start -i <container>:啟動一個container并進入交互模式(相當于先start,在attach)

    docker run -i -t <image> /bin/bash:使用image創建container并進入交互模式, login shell是/bin/bash
    docker run -i -t -p <host_port:contain_port>:映射 HOST 端口到容器,方便外部訪問容器內服務,host_port 可以省略,省略表示把 container_port映射到一個動態端口。
   注:使用start是啟動已經創建過得container,使用run則通過image開啟一個新的container。

    刪除容器

    docker rm <container...>:刪除一個或多個container
    docker rm `docker ps -a -q` :刪除所有的container
    docker ps -a -q | xargs docker rm :同上,刪除所有的container

6 持久化容器與鏡像

    6.1 通過容器生成新的鏡像

   運行中的鏡像稱為容器。你可以修改容器(比如刪除一個文件),但這些修改不會影響到鏡像。不過,你使用docker commit<container-id> <image-name>命令可以把一個正在運行的容器變成一個新的鏡像。

    docker commit <container> [repo:tag]將一個container固化為一個新的image,后面的repo:tag可選。


[[email protected] /]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
chug/ubuntu12.10x64   latest              0b96c14dafcd        4 months ago        270.3 MB
[[email protected] /]# docker commit d0fd23b8d3ac chug/ubuntu12.10x64_2
daa11948e23d970c18ad89c9e5d8972157fb6f0733f4742db04219b9bb6d063b
[[email protected] /]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
chug/ubuntu12.10x64_2   latest              daa11948e23d        6 seconds ago       270.3 MB
chug/ubuntu12.10x64     latest              0b96c14dafcd        4 months ago        270.3 MB
 

    6.2 持久化容器

    export命令用于持久化容器

    docker export <CONTAINER ID> >/tmp/export.tar

CentOS,docker

    6.3 持久化鏡像

    Save命令用于持久化鏡像

    docker save 鏡像ID > /tmp/save.tar

CentOS,docker

    6.4 導入持久化container

    刪除container 2161509ff65e

CentOS,docker

    導入export.tar文件


[[email protected] /]# cat /tmp/export.tar | docker import - export:latest
af19a55ff0745fb0a68655392d6d7653c29460d22d916814208bbb9626183aaa
[[email protected] /]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
export                  latest              af19a55ff074        34 seconds ago      270.3 MB
chug/ubuntu12.10x64_2   latest              daa11948e23d        20 minutes ago      270.3 MB
chug/ubuntu12.10x64     latest              0b96c14dafcd        4 months ago        270.3 MB
 

    6.5 導入持久化image

    刪除image daa11948e23d

CentOS,docker

    導入save.tar文件


[[email protected] /]# docker load < /tmp/save.tar

CentOS,docker
    對image打tag
[[email protected] /]# docker tag daa11948e23d load:tag

CentOS,docker

    6.6export-import與save-load的區別
   導出后再導入(export-import)的鏡像會丟失所有的歷史,而保存后再加載(save-load)的鏡像沒有丟失歷史和層(layer)。這意味著使用導出后再導入的方式,你將無法回滾到之前的層(layer),同時,使用保存后再加載的方式持久化整個鏡像,就可以做到層回滾。(可以執行dockertag <LAYER ID> <IMAGE NAME>來回滾之前的層)。

CentOS,docker

    6.7 一些其它命令

    docker logs $CONTAINER_ID#查看docker實例運行日志,確保正常運行
    docker inspect $CONTAINER_ID #docker inspect<image|container> 查看image或container的底層信息

    docker build <path>尋找path路徑下名為的Dockerfile的配置文件,使用此配置生成新的image
    docker build -t repo[:tag] 同上,可以指定repo和可選的tag
    docker build - < <dockerfile>使用指定的dockerfile配置文件,docker以stdin方式獲取內容,使用此配置生成新的image
    docker port <container> <container port>查看本地哪個端口映射到container的指定端口,其實用docker ps 也可以看到

7 一些使用技巧

    7.1 docker文件存放目錄

    Docker實際上把所有東西都放到/var/lib/docker路徑下了。


[[email protected] docker]# ls -F
containers/  devicemapper/  execdriver/  graph/  init/  linkgraph.db  repositories-devicemapper  volumes/

    containers目錄當然就是存放容器(container)了,graph目錄存放鏡像,文件層(filesystemlayer)存放在graph/imageid/layer路徑下,這樣我們就可以看看文件層里到底有哪些東西,利用這種層級結構可以清楚的看到文件層是如何一層一層疊加起來的。

    7.2  查看root密碼

   docker容器啟動時的root用戶的密碼是隨機分配的。所以,通過這種方式就可以得到容器的root用戶的密碼了。

docker logs 5817938c3f6e 2>&1 | grep 'User: ' | tail -n1


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美日韩一区免费| 91九色精品视频| 日本在线观看天堂男亚洲| 欧美成人精品h版在线观看| 日韩欧美精品在线观看| 日韩久久精品电影| 国产精品视频成人| 91麻豆国产语对白在线观看| 欧美日韩国产激情| 亚洲精品一区av在线播放| 久久亚洲国产精品| 欧美限制级电影在线观看| www.99久久热国产日韩欧美.com| 久久久国产视频| 久久国产一区二区三区| 久久久成人的性感天堂| 欧美激情精品久久久久久| 91免费电影网站| 少妇高潮 亚洲精品| 国产精品999999| 久久国产视频网站| 精品久久久999| 亚洲国产99精品国自产| 国产欧美va欧美va香蕉在线| 国产精品影院在线观看| 欧美精品电影免费在线观看| 成人黄色免费在线观看| 国产欧亚日韩视频| 亚洲欧美综合精品久久成人| 色999日韩欧美国产| 欧美成人亚洲成人| 欧美裸体男粗大视频在线观看| 奇米成人av国产一区二区三区| 国产在线98福利播放视频| 欧美亚洲视频在线观看| 欧美日韩美女视频| 午夜伦理精品一区| 日韩中文字幕在线看| 91亚洲va在线va天堂va国| 亚洲性猛交xxxxwww| 久久久久久尹人网香蕉| 成人黄色在线观看| 欧美一区二区视频97| 日韩中文字幕在线看| 日韩精品免费在线| 全色精品综合影院| 国产成一区二区| 亚洲在线免费看| 国内外成人免费激情在线视频网站| 久久久久久av| 国产精品毛片a∨一区二区三区|国| 久久久精品网站| 亚洲一区二区久久久久久久| 精品中文字幕视频| 精品国产一区av| 欧美日韩免费在线观看| 国产精品扒开腿做爽爽爽的视频| 亚洲人成在线一二| 国产精品99蜜臀久久不卡二区| 国产精品久久久久99| 91免费视频网站| 91精品国产91久久久久久久久| 国产日韩欧美视频在线| 91精品在线观看视频| 精品成人久久av| 国产成人亚洲综合| 国产69久久精品成人看| 亚洲福利小视频| 日本欧美精品在线| 中文字幕亚洲欧美日韩2019| 日韩在线观看免费高清| 国产精品久久久久久久久久尿| 日本久久久久久久| 国产精品尤物福利片在线观看| 亚洲成年人在线播放| 一本大道香蕉久在线播放29| 国产精品第一视频| 欧美乱人伦中文字幕在线| 韩国国内大量揄拍精品视频| 色小说视频一区| 国产中文日韩欧美| 日韩美女中文字幕| 国产视频精品自拍| 国产在线视频2019最新视频| 亚洲第五色综合网| 国产精品久久久久久久久免费| 亚洲a一级视频| 亚洲国产精彩中文乱码av| 欧美激情xxxxx| 国产美女精品视频免费观看| 日韩精品福利网站| 亚洲偷熟乱区亚洲香蕉av| 日本国产高清不卡| 亚洲天堂视频在线观看| 夜夜嗨av一区二区三区四区| 少妇精69xxtheporn| 国产视频精品在线| 欧美成人午夜影院| 亚洲国产欧美日韩精品| 日韩综合中文字幕| 国产成人亚洲综合91精品| 亚洲女人天堂成人av在线| 日韩中文字幕亚洲| 国产偷亚洲偷欧美偷精品| 91精品啪在线观看麻豆免费| 欧美日韩亚洲激情| 国产亚洲人成网站在线观看| 亚洲男女性事视频| 青草热久免费精品视频| 在线观看国产欧美| 日韩国产在线播放| 亚洲理论在线a中文字幕| 亚洲人av在线影院| 亚洲女在线观看| 国内外成人免费激情在线视频网站| 久久精品国产欧美亚洲人人爽| 91香蕉亚洲精品| 亚洲女人被黑人巨大进入al| 国产a∨精品一区二区三区不卡| 精品免费在线观看| 国产亚洲欧美另类中文| 91系列在线播放| 欧洲美女免费图片一区| 日本高清不卡的在线| 久久精品精品电影网| 2019国产精品自在线拍国产不卡| 欧美成人sm免费视频| 日韩久久午夜影院| 98午夜经典影视| 欧美剧在线观看| 91免费视频网站| 国产精品精品久久久| 91久久精品视频| 欧美在线性视频| 国产日韩在线精品av| 精品人伦一区二区三区蜜桃网站| 久久亚洲电影天堂| 久久久久久久激情视频| 欧美国产一区二区三区| 成人疯狂猛交xxx| 欧美激情在线一区| 日韩中文字幕欧美| 91久久久久久久一区二区| 久久久久久69| 最近2019中文字幕大全第二页| 91久久精品国产91性色| 国产精品久久久久久久久久久久| 成人av在线网址| 成人天堂噜噜噜| 国产精品久久久久77777| 狠狠久久亚洲欧美专区| 久久久久久综合网天天| 欧美色视频日本版| 奇门遁甲1982国语版免费观看高清| 高清日韩电视剧大全免费播放在线观看| 日韩精品免费在线播放| 揄拍成人国产精品视频| 国产精品扒开腿爽爽爽视频| 国产精品视频午夜| 精品毛片网大全| 91精品国产91久久久久久不卡| 免费91麻豆精品国产自产在线观看| 欧美一级电影免费在线观看| 欧美激情第6页|