
# 没有yum-config-manager命令的话
# yum -y install yum-utils
# 添加docker镜像地址
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装docker-ce , docker-cli (指定版本docker-ce-20.10.8 docker-ce-cli-20.10.8 containerd.io)
sudo yum -y install docker-ce docker-ce-cli containerd.io
# 启动docker
systemctl start docker
# 设置开机自启
systemctl enable docker
# 配置docker加速 (https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors)自行设置自己的
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ub3d38gx.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# 测试检测docker版本
[root@zhaoxingyu code]# docker -v
Docker version 20.10.8, build 3967b7d
设置拉取镜像
# 拉取最新版redis docker pull redis # 设置文件挂载目录的配置文件 mkdir -p /mydata/redis/conf touch /mydata/redis/conf/redis.conf # 设置数据redis数据持久化(开启AOF模式) echo "appendonly yes" >> /mydata/redis/conf/redis.conf # 设置redis认证密码(不设置也行) echo "requirepass zhao123456" >> /mydata/redis/conf/redis.conf # 启动redis (并设置redis.conf) docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf --restart=always -d redis redis-server /etc/redis/redis.conf编写代码
创建普通spring boot项目 引入 web 和 redis 依赖
编写controller
配置文件修改
server.port=6500 # redis 密码 spring.redis.password=zhao123456 # redis地址 spring.redis.host=101.132.248.90
启动项目测试index接口没有问题
打包构建启动编写简单Dockerfile
FROM openjdk:8u302-jdk-slim # 设置在容器中的其他引用 LABEL maintainer=zhaoxingyu COPY target/*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]
使用mvn package打包工具
target文件夹和Docker文件拷贝到服务器中
在当前目录执行
# 构建Dockerfile文件 docker build -t java-demo:1.0 . # 如果Dockerfile文件不在这个目录或者不是叫Dockerfile 可以通过-f /mydata/code/Dockerfile 指定位置
等待构建完成
[root@zhaoxingyu code]# docker build -t java-demo:1.0 . Sending build context to Docker daemon 27.29MB Step 1/4 : FROM openjdk:8u302-jdk-slim 8u302-jdk-slim: Pulling from library/openjdk bd897bb914af: Pull complete 0cc7fec72146: Pull complete 4bdb783f109f: Pull complete 4cee21827af0: Pull complete Digest: sha256:a954575c94c08ce01f273f1c69f93d1f213fce46381d8eba05f062db478bdbcd Status: Downloaded newer image for openjdk:8u302-jdk-slim ---> 99b31c7569d0 Step 2/4 : LABEL maintainer=zhaoxingyu ---> Running in ed198fde1700 Removing intermediate container ed198fde1700 ---> 36b967d986e0 Step 3/4 : COPY target/*.jar /app.jar ---> b9510edd5cfd Step 4/4 : ENTRYPOINT ["java","-jar","/app.jar"] ---> Running in 3d4b50258779 Removing intermediate container 3d4b50258779 ---> 3d2793ed75e4 Successfully built 3d2793ed75e4 Successfully tagged java-demo:1.0
启动镜像测试
docker run -d -p 6500:6500 java-demo:1.0
如果是云服务器设置安全组 暴露6500端口 (这里暴露的是6000-7000之间的端口,因为还要暴露redis端口)
推送到docker hub注册dockerhub
创建dockerhub的仓库
服务器登录dockerhub
# 登录输入用户名密码 docker login # (退出:docker logout)
设置本地镜像标签
docker tag java-demo:1.0 zhaoxingyudocker/java-demo:1.0
推送镜像
docker push zhaoxingyudocker/java-demo:1.0
等待推送完成
[root@zhaoxingyu code]# docker push zhaoxingyudocker/java-demo:1.0 The push refers to repository [docker.io/zhaoxingyudocker/java-demo] b21b45a4739d: Pushed 3b147e0af2a7: Mounted from library/openjdk 86b49f790727: Mounted from library/openjdk f7e816b93eb6: Mounted from library/openjdk a548c9107c3a: Mounted from library/openjdk 1.0: digest: sha256:e067d07df0f6da693df9702970ea4c69ec5f27f8af3a3517ce3b3e0a136ff729 size: 1372
推送完成
搜索自己的镜像
[root@zhaoxingyu code]# docker search zhaoxingyudocker NAME DEscriptION STARS OFFICIAL AUTOMATED zhaoxingyudocker/java-demo 这里是描述哦 0
# 拉取 docker pull zhaoxingyudocker/java-demo:1.0 # 运行 docker run -d -p 6500:6500 java-demo:1.0