介绍
Docker 是一个开源的应用程序容器引擎,可以轻松地将应用程序打包、分发和运行在任何操作系统中。它有助于开发人员将应用程序与底层系统隔离,使得应用能够快速而可靠地在不同的环境中运行。
本篇攻略将带你学习 Docker 的基础知识,包括如何创建、运行、打包和检查 Docker 容器。同时,我们将会通过两个示例说明这些基础概念。
步骤
步骤一:安装 Docker
首先,我们需要在我们的计算机上安装 Docker。Docker 支持多种操作系统,包括 Windows、Mac 和 Linux。
对于 Windows 用户,可以在官网下载 Docker Desktop(https://www.docker.com/products/docker-desktop)并安装即可。
对于 Mac 用户,可以在官网下载 Docker Desktop(https://www.docker.com/products/docker-desktop)或者使用 Homebrew 安装 Docker。
对于 Linux 用户,可以在官网下载相应的包,并按照官网的说明进行安装。
步骤二:建立并运行一个 Docker 容器
我们将会使用一个示例来建立并运行一个 Docker 容器。首先,在我们的计算机上创建一个新目录:
mkdir mydocker
然后,我们需要在这个目录下创建一个名为 Dockerfile
的文件,文件内容如下:
FROM alpine:latest
RUN apk update && apk add python3
CMD ["python3"]
这个 Dockerfile 的作用是从 Alpine Linux 的官方仓库中下载最新的版本号,并安装 Python3。然后,它将会传入一个 CMD 指令来运行 Python3。
接下来,在命令行中输入以下命令:
docker build -t mypythonimage .
这条命令会将 Dockerfile 文件中的内容打包成一个名为 mypythonimage 的镜像,并将这个镜像存储在本地仓库中。
现在我们可以使用这个镜像来创建一个 Docker 容器。输入以下命令:
docker run -it mypythonimage
这条命令会在当前终端中启动一个新的交互式容器。你应该会看到一个 Python 3 的交互式界面,在这里你可以输入 Python 的命令进行交互式编程。
当你离开这个容器时,容器会自动停止。你可以随时通过 docker start
命令再次启动它。
步骤三:另外一个示例
我们将使用另一个示例来进一步了解 Docker。我们会使用一个 Node.js 的自定义 Docker 镜像,并制作一个简单的 web 应用程序。首先,你需要在计算机上安装 Git 和 Docker。
然后,我们需要在计算机上创建一个名为 myapp
的文件夹,并创建两个子文件夹 myapp
和 node_modules
:
mkdir myapp
cd myapp
mkdir myapp
mkdir node_modules
接下来,在文件夹 myapp
中创建一个名为 index.js
的文件,文件内容如下:
const http = require('http');
const hostname = '0.0.0.0';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
这个文件创建了一个 web 服务器,并监听端口 3000
。当你访问 http://localhost:3000
时,你应该会看到 "Hello World!" 字符串。
接下来,你需要在 myapp
文件夹中创建一个名为 package.json
的文件,并添加以下内容:
{
"name": "myapp",
"version": "1.0.0",
"description": "",
"main": "index.js",
"dependencies": {
"express": "^4.16.4"
},
"scripts": {
"start": "node index.js"
},
"author": "",
"license": "ISC"
}
这个文件会告诉 Docker 容器需要安装哪些 Node.js 模块,并提供了一个 start
脚本来启动服务器。
接下来,在 myapp
文件夹中创建一个 .dockerignore
文件,并添加以下内容:
node_modules
npm-debug.log
这个文件会告诉 Docker 容器不要复制 node_modules
目录和 npm-debug.log
文件。
最后,我们需要创建一个 Dockerfile 文件,并添加以下内容:
# 基于 Node.js LTS 版本建立自定义镜像
FROM node:lts-alpine
# 在容器中创建一个名为 /usr/src/app 的文件夹,并将其作为工作目录
WORKDIR /usr/src/app
# 拷贝源代码到工作目录
COPY ./myapp .
# 安装项目依赖
RUN npm install --production
# 暴露容器的 3000 端口
EXPOSE 3000
# 定义容器启动时运行的命令
CMD ["npm", "start"]
这个文件会告诉 Docker 使用 Node.js 的最新 LTS 版本作为基础镜像来构建自定义镜像,将工作目录设置为 /usr/src/app
,复制源代码到容器中,并安装项目依赖。最后,它会暴露容器的 3000 端口,并使用 npm start
命令来启动服务器。
接下来,在命令行中输入以下命令,构建我们的自定义镜像:
docker build -t mynodeapp .
最后,在命令行中输入以下命令,启动我们刚才构建的自定义镜像:
docker run -p 3000:3000 mynodeapp
这条命令会启动我们自定义镜像,并把容器的 3000 端口映射到主机的 3000 端口,这样你就可以在本地浏览器中访问 http://localhost:3000
来查看我们的 web 应用程序了。
结论
通过本文中的示例,我们可以了解 Docker 的基本操作流程。Docker 有很多强大的功能,比如容器的自动化部署和管理。Docker 还支持多个容器的互相通信,这使得它成为了一个非常适合微服务架构的工具。希望本文对学习 Docker 的同学有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:30分钟带你了解Docker(推荐) - Python技术站