🍓 简介:java系列技术分享(👉持续更新中…🔥)
🍓 初衷:一起学习、一起进步、坚持不懈
🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏
🍓 希望这篇文章对你有所帮助,欢迎点赞 👍 收藏 ⭐留言 📝🍓 更多文章请点击
文章目录
- 一、Docker简介
- 二、Docker与虚拟机区别
- 三、Docker镜像与容器介绍
- 四、CentOS安装Docker
- 4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载
- 4.2 安装yum工具
- 4.3 更新本地镜像源
- 4.4 安装docker
- 4.5 启动、停止、重启、查看版本、设置开机自启
- 五、Docker基本操作
- 5.1 镜像操作
- 5.2 容器操作
- 5.3 数据卷操作
- 5.3.1 容器与数据耦合带来的问题
- 5.3.2 数据卷介绍
- 5.3.3 数据卷操作命令
- 六、自定义镜像Dockerfile
- 七 、docker-Compose介绍
一、Docker简介
Docker是一个开源的平台,可以帮助开发者
快速构建、部署和管理软件应用程序
它通过将应用程序打包为Docker镜像,使得应用程序可以在任何环境中运行
,而无需考虑底层基础设施的差异。Docker提供了一系列工具,包括Dockerfile、docker-compose、docker images等,帮助开发者从零构建一个应用程序到发布上线的整个过程。
Docker是一个快速交付应用,运行应用的技术:
- 可以将程序及其依赖,运行环境一起打包为一个镜像,可以
迁移到任意Linux操作系统
- Docker允许开发中将
应用、依赖、函数库、一起打包,
形成可移植镜像 - 运行时利用
沙箱机制
形成隔离容,各个应用互不干扰 - 启动,移出都可以通过一行命令完成,方便快捷
二、Docker与虚拟机区别
- docker 硬盘占用一般为MB,虚拟机一般为GB2
- docker 是一个系统进程;虚拟机是在操作系统中的操作系统
- docker 体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
三、Docker镜像与容器介绍
镜像(image)
: Docker将应用程序及其所需的依赖,函数库,环境,配置,等文件打包在一起,称为镜像
容器(Container)
: 镜像中应用程序运行形成的进程就是容器,只是Docker会给容器做隔离,对外不可见
四、CentOS安装Docker
4.1 如果之前安装过旧版本的Docker,可以使用下面命令卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
4.2 安装yum工具
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
4.3 更新本地镜像源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
4.4 安装docker
Centos7如下:
yum install -y docker-ce
注意Centos8如下:
yum install docker-ce docker-ce-cli containerd.io -y
4.5 启动、停止、重启、查看版本、设置开机自启
systemctl start docker # 启动docker服务
systemctl enable docker # 设置开机自启docker
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
查看是否启动
systemctl status docker # 查看服务状态
查看版本
docker -v
五、Docker基本操作
5.1 镜像操作
- 镜像名称一般分为两部分组成:[repository]:[tag]
- 在没有指定tag是,默认是latest,代表最新版本的镜像
docker images 查看所有镜像
docker pull 拉取自己需要的镜像,不指定则默认最新
docker rmi 删除镜像
docker save -o 保存镜像为tar
docker load -i 重新加载
docker push --- 把本地镜像推送到远程仓库上
5.2 容器操作
docker run --naem containerName -80:80 -d nginx -- 创建并运行一个容器,处于运行状态
docker stop 停止一个运行的容器
docker start 让一个停止的容器再次运行
docker restart 重新启动一个或者多个容器
docker exec -it containerName bash -- 进入到docker容器中
docker logs -f containerName -- 查看容器的运行日志
docker rm -- 容器的删除
docker ps -- 查看容器信息
5.3 数据卷操作
5.3.1 容器与数据耦合带来的问题
不便于修改
- 数据
不可复用
:在容器内的修改对新创建的容器是不可复用的 - 升级维护困难:数据在容器内,升级或更换容器必然会导致
数据丢失
5.3.2 数据卷介绍
数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录.
5.3.3 数据卷操作命令
**命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:**
docker volume
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
六、自定义镜像Dockerfile
镜像结构:
基础镜像(Baselmage)
: 包含基本的系统函数库,环境变量.文件系统层(Layer)
:在基础镜像基础上添加安装包,依赖,配置等,每次操作都形成新的一层入口(Entrypoint)
: 镜像运行入口,一般是程序启动的脚本和参数
Dockerfile
Dockerfile
的本质是一个文件,通过指令描述镜像的构建过程- Dockerfile的第一行必须是FROM,从一个基础镜像来构建
- 基础镜像可以是基本操作系统,也可以是其他人制作好的镜像例如:java8-8-alpine
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
构建命令
空格后面跟.
,表示Dockerfile所在目录
docker build-t javaDemo:1.0 .
七 、docker-Compose介绍
-
Docker-compose 可以基于Compose文件快速部署分布式应用,而
无需手动一个个创建和运行容器
-
Docker-compose文件可以看做是将
多个docker run 命令写到一个文件中
,只是语法稍有差异 -
Docker-compose是一个文本文件,
通过指令定义集群中的每个容器如何运行
-
Docker-compose中的服务之间可以通过服务名访问
案例:
version: "3.2"
services:
nacos:
image: nacos/nacos-server
environment:
MODE: standalone
ports:
- "8848:8848"
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10000:10000"
部署启动
docker-compose up -d
Compose 常用命令与配置
docker-compose logs -f userservice 查看日志
docker-compose restart gateway userservice ......等等 重启
重点