Docker搭建Java后端服务

2022/8/15

# Docker搭建Java后端服务

# 1.docker安装

# 1.1 查看docker是否安装

查看docker版本

docker -v

# 1.2 安装docker时yum包管理出现问题

https://blog.csdn.net/cheng_jeff/article/details/123642069 (opens new window)

# 1.2 卸载docker

sudo 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 镜像、容器、数据卷和网络数据都保存在 /var/lib/docker/。新的 Docker 引擎包现在为 Docker-ce

# 1.3 安装docker

警告:切勿在没有配置 Docker YUM 源的情况下直接使用 yum 命令安装 Docker.

配置阿里云docker yum源

# Set up repository

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

# Use Aliyun Docker

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

1.yum-util 提供yum-config-manager功能

sudo yum install -y yum-utils
2.设置yum源

sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

3.测试docker
sudo yum-config-manager --enable docker-ce-test

4.安装docker
sudo yum install docker-ce docker-ce-cli containerd.io

# 2.docker启动、停止

# 启动docker服务: 
systemctl start docker 
# 停止docker服务: 
systemctl stop docker 
# 重启docker服务: 
systemctl restart docker 
# 查看docker服务状态: 
systemctl status docker 
# 设置开机启动docker服务: 
systemctl enable docker

# 3.镜像

 #查看镜像可以使用如下命令: 
 docker images
#如果你需要从网络中查找需要的镜像,可以通过以下命令搜索:
 docker search 镜像名称

# 4.容器

# 4.1 查看容器
查看正在运行的容器使用命令:docker ps
查看所有容器使用命令:docker ps -a
参数说明:
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
–name :为创建的容器命名。
#可以按照镜像id删除镜像,命令如下: docker rmi 镜像id 12
-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件
映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射
# 4.2 查看容器ip
# 在linux宿主机下查看 mycentos3 的ip 
docker inspect mycentos3

# 4.3 启动与停止容器
 停止正在运行的容器:
docker stop 容器名称或者ID docker stop mycentos2 

#启动已运行过的容器:
docker start 容器名称或者ID docker start mycentos2

# 4.4 删除容器
#删除容器 
docker rm mycentos7

# 5 Docker 部署

镜像加速

https://yeasy.gitbook.io/docker_practice/install/mirror

# 5.1获取java镜像
#如果没有指定对应的版本,默认会获取版本为latest的镜像
docker pull java
# 5.2确认镜像下载成功
docker images
# 5.3执行启动Java容器
其中,–name后面的“java”是为容器指定了一个别名,而最后的那个“java”指的是下载镜像时的名称。
docker run -d -it --name java java
命令以及参数的含义:

run:启动一个镜像容器

-d:指定容器运行于后台

-it:-i 和 -t 的缩写;

-i:以交互模式运行容器,通常与 -t 同时使用

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

–name:指定容器名字,后续可以通过名字进行容器管理

# 6 查看Docker中的镜像运行情况

查询docker里已经运行的镜像
docker ps  

查看docker 里所有镜像 (包括没有启动的镜像)
docker ps -a   

# 7查看JDK版本

需要通过Java容器id进入容器里面

docker ps 获取Java容器id(docker attach id)

java -version
# 7.1 退出容器
  • 如果是通过 attach 进入的容器,在退出容器的时候,如果不想让容器停止运行的话,就不能使用exit命令或者Ctrl+D快捷键的形式退出,而是使用 Ctrl + P + Q 组合键退出容器
  • 如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是exec与attach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。(docker exec -it ccjava /bin/bash)

# 8.安装redis

# 8.1 拉取redis镜像

docker pull redis

# 8.2创建容器与操作容器
# 创建redis容器 
docker run -di --name=myredis -p 6379:6379 redis

#进入redis容器 
docker exec -it myredis /bin/bash

#进入redis安装目录 
cd /usr/local/bin
 
#连接redis 
./redis-cli

# 9安装MySQL

# 9.1拉取镜像

拉取MySQL最新镜像

docker pull mysql:latest
# 9.2 创建容器
# 创建mysql容器 
$ docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql
  • -p 代表端口映射,格式为 宿主机映射端口:容器运行端口
  • -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)
# 9.3 操作MySQL容器
# 进入MySQL容器 
docker exec -it mysql-test /bin/bash
 
# 登录容器里面的mysql 
mysql -u root -p

# 10 Docker镜像推送(push)到Docker Hub(最详细版)

https://blog.csdn.net/lxy___/article/details/105821141

# 11 简单的dockerfile

# 使用官方的Java 11镜像作为基础镜像
FROM openjdk:8-jdk-slim

# 设置工作目录
WORKDIR /app

# 将本地构建好的应用程序文件复制到镜像中
COPY target/docker-test-0.0.1-SNAPSHOT.jar /app/

# 暴露应用程序运行的端口
EXPOSE 8080

# 启动容器时执行的命令
CMD ["java", "-jar", "/app/docker-test-0.0.1-SNAPSHOT.jar"]

#docker build -t docker-test .
#这将会在当前目录中构建一个名为 my-spring-boot-app 的Docker镜像。然后,可以使用以下命令来运行该镜像:

# 12 构建镜像

这将会在当前目录中构建一个名为 my-spring-boot-app 的Docker镜像。然后,可以使用以下命令来运行该镜像:

docker build -t my-spring-boot-app .

# 13 启动容器

这将会在容器中启动Spring Boot应用程序,并将容器的端口 8080 映射到主机的端口 8080,使得应用程序可以在本地通过浏览器访问。请注意,在运行Docker容器时,需要将应用程序的端口映射到主机的端口,否则无法在本地访问应用程序。

docker run -p 8080:8080 my-spring-boot-app