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