欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > Docker入门学习-01

Docker入门学习-01

2024/10/24 20:23:57 来源:https://blog.csdn.net/always_and_forever_/article/details/141865788  浏览:    关键词:Docker入门学习-01

Docker 官方文档

1. Docker 基础知识

1.1 什么是 Docker?

  • Docker 是一个开源的平台,用于开发、交付和运行应用程序。
  • 它使用容器技术,将应用程序及其依赖打包在一个轻量级的可移植容器中。

1.2 Docker 的主要组件

  • 镜像(Image): 只读的模板,包含运行应用程序所需的一切,包括代码、库、环境变量等。
  • 容器(Container): 镜像的运行实例,可以看作是一个轻量级的虚拟机,但它共享主机的操作系统内核。
  • Dockerfile: 定义镜像的文件,包含了一系列命令,Docker 可以根据这些命令构建镜像。
  • Docker Hub: 官方的镜像仓库,可以从中下载现成的镜像,或上传自己的镜像。

2. 环境准备

2.1 安装 Docker

  • 访问 Docker 官网,根据你的操作系统下载并安装 Docker。
  • 安装完成后,可以通过命令行运行 docker --version 来验证 Docker 是否正确安装。

3. 第一个 Docker 容器

3.1 运行 Hello World

docker run hello-world
  • 这个命令会从 Docker Hub 拉取 hello-world 镜像,并在容器中运行它。
  • 你会看到一条包含 “Hello from Docker!” 的消息,这意味着你的 Docker 安装成功,并且可以正确运行容器。

3.2 理解 docker run 命令

  • docker run:创建并启动一个新的容器。
  • hello-world:要运行的镜像名称。

4. Dockerfile 与自定义镜像

4.1 创建 Dockerfile

# 使用官方的 Node.js 镜像
FROM node:14# 创建并设置工作目录
WORKDIR /usr/src/app# 复制项目文件到工作目录
COPY . .# 安装项目依赖
RUN npm install# 暴露端口
EXPOSE 3000# 启动应用程序
CMD [ "npm", "start" ]
  • WORKDIR /usr/src/app:将容器内的工作目录设置为 /usr/src/app。接下来所有的 COPY、RUN 等命令都会基于这个目录执行。
  • COPY . .:将本地项目的所有文件复制到容器内的工作目录中。
  • RUN npm install:在容器内安装项目的依赖项。
  • CMD [“npm”, “start”]:设置容器启动时要执行的命令,这里是 npm start,它会启动 Node.js 应用。

4.2 构建镜像

docker build -t my-node-app .
  • -t my-node-app:指定镜像的名称。
  • .:指定 Dockerfile 所在的目录。

4.3 运行容器

docker run -p 3000:3000 my-node-app
  • -p 3000:3000:将主机的 3000 端口映射到容器的 3000 端口。
  • my-node-app:要运行的镜像名称。

4.4 访问应用

打开浏览器,访问 http://localhost:3000,应该可以看到页面显示 “Hello, Docker!”。

5. 完整实例

my-node-app/
│
├── Dockerfile
├── package.json
├── package-lock.json
└── index.js

index.js

const express = require('express');
const app = express();app.get('/', (req, res) => {res.send('Hello, Docker!');
});app.listen(3000, () => {console.log('Server is running on port 3000');
});

package.json

{"name": "my-node-app","version": "1.0.0","description": "A simple Node.js app to demonstrate Docker","main": "index.js","scripts": {"start": "node index.js"},"dependencies": {"express": "^4.17.1"}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com