Docker容器技术

Posted -xudong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器技术相关的知识,希望对你有一定的参考价值。

  docker提供轻量的虚拟化,通过docker镜像能创建出多个容器,一个容器相当于一个虚拟机。可以把镜像快速部署到无数台服务器上。

面对多种复杂的开发环境,docker能很好的解决企业不同的项目的不同开发环境,使开发运维一体化,环境互不干扰,提高工作效率。

  

Docker与虚拟机对比:

  虚拟机:资源全部隔离,cpu、内存、磁盘相互独立,一台宿主机中可以安装的虚拟机数量是一定的,有限的,移植性不强(文件很大,拷贝传输困难)。

  Docker:部分共享部分隔离,共享cpu,内存,磁盘甚至操作系统,极为轻量

Docker五大要素: 

  1. 沙箱:隔离,将应用之间的必要资源隔离开,防止互相影响,应用之间互相独立。
  2. 镜像:模板,使用dockerfile制作镜像,通过镜像创建容器。
  3. 容器:镜像的实例,镜像只读,容器可写,容器中可以保存应用产生的零时文件 
  4. 数据卷:挂载到容器上,用于保存必要数据。比如容器中数据库的数据,但是不建议用,因为重启容器需要挂载同步数据,效率较慢,解决方式:数据库拆分
  5. 仓库:与maven仓库概念一致,应用都会保存在仓库中,创建容器是根据镜像的规定进行拉取,可以共享。
  6. 技术图片
  7. https://www.cnblogs.com/wushuaishuai/p/9984228.html

 Docker对Linux的版本要求:

  docker基于Linux3.8及以上版本64bit内核开发,所以在使用docker前需要确认Linux内核版本

  一般要centos7以上(查看命令:uname  -a)

二、下面我们正式进入docker容器技术的使用,这里会介绍Redis容器,mysql容器,Tomcat容器

1.1安装内核版本高于centos7的虚拟机

1.2修改静态IP:(参考命令)vim /etc/sysconfig/network-scripts/ifcfg-ens33

  在物理机中找到对应的虚拟机网络映射IP,然后按“i”修改ipaddr,gateway,dns1前三个网段与物理机查到的一致

  技术图片

esc进入命令模式,:wq退出

1.2.1重启网络服务,让IP地址生效,命令为:service network restart

  使用xshell连接虚拟机,Ctrl+C退出

1.2.2 注意防火请要关闭

  systemctl stop firewalld.service   关闭防火墙

  systemctl disable firewalld.service   禁止防火墙开机自动启动

  firewall-cmd   --state   查看防火墙状态

1.3 安装docker:略(和安装其他软件一样)

1.3.1 验证docker是否安装成功命令: docker version

1.3.2 启动docker 

  systemctl status docker     service docker restart      查看docker状态/重启docker

  systemctl start docker     service docker stop      启动docker /停止docker     

1.4 在做第一个Redis案例之前先了解一些docker命令

  docker load -i xxxx.tar     (指定jar包导入镜像文件/加载镜像)

  docker rm  镜像名   (根据镜像名删除镜像)

  docker images    (查询所有镜像文件)

       docker tag  旧镜像名和端口   redis-ali:0.0.1  (修改镜像名称)

  docker run -d --name 容器名 镜像名:版本号  ( 根据镜像名称启动容器)

  docker ps -a     (查看全部的容器)

1.5 Redis案例

  这里我是在/usr/local/src目录下新建了redis文件夹,然后用FileZilla把我的Redis镜像(redis-3.2.8.tar

)拷入虚拟机

  执行cd /usr/local/src/redis  和  docker load -i redis-3.2.8.tar  (加载redis镜像)     docker images(查看镜像)

技术图片

1.5.1 创建容器:

  docker run -d --name redis7000 -p 7000:6379   redis:3.2.8   (创建,启动容器,并指定暴露端口)

  容器名(redis7000)  虚拟机端口(7000)  镜像端口(6379)  镜像名/版本号 (redis/3.2.8)

  访问过程如下图:

技术图片

 

 

 1.5.2 命令:docker ps -a   查看容器

技术图片

1.6  测试点个容器

创建maven quick start项目,项目名redis

pom.xml中把junit版本改成4.12,添加jedis依赖

<!-- jedis -->

<dependency>

<groupId>redis.clients</groupId>

<artifactId>jedis</artifactId>

<version>2.6.2</version>

</dependency>

 1.6.1 创建测试类 JedisTest

 技术图片

1.6.2  查看数据是否成功存入redis7000 容器中,进入到容器执行以下命令

技术图片

   技术图片

  如上图,则数据成功存入redis7000容器。

1.6.3  创建多个redis容器:思路图

  技术图片

docker run -d --name redis7001 -p 7001:6379 redis:3.2.8

docker run -d --name redis7002 -p 7002:6379 redis:3.2.8

执行查看容器命令:docker ps -a    (可以看到3个redis容器就创建好了,能理解思路图很重要)

技术图片

 

 测试的话,参考一个redis容器测试方法。

附加:

docker start redis7000    docker stop redis7000     docker rm redis7000(开始/停止/删除容器,删除必须先停止)

可以用docker stats -a 命令查看docker容器消耗的CPU,你会发现性能超级好   退出 Ctrl+C

然后就是docker容器有以下优点或者说特性吧,后面会做解释

技术图片

 2.创建网络

  创建Tomcat容器和MySQL容器,使我们的外部浏览器能访问到数据(先不写了...)

 

以上是关于Docker容器技术的主要内容,如果未能解决你的问题,请参考以下文章

云原生容器技术 3 云原生容器技术概要介绍-容器技术基础-Docker

docker容器技术基础入门

Docker这样的容器技术与虚拟化技术的区别是啥?

docker容器技术基础入门

docker容器技术基础入门

云原生技术分享 | Docker入门系列:初识容器技术