Docker容器技术
Posted -xudong
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器技术相关的知识,希望对你有一定的参考价值。
docker提供轻量的虚拟化,通过docker镜像能创建出多个容器,一个容器相当于一个虚拟机。可以把镜像快速部署到无数台服务器上。
面对多种复杂的开发环境,docker能很好的解决企业不同的项目的不同开发环境,使开发运维一体化,环境互不干扰,提高工作效率。
Docker与虚拟机对比:
虚拟机:资源全部隔离,cpu、内存、磁盘相互独立,一台宿主机中可以安装的虚拟机数量是一定的,有限的,移植性不强(文件很大,拷贝传输困难)。
Docker:部分共享部分隔离,共享cpu,内存,磁盘甚至操作系统,极为轻量
Docker五大要素:
- 沙箱:隔离,将应用之间的必要资源隔离开,防止互相影响,应用之间互相独立。
- 镜像:模板,使用dockerfile制作镜像,通过镜像创建容器。
- 容器:镜像的实例,镜像只读,容器可写,容器中可以保存应用产生的零时文件
- 数据卷:挂载到容器上,用于保存必要数据。比如容器中数据库的数据,但是不建议用,因为重启容器需要挂载同步数据,效率较慢,解决方式:数据库拆分
- 仓库:与maven仓库概念一致,应用都会保存在仓库中,创建容器是根据镜像的规定进行拉取,可以共享。
-
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容器技术的主要内容,如果未能解决你的问题,请参考以下文章