Docker的核心及安裝

博文結構
Docker鏡像操做
Docker容器操做
Docker資源控制
Docker核心概念

一.Docker是什麼?linux

(1)Docker是在Linux容器裏運行應用的開源工具,是一種輕量級的「虛擬機」
Logo設計爲藍色鯨魚,鯨魚能夠看做爲宿主機,上面的集裝箱能夠理解爲相互隔離的容器,每一個集裝箱中包含本身的應用程序。git

Docker的核心及安裝

(2)Docker和虛擬機的區別docker

做爲一種輕量級的虛擬化方式,Docker 與傳統虛擬機相比具備顯著的優點。shell

Docker的核心及安裝

Docker之因此擁有衆多優點,與操做系統虛擬化自身的特色是分不開的。傳統虛擬機須要有額外的虛擬機管理程序和虛擬機操做系統層,而Docker容器是直接在操做系統層面之上實現的虛擬化,
如圖:vim

Docker的核心及安裝

(3)Docker的使用場景centos

如今開發者須要能方便地建立運行在雲平臺上的應用,必需要脫離底層的硬件,同時還須要任什麼時候間地點可獲取這些資源,這正是Docker所能提供的。Docker 的容器技術能夠在一臺主機 上輕鬆爲任何應用建立一個輕量級的、可移植的、自給自足的容器。經過這種容器打包應用程序,意味着簡化了從新部署、調試這些瑣碎的重複工做,極大地提升了工做效率。安全

二.Docker的核心概念及安裝
(1)鏡像bash

Docker的鏡像(mage) 是建立容器的基礎,相似虛擬機的快照
能夠理解爲是一一個面向Docker容器引擎的只讀模板。好比,一個鏡像能夠是一個完整的 CentOS 操做系統環境,稱爲-個CentOS
鏡像;能夠是一個安裝了MySQL的應用程序,稱爲一個MySQL鏡像,等等。ide

(2)容器工具

Dooker的容器(Container) 是從鏡像建立的運行實例。它能夠被啓動、中止和刪除。所建立的每個容器都是相互隔離、互不可見,能夠保證安全性的平臺。能夠把容器看做一個簡易版的Linux環
境,Docker 利用容器來運行和隔離應用。

(3)倉庫

Docker倉庫(Repository) 是用來集中保存鏡像的地方,當建立了本身的鏡像以後,可使用push命令將它上傳到公有倉庫(Public) 或者私有倉庫(Private), 這樣一來當 下次要在另一臺機器上使用這個鏡像時,只須要從倉庫上拉取下來就能夠了。

(4)安裝Docker

主機有網的話能夠直接安裝,

配置yum

[root@localhost ~]# rm -rf /etc/yum.repos.d/*

[root@localhost ~]# vim /etc/yum.repos.d/a.repo
[aaa]
name=asd
baseurl=file:///media
gpgcheck=0
[root@localhost ~]# mount /dev/cdrom /media/

[root@localhost ~]# yum -y install docker

安裝完成能夠啓動Docker,並設置開機自啓

[root@localhost ~]# systemctl start docker

[root@localhost ~]# systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# docker version  //查看Docker版本
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-75.git8633870.el7.centos.x86_64
 Go version:      go1.9.4
 Git commit:      8633870/1.13.1
 Built:           Fri Sep 28 19:45:08 2018
 OS/Arch:         linux/amd64
 Experimental:    false

分爲服務端與客戶端

三.Docker鏡像操做

(1)搜索鏡像(前提電腦有網)

[root@localhost ~]# docker search dhcp

INDEX       NAME                                           DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/networkboot/dhcpd                    Suitable for running a DHCP server for you...   43                   [OK]
docker.io   docker.io/joebiellik/dhcpd                     DHCP server running on Alpine Linux             15                   [OK]
docker.io   docker.io/gns3/dhcp                            A DHCP container for GNS3 using dnsmasq         3                    [OK]
docker.io   docker.io/instantlinux/dhcpd-dns-pxe           Serve DNS, DHCP and TFTP from a small Alpi...   2                    [OK]
docker.io   docker.io/ictu/dhcpd-tftpd                     dhcpd tftpd container                           1                    [OK]
docker.io   docker.io/marcelwiget/dhcptester               Simple dhcp client simula

(2)獲取鏡像

[root@localhost ~]# docker pull docker.io/network/dhcpd //下載上面最開頭的dhcp

還有一種就是插入已經下載好的dhcp

Docker的核心及安裝

作成光盤插入到主機中

[root@localhost ~]# mount /dev/cdrom /media/
[root@localhost ~]# cd /media/
[root@localhost media]# ls
dhcp
[root@localhost media]# cp dhcp /
[root@localhost media]#
[root@localhost /]# docker load < dhcp
fccbfa2912f0: Loading layer 116.9 MB/116.9 MB
e1a9a6284d0d: Loading layer 15.87 kB/15.87 kB
ac7299292f8b: Loading layer 14.85 kB/14.85 kB
a5e66470b281: Loading layer 5.632 kB/5.632 kB
a8de0e025d94: Loading layer 3.072 kB/3.072 kB
e2e29955c5aa: Loading layer  12.7 MB/12.7 MB
12e14fab4dd4: Loading layer 49.15 kB/49.15 kB
47bdfd3bbf39: Loading layer 4.096 kB/4.096 kB
Loaded image: docker.io/networkboot/dhcpd:latest

將鏡像下載到本地

(3)查看鏡像信息

[root@localhost /]# docker images
REPOSITORY                    TAG                 IMAGE ID //鏡像ID            CREATED             SIZE
docker.io/networkboot/dhcpd   latest              6f98b6b9b486        19 months ago       125 MB
REPOSITORY:  鏡像屬於的倉庫。
TAG:  鏡像的標籤信息,標記同一個倉庫中的不一樣鏡像。
IMAGE ID:   鏡像的惟一ID號,惟一標識了該鏡像。
CREATED:  鏡像建立時間。
CREATED:  鏡像建立時間。

[root@localhost /]# docker inspect 6f98b6b9b486 \查看鏡像ID詳細信息

鏡像的詳細信息中包括建立時間、系統版本.主機名.域名.用戶.卷.標籤.操做系統.設備ID等各類信息。

[root@localhost /]# docker tag docker.io/networkboot/dhcpd dhcp:dhcp 
第一個dhcp:名稱
第二個dhcp:標籤

(4)刪除鏡像

[root@localhost /]# docker rmi dhcp:dhcp
Untagged: dhcp:dhcp

四.Docker容器操做

容器是Docker的另外一一個核心概念,簡單來講,容器是鏡像的一個運行實例,是獨立運行的一個或一組應用及它們所必需的運行環境,包括文件系統、系統類庫. shell 環境等。鏡像是隻讀模板,而容器會給這個只讀模板一個額外的可寫層

(1)容器的建立與啓動

[root@localhost /]# docker create -it docker.io/networkboot/dhcpd /bin/bash

e392026ddd186d01cbd3306acae15f2f197dc9874a84ea241d347c7fe20a0946

經常使用選項: -i表示讓容器的輸入保持打開: -t表示讓Docker分配一個僞終端。

[root@localhost /]# docker ps -a  \\查看全部容器運行狀態
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS              PORTS               NAMES
e392026ddd18        docker.io/networkboot/dhcpd   "/entrypoint.sh /b..."   About a minute ago   Created                                 elegant_goldwasser

輸出信息顯示容器的ID號.加載的鏡像.運行的程序.建立時間、目前所處的狀態、端口映射.容器名稱等。其中狀態-欄爲Created表示當前的容器是新建立的並處於中止狀態。

[root@localhost /]# docker start e392026ddd18   \\啓動容器 ,上面的ID
e392026ddd18

容器啓動後,能夠看到容器狀態一欄已經變爲UP,表示容器已經處於啓動狀態。

(2)容器的運行與終止

[root@localhost /]# docker stop 容器的ID號

(3)容器的進入

[root@localhost /]# docker exec -it e392026ddd18 /bin/bash
root@e392026ddd18:/#

用戶能夠經過所建立的終端來輸入命令,經過exit命令退出容器.

root@e392026ddd18:/# ls
bin   core  entrypoint.sh  home  lib64  mnt  proc  run   srv  tmp  var
boot  dev   etc            lib   media  opt  root  sbin  sys  usr
root@e392026ddd18:/# exit
exit

(4)容器的導出導入
容器是最小化,致使一些命令不能使用,因此就要從容器裏面導出到本地來設置,設置完再導入進容器就能夠。

導出命令以下:

[root@localhost /]# docker export e392026ddd18>/etc/dhcp/dhcpd.conf

亂數字爲容器的ID號

把dhcp主配置文件導出來配置,

導入命令以下:

[root@localhost /]# docker import /etc/dhcp/dhcpd.conf > e392026ddd18

(5)容器的刪除
可使用dockerrm命令將一個已經終止狀態的容器進行刪除。
一個鏡像能夠包含多個容器

[root@localhost /]# docker stop e392026ddd18   \\先中止
e392026ddd18
[root@localhost /]# docker rm e392026ddd18   \\再刪除
e392026ddd18
[root@localhost /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

五.Docker資源控制

Cgroup是Controlgroup的簡寫,是Linux內核提供的一種限制所使用物理資源的機制,這些資源主要包括CPU.內存、blkio。 下面就這3個方面來談一下Docker是如何使用Cgroup機制進行管理的。

(1)限制CPU使用速率

例如,將容器60ff4594cc73的CPU使用設置爲20000,設置CPU的使用率限定爲20%:

[root@localhost ~]# echo 20000 &gt;/sys/fs/ cgroup/ cpu/ system. slice/docker-60ff4594cc73b5474477 636b25b41f 16e1 66a3606aed22 6522d420d0c296990d. scope/cpu . cfs_ quota _us

(2)多任務按比例分享CPU

例如,運行3個新建容器A. B、C,佔用CPU資源的比例爲1:1:2就能夠這樣執行:

[root@localhost /]# docker run -tid --cpu-shares 1024   +鏡像A
[root@localhost /]# docker run -tid --cpu-shares 1024   +鏡像B
[root@localhost /]# docker run -tid --cpu-shares 2048   +鏡像C
相關文章
相關標籤/搜索