Docker容器技术1

什么是容器?

  • 容器技术是一种应用程序封装和交付的核心技术
  • 容器技术的核心由以下几个内核技术组成:
    (1)Cgroups(Control Groups):资源管理
    (2)NameSpace:进程隔离
    a. 主机名称隔离
    b. 网络隔离
    c. 文件系统隔离
    d. 用户隔离
    e. 进程隔离
    f. 进程信号向量隔离
    (3)SeLinux安全
  • 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速

什么是Docker

  • Docker是完整的一套容器管理系统
  • Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术

Docker与传统虚拟化方式:

两者的不同之处如下面2张图所示,传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190528162858424.png?x-oss-process=image## 什么是容器?

  • 容器技术是一种应用程序封装和交付的核心技术
  • 容器技术的核心由以下几个内核技术组成:
    (1)Cgroups(Control Groups):资源管理
    (2)NameSpace:进程隔离
    a. 主机名称隔离
    b. 网络隔离
    c. 文件系统隔离
    d. 用户隔离
    e. 进程隔离
    f. 进程信号向量隔离
    (3)SeLinux安全
  • 由于是在物理机上实施隔离,启动一个容器,可以像启动一个进程一样快速

什么是Docker

  • Docker是完整的一套容器管理系统
  • Docker提供了一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术

Docker与传统虚拟化方式:

两者的不同之处如下面2张图所示,传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
在这里插入图片描述
在这里插入图片描述
Docker对比传统虚拟机总结
在这里插入图片描述

Docker优点

  • 更高效利用系统资源
  • 更快速的启动时间
  • 一致的运行环境
  • 持续交付和部署
  • 更轻松的应用迁移
  • 更轻松的维护和扩展

Docker缺点

  • 容器隔离性没有虚拟化强
  • 共用Linux内核,安全性有先天缺陷
  • SELinux难以驾驭
  • 监控容器和容器排错是挑战

Docker部署

准备两台虚拟机(docker01:192.168.8.11,docker02:192.168.8.12),能访问外网
1、安装前准备

[root@docker01 ~]# vim /etc/hosts		//以docker01为例。下同
#添加以下两行
192.168.8.11 docker01
192.168.8.12 docker02
[root@docker01 ~]# vim /etc/yum.repos.d/dvd.repo
Centos]
name=Centos7.4
baseurl=ftp://192.168.8.254/rhel7/
enabled=1
gpgcheck=0
[Docker]
name=Centos7.4
baseurl=ftp://192.168.8.254/docker/
enabled=1
gpgcheck=0

2、安装并启动docker

[root@docker01 ~]# yum list |grep docker
docker-engine.x86_64                   1.12.1-1.el7.centos             @Docker  
docker-engine-selinux.noarch           1.12.1-1.el7.centos             @Docker
[root@docker01 ~]# yum -y install docker-engine
[root@docker01 ~]# systemctl start docker
[root@docker01 ~]# systemctl enable docker
[root@docker01 ~]# ifconfig docker0		//docker启动后会生成一个虚拟交换机docker0
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 0.0.0.0

镜像

  • 在Docker中容器是基于镜像启动的
  • 镜像是启动容器的核心
  • 镜像采用分层技术
  • 使用快照的cow技术,确保底层数据不丢失

镜像常用命令

[root@docker01 ~]# docker images								//查看镜像
[root@docker01 ~]# docker history busybox						//查看镜像制作历史(层次结构)
[root@docker01 ~]# docker inspect centos:latest					//查看镜像底层信息
[root@docker01 ~]# docker pull	centos							//下载镜像
[root@docker01 ~]# docker push centos							//上传镜像
[root@docker01 ~]# docker save busybox:latest > busybox.tar		//镜像另存为tar包
[root@docker02 ~]# docker load < busybox.tar					//使用tar包导入镜像
[root@docker01 ~]# docker search busybox						//搜索镜像
[root@docker01 ~]# docker tag centos:latest centos:lx			//修改镜像名称和标签
[root@docker01 ~]# docker rmi centos:lx							//删除本地镜像

镜像命令实践

############################################################################
[root@docker01 ~]# man docker search		//查看docker相应命令帮助文件
############################################################################
[root@docker01 ~]# docker images		//查看docker镜像,初始镜像为空
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@docker01 ~]# docker search mysql		//搜索mysql网络镜像
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED		//OFFICIAL值为ok时表示为官方镜像
mysql                             MySQL is a widely used, open-source relati...   8196      [OK]       
mariadb                           MariaDB is a community-developed fork of M...   2791      [OK]       
mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   610                  [OK]
percona                           Percona Server is a fork of the MySQL rela...   434       [OK]       
centurylink/mysql                 Image containing mysql. Optimized to be li...   60                   [OK]
[root@docker01 ~]# docker search busybox		//搜索busybox网络镜像
NAME                     DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
busybox                  Busybox base image.                             1589      [OK]       
progrium/busybox                                                         69                   [OK]
radial/busyboxplus       Full-chain, Internet enabled, busybox made...   24                   [OK]
[root@docker01 ~]# docker pull busybox		//下载busybox网络镜像
Using default tag: latest
latest: Pulling from library/busybox
53071b97a884: Pull complete 
Digest: sha256:4b6ad3a68d34da29bf7c8ccb5d355ba8b4babcad1f99798204e7abb43e54ee3d
Status: Downloaded newer image for busybox:latest
[root@docker01 ~]# docker images		//查看下载镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              64f5d945efcc        2 weeks ago         1.199 MB
[root@docker01 ~]# ls
[root@docker01 ~]# docker save busybox:latest > busybox.tar		//备份docker镜像
[root@docker01 ~]# ls
busybox.tar
[root@docker01 ~]# scp busybox.tar 192.168.8.12:/root
[root@docker02 ~]# docker load < busybox.tar		//恢复镜像
d1156b98822d: Loading layer [==================================================>] 1.416 MB/1.416 MB
Loaded image: busybox:latest
[root@docker02 ~]# docker images		
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              64f5d945efcc        2 weeks ago         1.199 MB
[root@docker01 ~]# cd docker_images/
[root@docker01 docker_images]# ls
centos.tar  nginx.tar  redis.tar  registry.tar  ubuntu.tar
[root@docker01 docker_images]# for i in *;do docker load -i ${i};done		//导入已下载镜像,docker02主机同样操作
[root@docker01 docker_images]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox             latest              64f5d945efcc        2 weeks ago         1.199 MB
ubuntu              latest              452a96d81c30        13 months ago       79.62 MB
centos              latest              e934aafc2206        13 months ago       198.6 MB
registry            latest              d1fd7d86a825        16 months ago       33.26 MB
nginx               latest              a5311a310510        2 years ago         181.4 MB
redis               latest              1aa84b1b434e        2 years ago         182.8 MB

容器常用命令

[root@docker01 ~]# docker run -itd nginx:latest		//运行容器,-itd(选项分别表示交互式、运行后开启终端、后台运行)
[root@docker01 ~]# docker run -it centos			//运行容器后进入容器
[root@f26819924bcf /]# exit		//退出容器,容器自动关闭(注:ctrl+p+q可以实现退出时不关闭容器)
[root@docker01 ~]# docker attach 4fcdae128d1e		//进入运行中的容器(前提是容器默认启动命令支持交互如/bin/bash,exit时关闭容器,常用容器排错)
[root@docker01 ~]# docker exec -it 4888e01da6b1 /bin/bash	//进入运行中的容器(exit不会关闭容器,常用于容器维护)
[root@docker01 ~]# docker ps						//查看启动容器
[root@docker01 ~]# docker ps -a						//查看启动过的容器
[root@docker01 ~]# docker ps -aq					//查看启动过的容器ID
[root@docker01 ~]# docker stop 1cf8349b9de0		    //关闭容器
[root@docker01 ~]# docker start 1cf8349b9de0		//启动容器
[root@docker01 ~]# docker restart 1cf8349b9de0		//重启容器
[root@docker01 ~]# docker inspect 1cf8349b9de0		//查看容器底层信息
[root@docker01 ~]# docker top 1cf8349b9de0		    //查看容器进程列表
[root@docker01 ~]# docker rm 1cf8349b9de0			//删除容器(需在关闭容器后执行,否则会报错)
[root@docker01 ~]# docker rm $(docker stop eec00f87a111)		//删除正在运行的容器
[root@docker01 ~]# for i in `docker ps -aq`; do docker rm $i;done		//批量删除启动过的容器
[root@docker01 ~]# docker rm $(docker ps -aq)		//批量删除启动过的容器

启动容器

[root@docker01 ~]# docker run -it centos:latest /bin/bash		//启动容器centos
[root@eac031d4b130 /]# hostname		//启动容器后主机名隔离
eac031d4b130
[root@eac031d4b130 yum.repos.d]# ifconfig		//容器中无config命令,配置yum安装
bash: ifconfig: command not found
[root@eac031d4b130 /]# cd /etc/yum.repos.d/
[root@eac031d4b130 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo
[root@eac031d4b130 yum.repos.d]# rm -rf *
[root@eac031d4b130 yum.repos.d]# vi /etc/yum.repos.d/dvd.repo
[Centos]
name=Centos7.4
baseurl=ftp://192.168.8.254/rhel7/
enabled=1
gpgcheck=0
[root@eac031d4b130 yum.repos.d]# yum provides ifconfig		//查看ifconfig命令安装包
Loaded plugins: fastestmirror, ovl
Centos                                                                                       | 4.1 kB  00:00:00     
(1/2): Centos/group_gz                                                                       | 137 kB  00:00:00     
(2/2): Centos/primary_db                                                                     | 4.0 MB  00:00:00     
Determining fastest mirrors
Centos/filelists_db                                                                          | 3.4 MB  00:00:00     
net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools
Repo        : Centos
Matched from:
Filename    : /sbin
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值