docker基础操作及部署springboot项目流程

news/2024/6/23 19:53:32

一、安装docker及基础命令

1.centos系统安装https://www.runoob.com/docker/ubuntu-docker-install.html

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

2.启动docker服务

systemctl start docker

3.查看docker服务是否启动成功

docker info

4.设置开机自启

systemctl enable docker

5.重启服务

systemctl restart docker

二、docker阿里云加速

1.注册阿里云账户,搜索容器镜像服务,找到镜像加速器

sudo mkdir -p /etc/docker

2.修改daemon.json

{"registry-mirrors": ["https://21pdv2qz.mirror.aliyuncs.com"]
}

3.重启docker服务,查看配置是否生效

systemctl restart docker
docker info

三、下载镜像

1.mysql

docker pull mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql
docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql  mysql:5.7.32
//启动mysql服务,后台运行,指定root用户密码为123456,指定容器名称为mysql5.7.32,设置数据卷
docker run -d -p 3306:3306  -e MYSQL_ROOT_PASSWORD=123456 --name mysql5.7.32 -v mysqldata:/var/lib/mysql -v mysqlconfig:/etc/mysql  mysql:5.7.32

2.redis

docker pull redis:5
//启动redis服务,拷贝配置文件
docker run --name redis-test -p 6379:6379 -d redis:5
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动redis服务,后台运行,指定端口,指定容器名称为redis,设置数据卷
docker run -d -p 6379:6379 --name redis -v redisconf:/etc/redis/redis.conf -v redisdata:/data redis:5 redis-server /etc/redis/redis.conf 
docker run -d -p 6379:6379 --name redis -v /www/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /www/docker/redis/data:/data redis:5 redis-server /etc/redis/redis.conf

3.nginx

docker pull nginx
//启动nginx服务,拷贝配置文件
docker run --name nginx-test -p 80:80 -d nginx
docker cp 容器ID:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf
//启动nginx服务,后台运行,指定端口,指定容器名称为nginx ,设置数据卷
docker run -d -p 9000:80  --name nginx -v /www/docker/nginx/dist:/usr/share/nginx/html -v /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/docker/nginx/logs:/var/log/nginx nginx

四、Dockerfile

官方说明:https://docs.docker.com/engine/reference/builder/

保留字作用
FROM当前镜像是基于哪个镜像的 第一个指令必须是FROM
MAINTAINER镜像维护者的姓名和邮箱地址
RUN构建镜像时需要运行的指令
EXPOSE当前容器对外暴露出的端口号
WORKDIR指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV用来在构建镜像过程中设置环境变量
ADD将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar包
COPY类似于ADD,拷贝文件和目录到镜像中
将从构建上下文目录中<原路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME容器数据卷,用于数据保存和持久化工作
CMD指定一个容器启动时要运行的命令
Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run之后的参数替换
ENTRYPOINT指定一个容器启动时要运行的命令
ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及其参数
FROM openjdk:8
WORKDIR /demo
ADD demo.jar /demo
EXPOSE 8989
ENTRYPOINT ["java","-jar"]
CMD ["demo.jar"]

五、compose使用

1.安装

sudo curl -L https://github.com/docker/compose/releases/download/1.25.5/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
#测试安装是否成功
docker-compose --version

2.docker-compose.yml
创建hello网桥

docker network create -d bridge hello

Dockerfile文件

FROM openjdk:8-jre
WORKDIR /api
EXPOSE 8080
CMD ["java", "-jar", "-Dserver.port=8080", "/api/dome.jar"]

compose示例

version: "3"services:apiserver:build:context: ./dockerFiles/images/jdkcontainer_name: 'apiserver'restart: 'always'ports:- "8080:8080"environment:TZ: "Asia/Shanghai"volumes:- ./jar/opt:/api/opt    #注意挂载时的日志路径和上传文件路径- ./jar:/apinetworks:      - hellodepends_on:   # 容器依赖- redis- mysqlmysql:image: mysql:5.7.32container_name: mysqlrestart: 'always'command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci  # 设置utf8字符集ports:- "3306:3306"volumes:- mysqldata3:/var/lib/mysql- mysqlconf3:/etc/mysqlenvironment:- MYSQL_ROOT_PASSWORD=123456- TZ=Asia/Shanghaicommand: --lower-case-table-names=1 #表示表名不区分大小写networks:- helloredis:image: redis:5.0.10container_name: redisrestart: 'always'ports:- "6379:6379"environment:TZ: "Asia/Shanghai"volumes:- redisdata:/datanetworks:- hellocommand: "redis-server --appendonly yes" #run 镜像之后用来覆盖容器内容默认命令nginx:image: nginx:1.18.0container_name: nginxrestart: 'always'ports:- 9998:80- 3000:3000volumes:- ./nginx/conf/nginx.conf:/etc/nginx/nginx.conf          # 配置文件#- ./nginx/cert/:/etc/cert/                    # ssl证书#- ./nginx/html/:/usr/share/nginx/html          # 默认显示的index网页- ./nginx/html/:/usr/share/nginx/weather- ./nginx/logs/:/var/log/nginx/                # 日志文件environment:TZ: "Asia/Shanghai"networks:- hellodepends_on:   # 容器依赖- apiserver
volumes:  #声明上面服务所使用的自动创建的卷名mysqldata3:mysqlconf3:redisdata:
networks: #定义服务用到桥hello: #定义上面的服务用到的网桥名称 默认创建就是 bridgeexternal:true   #使用外部指定网桥  注意:网桥必须存在

https://www.xjx100.cn/news/3118978.html

相关文章

Leetcode2336 无限集中的最小数字

题目&#xff1a; 现有一个包含所有正整数的集合 [1, 2, 3, 4, 5, ...] 。 实现 SmallestInfiniteSet 类&#xff1a; SmallestInfiniteSet() 初始化 SmallestInfiniteSet 对象以包含 所有 正整数。int popSmallest() 移除 并返回该无限集中的最小整数。void addBack(int nu…

【STM32】OLED显示屏

1 调试方式 1. 串口调试&#xff1a;通过串口通信&#xff0c;将调试信息发送到电脑端&#xff0c;电脑使用串口助手显示调试信息 2. 显示屏调试&#xff1a;直接将显示屏连接到单片机&#xff0c;将调试信息打印在显示屏上 3. Keil调试模式&#xff1a;借助Keil软件的调试模…

一文秒懂|Linux字符设备驱动

我的圈子&#xff1a; 高级工程师聚集地 我是董哥&#xff0c;高级嵌入式软件开发工程师&#xff0c;从事嵌入式Linux驱动开发和系统开发&#xff0c;曾就职于世界500强公司&#xff01; 创作理念&#xff1a;专注分享高质量嵌入式文章&#xff0c;让大家读有所得&#xff01; …

制作心理咨询小程序的详细指南

随着科技的的发展&#xff0c;小程序已经成为了人们日常生活中不可或缺的一部分。特别是在心理咨询这个领域&#xff0c;小程序可以提供一个更为便捷、高效的服务平台。本文将通过乔拓云平台为例&#xff0c;详细介绍如何制作一个心理咨询小程序。 首先&#xff0c;我们需要注册…

c 语言常见的易错题分析

在C语言中&#xff0c;有一些常见的易错题需要特别注意。以下是一些例子&#xff1a; 1&#xff0c;数组越界&#xff1a;在C语言中&#xff0c;数组的索引是从0开始的。因此&#xff0c;一个长度为n的数组的索引范围应该是0到n-1。如果尝试访问超出这个范围的索引&#xff0c…

代码随想录 435. 无重叠区间

题目 给定一个区间的集合 intervals &#xff0c;其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量&#xff0c;使剩余区间互不重叠 。 示例 1: 输入: intervals [[1,2],[2,3],[3,4],[1,3]] 输出: 1 解释: 移除 [1,3] 后&#xff0c;剩下的区间没有重叠。 示…

【Openstack Train安装】五、Memcached/Etcd安装

本文介绍Memcached/Etcd安装步骤&#xff0c;Memcached/Etcd仅需在控制节点安装。 在按照本教程安装之前&#xff0c;请确保完成以下配置&#xff1a; 【Openstack Train安装】一、虚拟机创建 【Openstack Train安装】二、NTP安装 【Openstack Train安装】三、openstack安装…

让 OpenAI GPT4 出 10 道题测试其他开源大语言模型

让 OpenAI GPT4 出 10 道题测试其他开源大语言模型 1. 中文题目及答案2. 日文题目及答案3. 英文题目及答案 1. 中文题目及答案 数学题&#xff1a;一个矩形的长是10厘米&#xff0c;宽是5厘米&#xff0c;求它的面积。 答案&#xff1a;面积 长 x 宽 10厘米 x 5厘米 50平方厘…