Linux如何安装Docker以及部署java项目

一、安装

1.卸载旧版

首先如果系统中已经存在旧的Docker,则先卸载:

yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

2.配置Docker的yum库

首先要安装一个yum工具

yum install -y yum-utils

安装成功后,执行命令,配置Docker的yum源:

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

3.安装Docker

最后,执行命令,安装Docker

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

4.启动和校验

# 启动Docker
systemctl start docker

# 停止Docker
systemctl stop docker

# 重启
systemctl restart docker

# 设置开机自启
systemctl enable docker

# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps

5.配置镜像加速(可选)

可以找阿里云的容器镜像服务来配置,具体操作自行百度或看学习文档

具体命令如下:

# 创建目录
mkdir -p /etc/docker

# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置
systemctl daemon-reload

# 重启Docker
systemctl restart docker

二、部署项目

1、创建Docker网桥

docker network create test_net

2、部署MySQL环境

提前创建挂载目录conf、data和conf下的my.cnf文件

docker run -d \
  --name mysql \
  -p 3306:3306 \
  --log-opt max-size=10m \
  --log-opt max-file=50 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123456 \
  -v  /home/obj/demo/mysql/data:/var/lib/mysql \
  -v /home/obj/demo/mysql/conf:/etc/mysql/conf.d \
  -v  /home/obj/demo/mysql/init:/docker-entrypoint-initdb.d \
  --network test_net \
  mysql:5.7.36

解读:

  • docker run -d :创建并运行一个容器,-d则是让容器以后台进程运行

  • --name mysql : 给容器起个名字叫mysql,你可以叫别的

  • -p 3306:3306 : 设置端口映射。

    • 容器是隔离环境,外界不可访问。但是可将宿主机端口映射容器内到端口,当访问宿主机指定端口时,就是在访问容器内的端口了。
    • 容器内端口往往是由容器内的进程决定,例如MySQL进程默认端口是3306,因此容器内端口一定是3306;而宿主机端口则可以任意指定,一般与容器内保持一致。
    • 格式: -p 宿主机端口:容器内端口,示例中就是将宿主机的3306映射到容器内的3306端口
  • -e TZ=Asia/Shanghai : 配置容器内进程运行时的一些参数

    • 格式:-e KEY=VALUE,KEY和VALUE都由容器内进程决定
    • TZ=Asia/Shanghai是设置时区;MYSQL_ROOT_PASSWORD=123456是设置MySQL默认密码
  • --network test-net \加入的网桥

  • mysql:5.7.36 : 设置镜像名称和版本,Docker会根据这个名字搜索并下载镜像

    • 格式:REPOSITORY:TAG,例如mysql:8.0,其中REPOSITORY可以理解为镜像名,TAG是版本号
    • 在未指定TAG的情况下,默认是最新版本,也就是mysql:latest
  • # 挂载本地目录
    -v 本地目录:容器内目录
    # 挂载本地文件
    -v 本地文件:容器内文件
    
  • -v mysql:/var/lib/mysql # 会被识别为一个数据卷叫mysql,运行时会自动创建这个数据卷
    -v ./mysql:/var/lib/mysql # 会被识别为当前目录下的mysql目录,运行时如果不存在会创建目录
    

命令总结:

docker run 参数docker compose 指令说明
–namecontainer_name容器名称
-pports端口映射
-eenvironment环境变量
-vvolumes数据卷配置
–networknetworks网络

挂载的配置文件: my.cnf

[client]
#设置客户端默认字符集utf8mb4
default-character-set=utf8mb4
[mysql]
#设置服务器默认字符集为utf8mb4
default-character-set=utf8mb4
[mysqld]
#配置服务器的服务号,具备日后需要集群做准备
server-id = 1
#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
log-bin=mysql-bin
#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满
expire_logs_days=30
#解决MySQL8.0版本GROUP BY问题
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
#允许最大的连接数
max_connections=1000
# 禁用符号链接以防止各种安全风险
symbolic-links=0
# 设置东八区时区
default-time_zone = '+8:00'
# 无需密码
# skip-grant-tables

3.部署redis环境

提前创建挂载目录data和redis.conf文件

docker run \
--restart=always \
--log-opt max-size=10m \
--log-opt max-file=50 \
-p 6379:6379 \
--name redis \
-v /home/obj/demo/redis/redis.conf:/etc/redis/redis.conf  \
-v /home/obj/demo/redis/data:/data \
-d redis redis-server /etc/redis/redis.conf \
--appendonly yes

挂载的配置文件: redis.conf ,配置文件中包含密码设置

# Redis服务器配置 
 
# 绑定IP地址
#解除本地限制 注释bind 127.0.0.1  
#bind 127.0.0.1  
 
# 服务器端口号  
port 6379 
 
#配置密码,不要可以删掉
#requirepass pxh123456
  
 
 
#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no
 
#当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定(自定义)
#pidfile /data/dockerData/redis/run/redis6379.pid  
 
#默认为no,redis持久化,可以改为yes
appendonly yes
 
 
#当客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 60
# 服务器系统默认配置参数影响 Redis 的应用
maxclients 10000
tcp-keepalive 300
 
#指定在多长时间内,有多少次更新操作,就将数据同步到数据文件,可以多个条件配合(分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改)
save 900 1
save 300 10
save 60 10000
 
# 按需求调整 Redis 线程数
tcp-backlog 511
 
 
# 设置数据库数量,这里设置为16个数据库  
databases 16
 
 
# 启用 AOF, AOF常规配置
appendonly yes
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
 
 
# 慢查询阈值
slowlog-log-slower-than 10000
slowlog-max-len 128
 
 
# 是否记录系统日志,默认为yes  
syslog-enabled yes  
 
#指定日志记录级别,Redis总共支持四个级别:debug、verbose、notice、warning,默认为verbose
loglevel notice
  
# 日志输出文件,默认为stdout,也可以指定文件路径  
logfile stdout
 
# 日志文件
#logfile /var/log/redis/redis-server.log
 
 
# 系统内存调优参数   
# 按需求设置
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64

将redis加入到网络

docker network connect test_net redis

4.部署jar包

4.1配置启动文件 Dockerfile

文件内容:

# 基础镜像
FROM openjdk:17
# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# 拷贝jar包
COPY ***.jar /app.jar
# 入口
ENTRYPOINT ["java", "-jar", "/app.jar"]

基础镜像可以选择相对应得Java版本,可以为:openjdk:8

***.jar 为你需要创建镜像得jar包名

启动配置文件名必须是: Dockerfile

配置文件和jar包放在同一个文件夹下。

常用语法有:

指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY ./xx.jar /tmp/app.jar
RUN执行Linux的shell命令,一般是安装过程的命令RUN yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar

4.2创建镜像

cd 到你文件夹的目录下

docker build -t jarweb-test .

命令解释:

docker build:Docker构建镜像的命令

-t:指定镜像的名称可以指定版本(如:-t jarweb-test:1.0)

.:最后的点表示Dockerfile所在的路径,点表示当前目录

4.3运行镜像

docker run -d --name jarweb-test-v1.0 --network test_net \
-p 18083:8083 \
--log-opt max-size=100m \
--log-opt max-file=5 \
-v /home/obj/demo/jars/v1.0/logs:/logs \
 jarweb-test

注:数据库账号和密码需要对应,数据库连接地址直接使用创建的网桥名即可

三、相关文档视频

安装文档:(https://b11et3un53m.feishu.cn/wiki/Rfocw7ctXij2RBkShcucLZbrn2d)

学习文档:(https://b11et3un53m.feishu.cn/wiki/MWQIw4Zvhil0I5ktPHwcoqZdnec)

配套视频:(https://www.bilibili.com/video/BV1HP4118797/)

  • 27
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker是一种虚拟技术,可以将应用程序及其依赖项打包到一个容器中,使得应用程序在不同的环境中可以稳定运行。下面是在Docker容器部署Java项目的步骤: 1. 安装Docker:在Linux系统中,使用以下命令安装Docker: ```bash sudo apt-get update sudo apt-get install docker.io ``` 2. 创建Dockerfile:在Java项目的根目录下创建一个名为Dockerfile的文件,用于构建Docker镜像。Dockerfile的内容如下: ```dockerfile FROM openjdk:8-jdk-alpine COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java CMD ["java", "Main"] ``` 该Dockerfile使用openjdk:8-jdk-alpine作为基础镜像,将Java项目的源代码拷贝到/usr/src/myapp目录下,并在该目录下编译Main.java文件。最后,使用CMD命令运行Main类。 3. 构建Docker镜像:使用以下命令在Java项目的根目录下构建Docker镜像: ```bash sudo docker build -t myapp . ``` 其中,-t参数指定镜像名称为myapp,后面的.表示Dockerfile所在的目录。 4. 运行Docker容器:使用以下命令在Docker容器中运行Java应用程序: ```bash sudo docker run -it --rm myapp ``` 其中,-it参数表示以交互模式运行容器,--rm参数表示容器退出时自动删除,myapp是之前构建的镜像名称。 5. 测试Java应用程序:在容器中运行Java应用程序后,可以使用以下命令测试: ```bash curl http://localhost:8080 ``` 如果一切正常,应该会看到Java应用程序输出的信息。 注意:在构建Docker镜像时,需要将Java项目的依赖项打包到jar文件中,并将该jar文件拷贝到容器中。如果Java应用程序需要连接数据库等服务,则需要在Docker容器安装相应的驱动程序和服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值