docker介绍
背景:为了解决软件跨环境迁移问题诞生--》作为整体打包至容器中部署
诞生时间:2013
版本:社区版(CE)和企业版(EE)
二、docker架构
客户端:接收并发送命令至服务端
服务端:
容器:沙箱机制,相互隔离,互不影响
镜像:类比于安装包,需要运行在容器中提供服务
仓库:
官方仓库:docker hub
三方仓库:镜像加速器
本地仓库:
三、docker使用
3.1 打开虚拟机
账号/密码: root/root
#查看ip
ifconfig
找到------>ens33 inet对应ip连接即可
3.2 docker安装
#docker版本查看命令
docker -v
#结果
Docker version 19.03.5, build 633a0ea
3.3 镜像加速器配置
- 中科大镜像加速器
- 网易镜像加速器
- 腾讯镜像加速器
- 阿里云镜像加速器(需要注册阿里云账号)
- …
#用于查看是否有使用自己的镜像加速器地址
docker info
3.4 docker三大命令(重点)
a. 守护进程操作命令
#启动命令
systemctl start docker
#开机自启命令
systemctl enable docker
#停止命令
systemctl stop docker
#重启命令
systemctl restart docker
#查看状态
systemctl status docker
b.镜像操作命令
#查找镜像
docker search 镜像名称(mysql/redis/nginx/tomcat) #默认是最新版本
#指定版本查询
docker search 镜像名称:版本 (docker search mysql:5.7)
#下载镜像
docker pull 镜像名称 #默认是最新版本
#删除镜像
docker rmi 镜像名称 #默认是最新版本
#查看本地镜像
docker images
#查看本地仓库所有镜像id
docker images -q
c.容器操作命令
#沙箱机制 相互隔离 互不影响
#1.交互式容器
#特点:1.容器创建后直接进入内部;2.退出容器后容器自动停止运行。
docker run -it --name=c1 centos:7 /bin/bash
exit #退出容器
#2.守护式容器
#特点:1.容器创建后不会直接进入内部;2.退出容器后容器正常运行。
docker run -id --name=c2 centos:7
#3.查看正在运行着的容器
docker ps
#4.查看所有容器
docker ps -a
#5.进入容器的命令
docker exec -it 容器名称 /bin/bash
#6.启动容器
#交互式容器经过start命令后会自动转换为守护式容器
docker start 容器名称/容器id
#7.停止容器
docker stop 容器名称/容器id
#8.删除容器
docker rm 容器名称/容器id
四、数据卷(了解)
1.数据卷作用
- 容器数据的持久化
- 解决外部机器的数据同步问题
- 解决容器之间的数据共享问题
2. 命令
docker run -id --name=c1 -v /虚拟机绝对路径:/容器内部绝对路径 镜像名称
#注意:
1.如果目录不存在会自动创建
2.必须使用绝对路径
3.冒号必须是英文的冒号,并且冒号前是虚拟机的路径,冒号后是容器的路径
五、docker应用部署(次重点)
1.mysql部署
#1.部署
docker run -id --name=c_mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#注意:
1·必须做端口的映射,否则外部访问不到
2.必须指定root账号的密码,否则创建失败
2.tomcat部署
#1.部署
docker run -id --name=c_tomcat -p 8080:8080 -v /root/tomcat:/usr/local/tomcat/webapps tomcat
#2.注意事项
a.必须做数据的挂载
b.必须在挂载完毕后再次新建目录(test)然后再创建index.html
c.访问: http://ip:8080/test/index.html
3.nginx部署
#1.部署
docker run -id --name=c_nginx -p 80:80 -v /root/nginx:/usr/share/nginx/html nginx
#2.注意事项:
a.必须做数据的挂载
b.挂载位置必须是/usr/share/nginx/html (nginx默认部署页面的位置)
c.访问: http://ip
4.redis部署
#1.部署
docker run -id --name=c_redis -p 6379:6379 redis
六、docker镜像本质
概念:
docker镜像的本质其实就是一个文件分层管理系统。
思考:
为什么tomcat变大了?centos7变小了?
原因:
1.因为tomcat不仅仅是一个tomcat,本质上是一个微型的虚拟机,并且此虚拟机中已经自带了jdk,所以tomcat变大了。
2.centos7变小是因为复用了bootfs。
七、dockerfile的使用(看一下就行了)
1. 使用dockerfile打包springboot项目
#boot启动命令
java -jar xxx.jar
#编写dockerfile
FROM java:8
MAINTAINER itheima
ADD spring-boot-docker-demo.jar app.jar
CMD java -jar app.jar
#构建docker镜像前记得上传jar包
docker build -f dockerfile文件名称 -t 镜像名称:1.0 .
#部署
docker run -id --name=c_springboot -p 8081:8080 31springboot:1.0
#访问
http://ip:8081/docker
八、容器与虚拟机的区别
容器比虚拟机性价比高