目录
2.docker属于应用于pass的一项技术,也可以应用于saas
一、认识docker
1)云服务
1.分为lass、pass、saas
lass:基础设施即服务,只提供操作系统;
pass:平台即服务,只提供含平台(mysql、redis、tomcat、nginx等平台)的操作系统;
saas:软件即服务,提供含部署好的软件(OA、ERP等软件)的操作系统(当然也包含了平台)。
2.docker属于应用于pass的一项技术,也可以应用于saas
2)docker概念
1.虚拟化技术
docker属于一种虚拟化技术。
虚拟化技术分为硬件虚拟化、软件虚拟化(如虚拟机、docker)。软件虚拟化是指通过某种技术,实现多个人协作的使用一台电脑,并且每个人都像是在使用一台电脑一样。硬件虚拟化是指网络、内存、存储等打破不可分割进行重组高性能硬件可以补偿低性能硬件。
软件虚拟化又分为全虚拟化和os虚拟化,虚拟机属于全虚拟化,docker属于os虚拟化。
全虚拟化虚拟出的是整个子操作系统,虚拟出来的子操作系统可以是任何类型系统。os虚拟化虚拟出的如果是软件,则为当前操作系统的一部分,相当于共用当前操作系统,虚拟出来的如果是子操作系统,子操作系统只能和当前操作系统一样为linux。
2.docker的特点
类似虚拟机,是一个创建容器的工具。和虚拟机的区别在于,不需要虚拟出整个操作系统,只需要虚拟一个小规模的环境(类似“沙箱”)。占用空间小,启动快,资源利用率高(一台主机可以同时运行几千个Docker容器)。
docker的优点:(1)解决部署一处成功,处处成功;(2)隔离性,各个应用互相隔离;(3)迁移方便。
二、docker核心内容
1)docker组成
镜像image、容器container、仓库repository、仓库注册中心registry
镜像:类似于一个java类;
容器:通过镜像可以创建容器。类似于一个java对象;
仓库:可以存放多个镜像。类似于java的一个包。例如一个mysql仓库,有多个版本的镜像,甚至不同的制作者制作的同一版本,也是不同的镜像,通过镜像的tag区分;
【仓库名mysql+冒号+标签名5.6,就是镜像名mysql:5.6】
仓库注册中心:仓库源。分为公有和私有,公有的国外的有(dockerhub【官方源】),国内的有(ustc、网易云、阿里云等),国内的只是加速,切换成国内的相当于使用了加速器连接官方源。本地的就是私有的。
2)安装docker
1.redhat系列操作系统上安装
//安装
yum install -y docker
//启动
systemctl start docker
systemctl start docker.service
//设置为开机自启动
systemctl enable docker
2.debian系列操作系统上安装
sudo apt-get update
如果apt-get太慢,可以更换为国内的源
(1)备份原来的源:
sudo mv /etc/apt/sources.list /etc/apt/sources.list.backup
(2)创建新的源
sudo vim /etc/apt/sources.list复制以下内容并保存(阿里云源): deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse(3)更新apt软件源
sudo apt-get update
//安装
apt-get install -y docker.io
安装完成后,只有管理员有运行权限,可以把当前用户加到docker组(安装好docker就会默认创建的)
//启动
systemctl start docker
//设置为开机自启动
systemctl enable docker
3)使用docker
1.查看本地所有镜像
docker images
2.更换仓库注册中心来加速
(1)第一步
vi /etc/docker/daemon.json //没有该文件就创建一个
添加: { "registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"] }
查看阿里云镜像仓库注册中心地址:
进入控制台,然后

(2)第二步
sudo systemctl daemon-reload //重新加载配置文件
sudo systemctl restart docker //重启docker
3.管理镜像
查找:
docker seach 仓库名; //在官方仓库注册中心上查找镜像
获取:
docker pull 仓库名:标签; //如docker pull centos:7就会自动获取centos7最新的版本(标签一般是版本号),如果要指定版本需要的官方网站hub.docker.com去查看
删除:
docker rmi 仓库名:标签; //或者docker rmi 镜像ID
docker rmi $(docker images -q) //删除所有镜像
查看:
docker images //查看本地所有镜像
导入导出:
导出:docker save repository:tag/imageld> /opt/保存名字.tar.gz //导出到宿主机opt目录下
导入:docker load</opt/保存名字.tar.gz
手动制作镜像:
假如原来有一个centos7容器,之后在容器中装了jdk、tomcat等软件。可以使用如下命令把当前centos7制作成一个镜像:
dokcer commit centos:7 新的镜像名 //制作镜像
docker run -di -name 容器名 -p 9999:8080 新的镜像名 //使用制作的镜像创建容器(宿主机映射端口9999:容器内占用端口8080【安装的tomcat占用了该端口】,-p会宿主机的9999端口映射到容器内的8080端口)
假如原来有一个mysql5.7容器,之后在mysql容器存储了很多数据。可以使用如下命令把当前mysql5.7制作成一个镜像:
dokcer commit mysql:5.7 新的镜像名 //制作镜像
docker run -di -name 容器名 mysql -p 34306:3306 新的镜像名 //使用制作的镜像创建容器(宿主机映射端口34306:容器内占用端口3306,-p会宿主机的34306端口映射到容器内的3306端口)
4)操作容器
1.创建容器
用指定获取到的镜像,生成一个容器
docker run -d --name 容器名 repository:tag //或者docker run-d--name 容器名 imagelD
2.启动容器
docker start 容器名
3.进入容器
docker exec -it 容器名 /bin/bash //进入正在运行的容器
exit //退出进入交互界面,退出后容器依然运行起的
4.停止容器
docker stop 容器名
5.查看容器
docker ps //查看正在运行的容器
docker ps -a //查看所有的容器
docker inspect 容器名 //查看容器内部基本信息
6.删除容器
docker rm 容器名
docker rm 'docker ps -a -q' //删除所有容器
7.文件复制
cp /opt/1.txt 容器名:/mysql/bin //复制宿主机文件1.txt到容器的mysql/bin目录里面
5)部署mysql
1.获取mysql镜像
docker pull mysql:5.7;
2.创建mysql容器
docker run -di -name 容器名 mysql -p 34306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7 //-p代表端口映射(宿主机映射端口34306:容器内占用端口3306)、-e代表配置环境变量(设置root账号密码为123456)、最后的mysql:5.7 为镜像名(即仓库名+冒号+标签)
3.开启容器
docker start 容器名
4.测试登录mysql
在其他电脑登录容器的mysql:mysql>mysql -h 宿主机IP地址 -P 34306 -u root -proot //注意端口是宿主机映射端口34306
6)部署tomcat
1.获取tomcat镜像
docker pull tomcat:7;
2.创建tomcat容器
不创建路径映射方式:docker run -di -name 容器名 tomcat -p 9000:8080 mysql:7 //-p代表端口映射(宿主机映射端口9000:容器内占用端口8080)、最后的tomcat:7 为镜像名(即仓库名+冒号+标签)
创建路径映射方式:docker run -di -name 容器名 -v /opt/myWebapps:/usr/local/tomcat/webapps -p 9000:8080 --privileged=true tomcat:7 //容器中tomcat的webapps路径为/usr/local/tomcat/webapps,通过-v参数,把宿主机的/opt/myWebapps映射到容器中。映射之后,只需把web应用的war放到宿主机的/opt/myWebapps目录,就可以访问该web应用了
3.开启容器
docker start 容器名
4.测试连接tomcat
在其他电脑打开网页地址输入:宿主机ip地址:9000 //注意端口是宿主机映射端口9000
本文深入探讨了Docker技术,从云服务的lass、PaaS、SaaS概念出发,介绍了Docker作为PaaS技术的角色。接着,阐述了Docker的虚拟化特性和优势。详细讲解了Docker的安装过程,包括Redhat和Debian系列操作系统的安装步骤。重点讨论了Docker的使用,包括镜像管理、容器操作,以及如何部署MySQL和Tomcat。最后,强调了Docker在资源利用率和部署便捷性方面的优点。

1万+

被折叠的 条评论
为什么被折叠?



