Docker 入门:告别“在我电脑上可以运行”的魔咒

什么是 Docker?为什么它如此重要?ur1cb.hsd-stone.com

在软件开发中,一个经典的难题是环境不一致导致的 bug:代码在开发者的电脑上运行正常,但在测试或生产环境就出现问题。Docker 就是为了解决这个问题而生的。它是一个开源的容器化平台,能将你的应用程序及其所有依赖(如库、系统工具、代码运行时)打包到一个轻量级、可移植的“容器”中。这个容器可以在任何支持 Docker 的机器上运行,确保了环境的一致性。31hck.hsd-stone.com

# 在终端中运行此命令,检查你的 Docker 是否已正确安装
docker --version

你的第一个 Dockerfile:构建镜像的蓝图x4uuq.hsd-stone.com

镜像是 Docker 的核心概念之一,它是一个只读的模板,用于创建容器。而 Dockerfile 就是一个文本文件,包含了构建 Docker 镜像所需的所有指令。它就像是容器的“源代码”,定义了容器内部的环境。让我们为一个简单的 Node.js 应用创建一个 Dockerfileckp18.hsd-stone.com

# 使用官方的 Node.js 运行时作为基础镜像
FROM node:18-alpine

# 在容器内设置工作目录
WORKDIR /usr/src/app

# 将 package.json 和 package-lock.json 复制到工作目录
COPY package*.json ./

# 安装应用依赖
RUN npm install

# 将应用源代码复制到工作目录
COPY . .

# 暴露应用运行的端口
EXPOSE 8080

# 定义容器启动时运行的命令
CMD [ "node", "app.js" ]

构建你的第一个 Docker 镜像ydiczgjzhhd2.www.sxkjsm.com

有了 Dockerfile 这个蓝图之后,我们就可以使用 docker build 命令来构建镜像了。这个命令会读取 Dockerfile 中的指令,并一步步地执行,最终生成一个包含我们应用程序的 Docker 镜像。我们通常使用 -t 标签来给镜像命名,方便后续使用。4gt39swalf2.www.sxkjsm.com

# 在你的项目根目录(包含 Dockerfile 的地方)运行此命令
# -t 标签给镜像打上一个名为 "my-node-app" 的标签
# . 表示构建上下文为当前目录
docker build -t my-node-app .

从镜像运行容器yosc3xw.www.sxkjsm.com

镜像构建完成后,它本身只是一个静态的文件。我们需要通过 docker run 命令来创建并启动一个基于该镜像的、正在运行的实例,也就是容器。使用 -p 标签可以将容器内部的端口映射到主机的端口,这样我们就可以通过主机的浏览器访问容器内的应用了。mrhr3o5k65llhf.www.sxkjsm.com

# 运行容器
# -d 表示在后台运行
# -p 3000:8080 将主机的 3000 端口映射到容器的 8080 端口
# my-node-app 是我们之前构建的镜像名称
docker run -d -p 3000:8080 my-node-app

管理你的容器和镜像qkk21dp1zby.www.sxkjsm.com

随着你使用 Docker 的频率增加,你的系统上会积累越来越多的容器和镜像。学会如何管理它们至关重要。你可以使用 docker ps 查看正在运行的容器,使用 docker stop 停止容器,使用 docker images 查看本地所有镜像,并使用 docker rmdocker rmi 来删除不再需要的容器和镜像,以释放磁盘空间。hr5qpq7kna265.www.sxkjsm.com

# 查看当前正在运行的容器
docker ps

# 查看所有容器(包括已停止的)
docker ps -a

# 停止一个正在运行的容器(使用容器 ID)
docker stop <container_id>

# 查看本地所有镜像
docker images

# 删除一个容器(必须先停止)
docker rm <container_id>

# 删除一个镜像
docker rmi <image_id>

全部评论

相关推荐

重生之我在潮汐监狱当...:两个工作一天回家后,都只想躺着,什么都不想干
点赞 评论 收藏
分享
在写周报的打工人很独...:这个笔试昨天晚上做了一下,真难啊,前后端,ai全有
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务