本文写于 2024年7月5日20:28:33
作者@KarrySmile
1. 步骤
整个过程可以分成两步
- 部署一台新的虚拟机
-
- 下载安装好 docker
- 本地文件打 jar 包上传到服务器
-
- 利用 dockerfile 制作容器,启动容器
2. 部署虚拟机
2.1. 下载镜像
首先 centos7 的用户注意了,Centos7 在 2024 年 6 月 30 号停止了维护,然后腾讯阿里等对应的 yum 源支持也停止了。建议不要选 Centos7 安装。
我在腾讯云服务器上面用的是 OpenCloudOS9,感觉和 Centos 使用体验是很一致的。
我选的是这个版本
2.2. 安装镜像
本节内容修改自笔记《Linux 环境搭建》by 黑马-张虎翼
特别注意:
- 网络设置部分一定要根据自己的主机来安装,配合之前安装 vm 的经验。
- 有三个地方是需要自己写的。网关,子网掩码,虚拟机 ip 地址。
- 比如我这个电脑,vmnet8 的网关地址为 192.168.64.2,子网掩码是 255.255.255.0。我就给它配的 ip 地址是 192.168.64.10
2.2.1. 创建虚拟机
我们在VMware《主页》界面中点击《创建新的虚拟机》按钮:
然后会弹出一个窗口,我们直接点击下一步:
然后页面中选择你准备好的ISO文件,继续点击下一步:
然后填写虚拟机的名称以及虚拟机将来保存的位置:
再次下一步,填写虚拟机磁盘大小。这里建议给大一点,否则将来不够用调整起来麻烦。而且这里设置大小并不是立刻占用这么多,而是设置一个上限:
继续下一步,然后选择虚拟机硬件设置:
在弹出的窗口中设置虚拟机硬件,建议CPU给到4核,内存给到8G:
配置完成后,点击关闭,回到上一页面,继续点击完成:
虚拟机就创建完毕了:
2.2.2. 安装 OpenCloudOS8
接下来,我们启动刚刚创建的虚拟机,开始安装Centos7系统:
启动后需要选择安装菜单,将鼠标移入黑窗口中后,将无法再使用鼠标,需要按上下键选择菜单。选中Install Centos 7 后按下回车:
然后会提示我们按下enter键继续:
过一会儿后,会进入语言选择菜单,这里可以使用鼠标选择。选择中文-简体中文,然后继续:
接下来,会进入安装配置页面:
鼠标向下滚动后,找到系统-安装位置配置,点击:
选择刚刚添加的磁盘,并点击完成:
然后回到配置页面,这次点击《网络和主机名》:
在网络页面做下面的几件事情:
- 修改主机名为自己喜欢的主机名,不要出现中文和特殊字符,建议用localhost
- 点击应用
- 将网络连接打开
- 点击配置,设置详细网络信息
最好用一个截图软件,记住上图中的网络详细信息,接下来的配置要参考:
点击配置按钮后,我们需要把网卡地址改为静态IP,这样可以避免每次启动虚拟机IP都变化。所有配置照搬你自己截图的网络信息填写,不要照抄我的:
上图中的四个信息参考之前的以太网(ens33)网卡的截图,不要照搬我的来写。
最后,点击完成按钮:
回到配置界面后,点击开始安装:
接下来需要设置root密码:
填写你要使用的root密码,然后点击完成:
接下来,耐心等待安装即可。
等待安装完成后,点击重启:
耐心等待一段时间,不要做任何操作,虚拟机即可启动完毕:
输入用户名root,然后点击回车,会要求你输入密码:
此时你要输入密码,不过需要注意的是密码是隐藏的,输入了也看不见。所以放心输入,完成后回车即可:
只要密码输入正确,就可以正常登录。此时可以用命令测试虚拟机网络是否畅通:
ping baidu.com
如果看到这样的结果代表网络畅通:
默认ping命令会持续执行,按下CTRL + C后命令即可停止。
2.2.3. 设置虚拟机快照
在虚拟机安装完成后,最好立刻设置一个快照,这样一旦将来虚拟机出现问题,可以快速恢复。
我们先停止虚拟机,点击VMware顶部菜单中的暂停下拉选框,选择关闭客户机:
接着,点击VMware菜单中的🔧按钮:
然后在弹出的快照管理窗口中,点击拍摄快照,填写新的快照信息:
快照拍摄完成了!而且我们可以在不同阶段拍摄多个不同快照作为备份,方便后期恢复数据。
假如以后虚拟机文件受损,需要恢复到初识状态的话,可以选中要恢复的快照,点击转到即可:
2.3. 安装 docker
本节内容修改自笔记《安装 docker》by 黑马-张虎翼
2.3.1. 卸载旧版
首先如果系统中已经存在旧的Docker,则先卸载:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
2.3.2. 配置Docker的yum库
首先要安装一个yum工具
yum install -y yum-utils
安装成功后,执行命令,配置Docker的yum源:
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.3.3. 安装Docker
最后,执行命令,安装Docker
yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
2.3.4. 启动和校验
# 启动Docker
systemctl start docker
# 停止Docker
systemctl stop docker
# 重启
systemctl restart docker
# 设置开机自启
systemctl enable docker
# 执行docker ps命令,如果不报错,说明安装启动成功
docker ps
2.3.5. 配置镜像加速
具体命令如下:
# 创建目录
mkdir -p /etc/docker
# 测试过2024年7月5日还可以用,后面可能源又不行了
# 复制内容
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://mirror.ccs.tencentyun.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"http://hub-mirror.c.163.com",
"https://dockerhub.azk8s.cn",
"https://registry.cn-hangzhou.aliyunes.com"
],
"max-concurrent-downloads":1
}
EOF
# 重新加载配置
systemctl daemon-reload
# 重启Docker
systemctl restart docker
2.3.6. 命令别名
修改了之后,就可以按 dis 来快速查看已经有的镜像,按 dps 快速查看正在跑的容器
# 修改/root/.bashrc文件
vi /root/.bashrc
# 添加中间那两行,按i进入编辑模式,方向键到指定位置,粘贴,后按ESC,再输入英文状态下的":wq",回车
# .bashrc
# User specific aliases and functions
alias rm='rm -i'
alias cp='cp -i'
alias mv='mv -i'
alias dps='docker ps --format "table {{.ID}}\t{{.Image}}\t{{.Ports}}\t{{.Status}}\t{{.Names}}"'
alias dis='docker images'
# Source global definitions
if [ -f /etc/bashrc ]; then
. /etc/bashrc
fi
# 激活修改的内容
source /root/.bashrc
3. 用 docker 部署项目
3.1. 上传 jar 包,制作镜像
3.1.1. 打 jar 包
先 clean,后 package
3.1.2. 利用 dockerfile 制作镜像
新建一个 docker 文件夹,新建一个文件 Dockerfile,首字母大写。
FROM anapsix/alpine-java:8_server-jre_unlimited
#语言字符,解决乱码问题
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
ENV LANGUAGE C.UTF-8
#时区及时间,不设置会影响活动的开始结束
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#将springboot的jar包打入镜像
COPY api-0.0.1-SNAPSHOT.jar /opt/ROOT.jar
WORKDIR /opt
#启动命令,注意环境配置 prod
CMD sleep 20;java -Djava.security.egd=file:/dev/./urandom -jar ROOT.jar --spring.profiles.active=prod
把 jar 包拖到 docker 目录下,把整个 docker 文件夹上传到服务器,进入文件夹内,执行命令
docker run -d \
--name lottery-backend \
-p 8888:8888 \
-e TZ=Asia/Shanghai \
lottery-backend:1.0
执行命令 dis,应该拥有如下的包
3.2. 容器的其他操作指令-误操作就看这里
**列出所有的容器 ID**
docker ps -aq
-a, --all Show all containers (default shows just running)
-q, --quiet Only display numeric IDs
**停止所有的容器**
docker stop $(docker ps -aq)
**删除所有的容器**
docker rm $(docker ps -aq)
**删除所有的镜像**
docker rmi $(docker images -q)