Docker 新手实录:在云服务器上跑起我的第一个容器服务
Docker 新手实录:在云服务器上跑起我的第一个容器服务
作为一个之前只在本地虚拟机里敲过命令的学生,我一直对 Docker 有点发怵:概念听了不少,镜像、容器、仓库绕来绕去,真到动手就不知道从哪开始。这次趁着在云服务器上做实验的机会,我把 Docker 从安装到跑起一个真正的 Web 服务完整走了一遍,记录下来,给同样想入门的同学一个能照着做的版本。
一、准备工作
你需要一台 Linux 云服务器(我用的是华为云 ECS,系统 Debian/Ubuntu 都可以),能 SSH 登录上去就行。下面的命令以 Debian/Ubuntu 为例。
二、安装 Docker
一行官方脚本就能装好:
curl -fsSL https://get.docker.com | sudo sh
装完验证一下版本,并跑官方的测试镜像:
sudo docker --version
sudo docker run hello-world
如果终端打印出 “Hello from Docker!”,说明 Docker 已经在你的服务器上正常工作了。就这么简单,没有想象中的复杂配置。
三、跑起第一个真正的服务:Nginx
测试镜像只是打个招呼,接下来跑一个真能访问的 Web 服务:
sudo docker run -d --name myweb -p 8080:80 nginx
这条命令做了三件事:从仓库拉取 nginx 镜像(-d 表示后台运行)、给容器起名 myweb、把服务器的 8080 端口映射到容器里的 80 端口。
然后在浏览器打开 http://你的服务器公网IP:8080,看到 Nginx 的欢迎页,就说明你的第一个容器服务上线了。
四、我踩过的三个坑
坑 1:网页打不开,先查云平台的安全组。
容器明明在跑(docker ps 里好好的),浏览器就是访问不了。最后发现是云服务器的安全组没有放行 8080 端口——Docker 的端口映射只管服务器内部,云平台外面还有一道防火墙。要去控制台的安全组里把对应端口加进入方向规则,这是新手最容易漏的一步。
坑 2:每次命令都要敲 sudo。
Docker 守护进程默认只有 root 能访问。可以把当前用户加入 docker 组免 sudo:
sudo usermod -aG docker $USER
重新登录后生效。不过要提醒:docker 组的权限约等于 root,自己的服务器图方便没问题,生产环境请谨慎。
坑 3:改了网页,重启容器后又没了。
容器里改的东西,容器一删就没了。要让数据活下来,用 -v 把服务器目录挂载进容器:
sudo docker run -d --name myweb -p 8080:80 -v /data/web:/usr/share/nginx/html nginx
把你的网页文件放在服务器的 /data/web 里,容器删了重建,网页还在。
五、常用命令速记
| 命令 | 作用 |
|---|---|
docker ps |
看正在运行的容器 |
docker ps -a |
看所有容器(包括停了的) |
docker images |
看本地镜像 |
docker logs 容器名 |
看容器日志(排障第一步) |
docker stop/start 容器名 |
停/启容器 |
docker rm 容器名 |
删除容器 |
docker exec -it 容器名 sh |
进入容器内部看看 |
六、小结
一圈走下来,我对 Docker 的理解变成了很实在的一句话:镜像是模板,容器是跑起来的实例,端口映射把它接到外面的世界,挂载让它记住东西。 以前记不住的概念,动手跑一遍就全通了。
下一步我打算学 Docker Compose,把多容器的服务用一个配置文件管起来。如果你也在入门 Docker,建议就从"装好它、跑起一个 Nginx、故意踩一次安全组的坑"开始,比看十篇概念文章都管用。
欢迎在评论区交流,你踩过的第一个 Docker 坑是什么?
- 点赞
- 收藏
- 关注作者
评论(0)