Docker
是什么?
Docker 是一个快速交付应用、运行应用的技术
怎么做的?
1、允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像
2、应用运行在容器中,使用沙箱机制,相互隔离
docker 的两个重要概念:
1、镜像(images):docker 将应用程序所需的依赖、函数库、环境、配置文件打包在一起就成了镜像;
2、容器(container):镜像中的应用程序运行后形成的进程就是容器,知识docker 会给容器做隔离,对外不可见,一般通过和宿主机建立端口映射来访问
!!! 镜像文件 是只读的
Docker 和虚拟机的区别?
docker 是一个系统进程,虚拟机是基于操作系统之上的操作系统, docker 体积小、速度快、性能好,
虚拟机相反,体积很大、速度较慢、性能一般
docker 常用命令
拉取镜像:docker pull 镜像名称:版本号(不给版本号就默认最新版latest)
查看镜像:docker images (所有的镜像)
删除镜像:docker rmi 镜像名称
将已有的镜像打包为压缩包:docker save -o 打包后的文件名.tar
加载镜像文件:docker load -i 镜像文件.后缀名
容器操作命令
运行容器:docker run --name 容器名称 -p 80:80 -d 镜像名称 (-p:是指定端口映射,左边是宿主机,右边是容器。-d:是后台运行)
停止运行的容器:docker stop -t 秒数(单位秒,默认10秒) 容器名称
启动停止的容器:docker start 容器名
暂停容器运行:docker pause 容器名
继续运行:docker unpause 容器名
删除容器:docker rm 容器名 (正在运行的容器不能删)
查看容器日志:docker logs 容器名 (添加 -f 可以动态查看日志)
查看容器状态:docker ps (后面加 -a 查看所有容器,包括已经停止的)
数据卷
数据卷的作用
将容器与数据分离,解耦合,方便操作容器内数据,保证数
据安全
可以通过创建容器时,将数据卷一并创建好
docker run \
--name mn \ 这是创建的容器名
-v html:/root/html \ 这是建立数据卷与宿主机的指定目录挂载
-p 8080:80 这是映射的端口
nginx \ 这是指定的镜像
Dockerfile 自定义镜像(了解)
· 通过已经生成的镜像,生成自己的镜像
# 指定基础镜像
FROM java:8-alpine
# 拷贝自己的项目文件 docker-demo.jar
COPY ./docker-demo.jar /tmp/app.jar
# 暴露端口
EXPOSE 8090
# 入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar
Docker基础镜像可以是基本操作镜像,也可以是别人制作好的镜像 这里常用的是 java:8-alpine
DockerCompose
本质是一个文件,用于快速编排服务、创建容器,但是限于单机
分布式多用的K8S