彻底卸载
sudo yum remove -y docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker /etc/docker
安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加阿里云镜像源
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
安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
验证安装
docker version
在你本地编译并产生 JDK17+Springboot web 的Jar包
cd D:\workspace_java\jdk17Test\jdk17Test
mvn clean package -DskipTests
服务器上 - put the compiled file
服务器目录结构
/app/jdk17ApplicationJar
|-Dockerfile
|-jdk17Test-1.0-SNAPSHOT.jar
mkdir /app/jdk17Application
sftp root@192.168.98.157
put /d/workspace_java/jdk17Test/jdk17Test/target/jdk17Test-1.0-SNAPSHOT.jar /app/jdk17Application/
创建或修改配置文件
详见https://cloud.tencent.com/developer/article/25294185
sudo tee /etc/docker/daemon.json <<-‘EOF’
{
“registry-mirrors”: [
“https://docker-0.unsee.tech”,
“https://docker-cf.registry.cyou”,
“https://docker.1panel.live”
]
}
EOF
重启Docker生效
sudo systemctl daemon-reload
sudo systemctl restart docker
#编辑Dockerfile
FROM openjdk:17-jdk
VOLUME /tmp
COPY jdk17Test-1.0-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT [“java”, “-Djava.security.egd=file:/dev/./urandom”, “-jar”, “/app.jar”]
#编译,生成镜像,这个时候/etc/docker/daemon.json是否有效就很重要
docker build -t springboot-jdk17-app .
#创建网络
docker network create --driver bridge springboot-net
#启动镜像
docker run -d
–name springboot-container
–network springboot-net
-p 8081:8081
springboot-jdk17-app
#获取容器 IP
docker inspect -f ‘{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}’ springboot-container
#检查端口映射
docker port springboot-container 8081
#确认服务启动
docker logs -f springboot-container
#登录
response= ( c u r l − s − X P O S T h t t p : / / 172.18.0.2 : 8081 / a p i 1 / p u b l i c / l o g i n − H " C o n t e n t − T y p e : a p p l i c a t i o n / j s o n " − d ′ " u s e r n a m e " : " a d m i n " , " p a s s w o r d " : " a d m i n 123 " ′ ) j w t t o k e n = (curl -s -X POST http://172.18.0.2:8081/api1/public/login \ -H "Content-Type: application/json" \ -d '{"username":"admin", "password":"admin123"}') jwt_token= (curl−s−XPOSThttp://172.18.0.2:8081/api1/public/login −H"Content−Type:application/json" −d′"username":"admin","password":"admin123"′)jwttoken=(echo " r e s p o n s e " ∣ g r e p − o ′ " t o k e n " : " [ " ] ∗ " ′ ∣ s e d ′ s / " t o k e n " : " / / ; s / " response" | grep -o '"token":"[^"]*"' | sed 's/"token":"//;s/" response"∣grep−o′"token":"["]∗"′∣sed′s/"token":"//;s/"//')
echo $jwt_token
#访问容器中的API
curl -X GET “http://172.18.0.2:8081/api/books/author/John%20Doe” -H “Authorization: Bearer $jwt_token”
curl -X POST “http://172.18.0.2:8081/api/books/createBook” -H “Content-Type: application/json” -H “Authorization: Bearer $jwt_token” -d ‘{“title”:“Spring Boot Guide”,“author”:“John Doe”}’
#通过容器访问API
curl -X GET “http://localhost:8081/api/books/author/John%20Doe” -H “Authorization: Bearer $jwt_token”
curl -X POST “http://localhost:8081/api/books/createBook” -H “Content-Type: application/json” -H “Authorization: Bearer $jwt_token” -d ‘{“title”:“Spring Boot Guide”,“author”:“John Doe”}’
#查看容器运行状态
[root@localhost jdk17ApplicationJar]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
38f3f08ef048 springboot-jdk17-app “java -Djava.securit…” 17 minutes ago Up 17 minutes 8080/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp springboot-container
#启停容器并查看状态
docker stop springboot-container && docker rm springboot-container
docker stop 38f3f08ef048
docker start 38f3f08ef048
docker container logs 38f3f08ef048
#进入容器
docker exec -it 38f3f08ef048 /bin/bash