很多刚接触 Docker 的朋友会觉得容器这个概念有些抽象,其实你可以把它想象成一个轻量级的虚拟机,里面打包好了你的应用和它需要的所有依赖。今天我就带你从零开始,一步步学会如何使用 Docker 部署应用和管理镜像。
首先你得安装 Docker。在 Ubuntu 系统上,打开终端输入几条命令就能搞定。安装完成后,运行 docker version 确认安装成功。接下来我们从一个最简单的例子开始,拉取一个 nginx 镜像并在本地运行。输入 docker pull nginx 会从官方仓库下载最新的 nginx 镜像,这个过程可能需要几分钟,取决于你的网络速度。下载完成后,用 docker images 命令可以看到本地已经存在的镜像列表,里面应该有刚才下载的 nginx。
现在我们来运行这个镜像。输入 docker run -d -p 8080:80 nginx 这条命令,意思是以后台模式运行容器,把宿主机的 8080 端口映射到容器的 80 端口。运行后输入 docker ps 可以看到正在运行的容器,用浏览器访问 localhost:8080 就能看到 nginx 的欢迎页面了。这就是容器化部署最基础的操作,你的应用被隔离在容器里,不会污染宿主机的环境。
实际项目中,你肯定不想每次都手动敲命令,这时候就需要 Dockerfile 了。Dockerfile 是一个文本文件,里面记录了构建镜像的所有步骤。比如你要部署一个 Python 应用,可以创建一个 Dockerfile,第一行写 FROM python:3.9 指定基础镜像,然后用 COPY 命令把代码复制进去,再用 RUN 安装依赖,最后用 CMD 指定启动命令。写好 Dockerfile 后,在所在目录运行 docker build -t myapp . 就能构建出名为 myapp 的镜像。
镜像管理也很重要。随着项目迭代,本地会积累很多镜像,定期清理是必要的习惯。docker image prune 可以删除悬空镜像,加上 -a 参数会删除所有未被容器使用的镜像。如果你想把镜像分享给别人或者部署到服务器,可以用 docker push 推送到 Docker Hub 或其他镜像仓库,前提是先用 docker login 登录账号。
容器运行过程中,你可能需要查看日志或者进入容器内部调试。docker logs 容器 ID 可以查看输出日志,加上 -f 参数能实时跟踪。如果想进入容器内部,用 docker exec -it 容器 ID bash 就能获得一个交互式的命令行环境,就像 SSH 到一台远程服务器一样。
最后说说生产环境的部署建议。不要用 latest 标签,而是指定具体版本号,这样能保证部署的一致性。重要数据要挂载到宿主机,避免容器删除后数据丢失。生产环境建议用 docker-compose 来管理多个容器,一个 yaml 文件就能定义整个应用栈,启动和停止都非常方便。
Docker 的核心思想就是把应用和环境一起打包,走到哪里都能运行。多动手实践几次,你很快就会掌握这套工具,让它成为你部署应用的好帮手。