Docker安装及基本操作

说明

本文介绍在 Docker 平台上部署 Java 版 EC 项目。Linux 有众多发行版,使用 Docker 部署可以使开发人员不受服务器环境的干扰,从而避免"本地可以,服务器上不行"的尴尬局面。运维人员使用 Docker 部署可以快速部署、迁移、缩扩容。
本文仅以 CentOS 为例介绍 Docker 平台上的部署方式。

 1、确认服务器上是否已安装 Docker

docker --version 

如果已安装会返回类似的内容:

 

2、下载安装包并上传到服务器执行命令

 

cd 到对应目录

rpm -ivh docker-ce-cli-18.09.8-3.el7.x86_64.rpm
rpm -ivh container-selinux-2.107-3.el7.noarch.rpm
rpm -ivh containerd.io-1.2.2-3.el7.x86_64.rpm
rpm -ivh docker-ce-18.09.8-3.el7.x86_64.rpm

 

3、修改默认路径。docker默认安装在根目录下,运行一段时间镜像、容器、日志等会占用大量磁盘,导致根目录磁盘不足。所以一般我们会将docker的存储路径进行修改。提供以下两种方式修改

方法一:通过修改docker默认存储位置实现

  • 打开/usr/lib/systemd/system/docker.service 文件,找到ExecStart配置项,在其后面加上 -g /vdb/lib/docker --log-opt max-size=50m --log-opt max-file=5,如图所示
    image.png
  • 重载配置文件
systemctl daemon-reload
  • 重启docker
systemctl restart docker

方法二:通过创建软连接实现(该方法无需修改docker配置)

  • 停止docker
systemctl stop docker
  • 如果已经出现了磁盘满的情况需要先将/var/lib/docker下的东西拷到新磁盘上,如果刚装的docker则忽略此步
cp -r /var/lib/docker /vdb/lib/
  • /vdb/lib/docker/创建软连接
ln -s /vdb/lib/docker/ /var/lib/
  • 重启docker
systemctl restart docker

6.修改docker服务开机自动启动

systemctl enable docker

构建容器镜像

  1. 下载helloworld.tar.gz,并在本地解压,得到以下内容
    image.png
  2. 替换 rest 目录下的 jar 包,假设项目的 jar 包名字是gdhz.jar
  3. 修改start.sh文件,将helloworld.jar修改为gdhz.jar,其他内容为默认设置,建议不要修改
    image.png
  4. 如果有独立配置文件,将其命名为application.properties,并替换config目录下的默认配置文件
  5. 将 config Dockerfile rest start.sh 几个文件夹和文件都上传到服务器上,并放在同一个目录里
  6. 登录服务器
  7. 进入上传的目录
  8. 输入命令开始构建镜像,java-helloworld:0.1代表的是镜像名:版本号,可以自行命名,但是不能有特殊字符和中文
    docker build ./ -t java-helloworld:0.1

创建并启动容器

docker run -d --name java-hello -p 8088:8080 java-helloworld:0.1

停止容器

docker stop java-hello

重启容器

docker restart java-hello

移除容器

docker rm java-hello

docker容器自动启动

# 启动容器时加 --restart=always # 如果已经启动的项目,则使用update更新 docker update --restart=always 容器名/容器id

更新升级

假设更新java-helloworld:0.2

1, 构建新容器

docker build ./ -t java-helloworld:0.2

2, 停止并移除旧容器

docker stop java-hello && docker rm java-hello

3, 创建并启动新容器

docker run -d --name java-hello -p 8088:8080 java-helloworld:0.2

4, 验证更新结果

  1. 更新成功: 无需操作
  2. 更新失败: 停止并移除新容器,创建并启动旧版本容器,
docker stop java-hello && docker rm java-hello docker run -d --name java-hello -p 8088:8080 java-helloworld:0.1

拓展

添加镜像库源

注意方法一与方法二不可同时存在!!!配置完成后需要重载配置,重启docker
方法一: /usr/lib/systemd/system/docker.service文件中添加--insecure-registry 122.112.162.230:2234
方法二: /etc/docker/daemon.json文件中添加{"insecure-registries":["192.168.242.132","10.3.13.184"]}

资源监控

docker stats

连接容器

docker exec -it <容器名/容器ID> /bin/bash

查看最后100行日志

docker logs --tail 100 <容器名/容器ID>

部署建议

以上更新方案在更新或失败后版本回退时,都需要短暂的停机,在需要高可用的场景下,可以使用 nginx 反向代理容器的接口,创建新容器时可以用其他端口,验证没有问题后,切换反向代理的端口,即可实现不停机无缝切换

posted on   五官一体即忢  阅读(44)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示