1 打包springboot項目 maven install ,打包為lib和jar

2 編寫Dockerfile文件
注意:此文件沒有后綴
FROM openjdk:8-jdk-alpine
ARG JAR_FILE
ARG LIB_FILE
ADD ${JAR_FILE} app.jar
ADD ${LIB_FILE} lib
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Duser.timezone=GMT+08"]
CMD ["-Xms512m","-Xmx512m","-jar","/app.jar"]
3 上傳Dockerfile, jar和lib到linux下,

4 cd 到 jar所在的目錄,執(zhí)行docker build命令
docker build -t discovery-eureka:1.0 --build-arg JAR_FILE=discovery-eureka-1.0-SNAPSHOT.jar --build-arg LIB_FILE=lib .
注意 最后的點不能少,表示當(dāng)前路徑
-t后面表示生成的鏡像名稱和版本
--build-arg后面是參數(shù)名稱,多個參數(shù)使用多個--build-arg
5 查看剛才的鏡像
docker images

6 創(chuàng)建并運行容器
docker run --name c-discovery -p 8081:8081 discovery-eureka:1.0
7 docker 查看日志
docker logs -f c-discovery
8 根據(jù)容器id停止、啟動容器
docker stop 4bb16cffaf9a
docker start 4bb16cffaf9a
docker啟動失敗問題:
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service” and “journalctl -xe” for details
通過 journalctl -xe 命令,顯示:
unable to configure the Docker daemon with file /etc/docker/daemon.json: invalid character '#' looking for beginning of object key string
重新編寫daemon.json文件,文件內(nèi)容為:
cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://registry.docker-cn.com"
],
"insecure-registries": [
"registry.docker-cn.com"
]
}
可以換成阿里云的鏡像
"insecure-registries":["registry.cn-hangzhou.aliyuncs.com"
冒號后面不能有空格
鏡像上傳到阿里云倉庫:
https://blog.csdn.net/qq_42266114/article/details/122846772
開啟防火墻:
systemctl start firewalld
firewall-cmd --reload
firewall-cmd --query-port=666/tcp 查看端口是否開放
提示 yes,表示開啟;no表示未開啟。
開放指定的端口
firewall-cmd --zone=public --add-port=8081/tcp --permanent
如果真的不希望docker被訪問自動喚醒,執(zhí)行 systemctl stop docker 后再執(zhí)行systemctl stop docker.socket即可
外面訪問docker映射端口不成功,還未解決?