一.哪些是Docker?
百度百科:Docker是一个开源的应用容器引擎,让开发者可以打包她们的应用以及依赖包到一个可移植的镜像中,之后发布到任何流行的Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,互相之间不会有任何插口。
docker官网:
二.为何说Docker是容器化技术?
容器化技术的特性:标准化:每位容器都是标准化、可移植的,由于她们直接运行在宿主机的内核上隔离:容器相互隔离,互不干扰redhat linux 9.0,独立运列宽性能:容器性能开支极低,可以实现分钟级甚至秒级的布署和启动版本:CE(CommunityEdition:社区版)和EE(EnterpriseEdition:企业版)
三.Docker理念
Build,ShipandRunAnyApp,Anywhere,在任何地方建立、发布并运行任何应用程序(一次封装,四处运行)
四.Docker构架
docker由三部份组成:
Client顾客端docker主机Registry镜像库房服务器
dockerdaemon:
docker安装后linux操作系统,会以后台运行、守护进程的方式存在images镜像:镜像可以拿来创建docker容器,一个镜像可以创建好多容器containers:镜像和容器的关系类似面向对象设计中的类和对象,镜像是容器的模板,容器是基于镜像创建下来的。容器可以被创建、启动、停止、删除等等。
Registry:
镜像注册服务器一个dockerRegistry(库房注册服务器)中可以包含多个Repository(库房);每位库房可以包含多个标签/版本(Tag);每位标签对应一个镜像。库房分为公开库房(Public)和私有库房(Private)两种方式,公开库房就是docker官方库房,私有库房是自己搭建的docker私服
Client:
docker终端安装好docker中,同时包含了docker顾客端docker 修改仓库地址,顾客端负责执行docker命令,发送给docker主机中的docker守护进程,比如:从库房下载镜像,通过镜像创建容器等等
yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2
(2)设置docker下载镜像(推荐用阿里云,一个字:快)
yum-config-manager--add-repo
(3)更新yum软件包索引
yummakecachefas
(4)安装DOCKERCE(社区版)
yuminstall-ydocker-cedocker-ce-clicontainerd.io
注意第一次安装可能会出现错误,重新执行一下安装的命令就好了
(5)启动docker
systemctlstartdocker#启动docker
systemctlenabledocker#设置开机自启动
(6)查看版本
dockerversion
(7)docker卸载,一次执行下边的三行命令
systemctlstopdocker
yumremove-ydocker-ce
rm-rf/var/lib/docker
六.配置阿里云镜像服务加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ny5dsu6o.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
七.Docker常用命令(1).Docker基本命令(2)Docker服务相关命令(3)Docker镜像命令(docker官方镜像网站)
我就不演示了
我就不演示了
(4)容器操作
dockercreate镜像名称#依据镜像名创建一个容器
dockercreate--nametomcat1镜像名称#依据镜像创建名为tomcat1的容器
dockercreate镜像id#依据镜像id新建一个容器
dockerstart容器名|容器ID
dockerstop容器名|容器ID
dockerrestart容器名|容器ID
dockerkill容器名|容器ID按照容器名强制停止一个容器
dockerrm容器名称#删掉未启动的容器
dockerrm-f容器名称#强制删掉已启动的容器
dockerrm-f$(dockerps-qa)#删掉所有容器,包括正在运行的容器
我就不演示了
dockerps-a-q|xargsdockerrm#删掉所有容器,不包括正在运行的容器
我就不演示了
ctrl+p+q#不停止退出容器
exit#容器停止退出,此时执行
推荐直接使用:dockerrun-itd--nameqiu镜像名|镜像ID
八.数据卷(1)哪些是数据卷:数据卷是存在于一个或多个容器中的特定文件或文件夹docker 修改仓库地址,这个文件或文件夹以独立于docker文件系统的方式存在于宿主机中(2)解决了哪些问题?诸如:MySQL容器受损难以启动,须要删掉容器重新创建,这么数据库数据将会遗失
(3)安装centos:7镜像:dockerpullcentos:7(4)做一个反例
将宿主机根目录中的qiu挂载到容器根目录中的qiu
(5)挂载数据卷
dockerrun-itd-v/qiu:/qiu--namemyMysqlmysql
-v:挂载数据卷格式:
/宿主机目录(文件):/容器内目录(文件)
目录必须是绝对路径
如果目录不存在,
则自动创建
可以挂载多个数据卷
(6)查看数据卷是否挂载成功
dockerinspectmyMysql
(7)数据共享
首先步入容器,在容器的数据卷挂载目录中创建文件并写入内容
之后退出容器,查看宿主机挂载目录,可以看见同步更新的文件
(8)数据的同步
首先停止容器
之后在宿主机更改共享数据接出来启动后面的容器,
查看共享数据文件,发觉数据在容器中同步
(9)数据的持久化
首先删掉容器
之后在宿主机更改共享数据
接着重新创建容器并挂载数据卷
发觉数据在容器中恢复
(10)一个容器挂载多个数据卷,两个容器挂载同一个数据卷
dockerrun-it-v/dataVolumeHost31:/dataVolumeContainer31-v/dataVolumeHost32:/dataVolumeContainer32--namecentos3centos:7
dockerrun-it-v/dataVolumeHost:/dataVolumeContainer4--namecentos4centos:7
dockerrun-it-v/dataVolumeHost:/dataVolumeContainer5--namecentos5centos:7
九.应用布署(1)布署tomcat
创建并运行tomcat容器
dockerrun-d-p8080:8080-v/docker/tomcat/webapps:/usr/local/tomcat/webapps-v/docker/tomcat/logs:/usr/local/tomcat/logs--nameqiu_tomcattomcat:8.5
打算一个index.html页面,使用ftp工具上到/docker/tomcat/webapps/qbb中
浏览器访问一下::8080/qbb/
也可以查看一下tomcat的日志:dockerlogs-tf--tail20atguigu_tomcat
(2)布署MySQL
dockerrun-d-p3306:3306-v/docker/mysql/conf:/etc/mysql/conf.d-v/docker/mysql/logs:/logs-v/docker/mysql/data:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=root--nameatguigu_mysqlmysql:5.7
十.docker容器化技术和虚拟机技术
十一.镜像制做(1)形式一:通过容器制做镜像①生成镜像
dockercommit容器名镜像名称:版本号
②压缩镜像
dockersave-o压缩文件名称镜像名称:版本号
③还原镜像
dockerload-i压缩文件名称
__EOF__