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
相关文章
相关标签/搜索