环境准备:Linux基础命令回顾、安装虚拟机或云服务器、配置SSH远程连接、安装Docker和Docker Compose
说实话,很多新手一上来就急着写代码、配服务,结果卡在最基础的环境搭建上。我见过太多人花了两天时间装Docker,最后发现是网络源没配对。这一章,咱们就把这些「地基」打牢。
我会带你过一遍Linux常用命令、虚拟机/云服务器的选择、SSH配置,最后装上Docker和Docker Compose。嗯,每一步我都会穿插一些我踩过的坑,你跟着走就行。
2.1 Linux基础命令回顾
你可能会问:「我Windows/Mac用得好好的,为啥非要学Linux?」因为生产环境99%都是Linux。Docker原生跑在Linux内核上,Windows和Mac也是靠虚拟机套了一层。说白了,绕不开。
我个人习惯用Ubuntu 20.04/22.04 LTS,社区活跃、文档全、包管理方便。下面这几个命令,你最好练到肌肉记忆。
| 类别 | 命令 | 说明 |
|---|---|---|
| 文件操作 | ls -la、cd、pwd、cp -r、mv、rm -rf |
查看、切换、复制、移动、删除 |
| 权限管理 | chmod 755、chown user:group |
修改文件权限和所有者 |
| 文本编辑 | vim、nano、cat、tail -f |
编辑和查看日志 |
| 网络诊断 | ping、curl、netstat -tlnp、ss -tlnp |
检查连通性和端口监听 |
| 进程管理 | ps aux、top、kill -9 |
查看和终止进程 |
| 包管理 | apt update、apt install -y、apt upgrade |
Ubuntu软件安装与更新 |
apt update && apt upgrade -y。别问我为什么,有一次我忘了更新,装Docker时依赖冲突搞了半小时。
2.2 安装虚拟机或云服务器
你有两个选择:本地虚拟机(适合学习、测试)或云服务器(适合真实部署)。我建议你两个都试试,但初期用虚拟机成本更低。
2.2.1 本地虚拟机方案
我用的是VirtualBox + Vagrant。Vagrant能一键拉起虚拟机,省去手动安装系统的麻烦。
# 安装Vagrant后,创建一个项目目录
mkdir my-docker-lab && cd my-docker-lab
# 初始化一个Ubuntu 22.04虚拟机
vagrant init ubuntu/jammy64
# 启动虚拟机
vagrant up
# SSH登录
vagrant ssh
Vagrant会自动配置端口转发和共享目录。我个人习惯把项目代码放在宿主机,通过共享目录同步到虚拟机里改。
2.2.2 云服务器方案
如果你有云服务商账号(阿里云、腾讯云、AWS等),选一台2核4G的ECS或EC2就够了。系统选Ubuntu 22.04 LTS,安全组记得开放22端口(SSH)和后续会用到的端口(比如80、443、2375等)。
2.3 配置SSH远程连接
SSH是连接Linux服务器的标准方式。配置好了,你就能像操作本地电脑一样操作远程服务器。
2.3.1 生成SSH密钥对
在本地终端执行:
ssh-keygen -t ed25519 -C "your_email@example.com"
一路回车,会在 ~/.ssh/ 下生成 id_ed25519(私钥)和 id_ed25519.pub(公钥)。
2.3.2 将公钥复制到服务器
用 ssh-copy-id 一键搞定:
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@your-server-ip
如果没有这个命令,手动追加也行:
cat ~/.ssh/id_ed25519.pub | ssh user@your-server-ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
2.3.3 禁用密码登录(重要)
登录服务器,编辑SSH配置文件:
sudo vim /etc/ssh/sshd_config
找到并修改以下两行:
PasswordAuthentication no
PubkeyAuthentication yes
然后重启SSH服务:
sudo systemctl restart sshd
PermitRootLogin 设成了 no,结果自己也被踢出去了……还好有VNC控制台。
2.4 安装Docker和Docker Compose
终于到重头戏了。Docker的安装方式很多,我推荐用官方脚本,干净利落。
2.4.1 安装Docker Engine
# 更新包索引
sudo apt update
# 安装依赖
sudo apt install -y ca-certificates curl
# 添加Docker官方GPG密钥
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# 添加Docker仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后,验证一下:
sudo docker run hello-world
看到「Hello from Docker!」就说明成功了。
2.4.2 将当前用户加入docker组
每次敲 sudo docker 很烦,对吧?把用户加入docker组,就不用加sudo了:
sudo usermod -aG docker $USER
newgrp docker # 或者退出重新登录
2.4.3 安装Docker Compose
新版Docker已经内置了Compose插件(docker compose,注意没有横杠)。验证一下:
docker compose version
如果显示版本号(比如 v2.27.0),就OK了。如果你用的是旧版Docker,需要单独安装:
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2.5 本章知识体系总览
下面这张图帮你理清整个环境准备的流程和依赖关系:
2.6 验证环境
装完别急着走,跑几个命令确认一切正常:
# 检查Docker版本
docker --version
# 检查Docker Compose版本
docker compose version
# 运行一个Nginx容器测试
docker run -d -p 8080:80 --name test-nginx nginx:alpine
# 访问测试(在浏览器打开 http://你的IP:8080)
curl http://localhost:8080
# 清理测试容器
docker stop test-nginx && docker rm test-nginx
如果看到Nginx的欢迎页面,恭喜你,环境准备全部完成!
/etc/docker/daemon.json 里加了 "dns": ["8.8.8.8", "114.114.114.114"] 就好了。如果你也遇到类似问题,不妨试试。
好了,环境已经就绪。接下来,我们就可以正式开始服务化部署的实战了。