简介:java系列技术分享(持续更新中…)
初衷:一起学习、一起进步、坚持不懈
如果文章内容有误与您的想法不一致,欢迎大家在评论区指正
希望这篇文章对你有所帮助,欢迎点赞 收藏 ⭐留言更多文章请点击
Docker是一个开源的平台,可以帮助开发者
快速构建、部署和管理软件应用程序
它通过将应用程序打包为Docker镜像,使得应用程序可以在任何环境中运行
,而无需考虑底层基础设施的差异。Docker提供了一系列工具,包括Dockerfile、docker-compose、docker images等,帮助开发者从零构建一个应用程序到发布上线的整个过程。
Docker是一个快速交付应用,运行应用的技术:
迁移到任意Linux操作系统
应用、依赖、函数库、一起打包,
形成可移植镜像沙箱机制
形成隔离容,各个应用互不干扰镜像(image)
: Docker将应用程序及其所需的依赖,函数库,环境,配置,等文件打包在一起,称为镜像
容器(Container)
: 镜像中应用程序运行形成的进程就是容器,只是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
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
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
Centos7如下:
yum install -y docker-ce
注意Centos8如下:
yum install docker-ce docker-ce-cli containerd.io -y
systemctl start docker # 启动docker服务
systemctl enable docker # 设置开机自启docker
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
查看是否启动
systemctl status docker # 查看服务状态
查看版本
docker -v
docker images 查看所有镜像
docker pull 拉取自己需要的镜像,不指定则默认最新
docker rmi 删除镜像
docker save -o 保存镜像为tar
docker load -i 重新加载
docker push --- 把本地镜像推送到远程仓库上
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 -- 查看容器信息
不便于修改
不可复用
:在容器内的修改对新创建的容器是不可复用的数据丢失
数据卷是一个虚拟目录,指向宿主机文件系统中的某个目录.
**命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:**
docker volume
create 创建一个volume
inspect 显示一个或多个volume的信息
ls 列出所有的volume
prune 删除未使用的volume
rm 删除一个或多个指定的volume
镜像结构:
基础镜像(Baselmage)
: 包含基本的系统函数库,环境变量.文件系统层(Layer)
:在基础镜像基础上添加安装包,依赖,配置等,每次操作都形成新的一层入口(Entrypoint)
: 镜像运行入口,一般是程序启动的脚本和参数Dockerfile
Dockerfile
的本质是一个文件,通过指令描述镜像的构建过程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 可以基于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 ......等等 重启