Docker技术
主要内容
初识Docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口
总结:docker一句话,快速部署应用的服务。
项目部署中遇到的问题
Linux系统结构
总结
Docker与虚拟机区别
总结:
1、Docker体积小,虚拟机体积大
2、Docker占用内存小,虚拟机占用内存大
性能差异
总结
Docker架构
概念
1、镜像:应用程序所依赖的jar包或者函数库等,进行整体打包成为文件,属于静态的。
2、容器:将静态的镜像文件运行起来(每个容器相互隔离,属于动态)
3、DockerHub:官方远程存放镜像的管理仓库
整体流程
总结
Docker操作指令
启动docker前,一定要关闭防火墙后再进行启动!!
# 关闭防火墙
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
通过命令启动docker
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
然后输入命令,可以查看docker版本:
docker -v
效果展示
镜像相关指令【重点】
docker pull nginx:latest
#从dockerh上拉取镜像到docker
docker images
#查看所有镜像文件
docker rmi nginx
#删除nginx镜像文件
docker save -o nginx.tar nginx:latest
#将nginx镜像文件 从docker进程中拉取处理,变成虚拟机中的文件供他人使用
docker load -i nginx.tar
#将压缩包文件变成镜像文件
首先来看下镜像的名称组成:
- 镜名称一般分两部分组成:[repository]:[tag]。
- 在没有指定tag时,默认是latest,代表最新版本的镜像
这里的mysql就是repository,5.7就是tag,合一起就是镜像名称,代表5.7版本的MySQL镜像。
案例
代码实现
docker pull nginx:latest #从dockerHub上拉取nginx镜像
docker images #查看所有镜像文件
容器操作相关指令【重点】
案例
注意:宿主机端口号可自行定义,但容器端口必须是固定端口(具体端口查看具体应用官网)
举例:
#生成nginx镜像容器
docker run --name mn -p 80:80 -d nginx
docker run --name mynginx -p 80:80 -d nginx:latest
##启动mynginx容器服务,宿主端口号80,容器端口80(相关应用官网查询),后台运行
Docker ps #查看在正在运行的容器
docker ps -a #查看所有容器
docker logs -f 容器名称 #查看运行容器日志并持续输出
docker logs 容器名称 #查看运行容器日志
安装完成后访问Linux系统的IP地址和端口
http://124.223.80.888/
效果
总结:
案例:
代码:
docker exec -it mynginx bash
#进入到刚刚创建的mynginx容器中
docker stop 容器名 #停止容器
docker start 容器名 #启动容器
docker rm 容器名 #删除容器
docker rm -f 容器名 #强制删除容器
总结
案例:
docker pull redis #从DockerHub拉取redis
docker run --name myredis -p 6379:6379 -d redis
#运行redis容器命名为myredis设置宿主机端口与容器端口映射并后台运行
root@53f2815b0787:/data# redis-cli #进入到redis客户端
127.0.0.1:6379> set num 666 #设置键值对nun=666
127.0.0.1:6379> get num 获取键
数据卷
本质就是在宿主机中创建一个文件夹目录,与容器目录进行映射
总结
代码实现
常见指令
docker volume create html#创建html数据卷
docker volume inspect html #查看html数据卷详情
docker volume ls #查看数据卷列表
docker volume prune #删除未使用的数据卷
docker volume rm html #删除html数据卷
可以看到,我们创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data
目录。
挂载数据卷
案例:
总结
数据卷和容器进行挂载
数据库mysql创建容器斌进行数据卷挂载案例
总结