Docker简介:从入门到实践

1. 前言

Docker是一种开源的容器化平台,它可以让开发者将应用程序和其依赖的环境打包成一个独立的容器,然后可以在任何支持Docker的平台上运行。Docker的出现极大地简化了应用程序的部署和管理过程,大大提高了开发和运维的效率。

本文将介绍Docker的基本概念和使用方法,并通过实例来演示如何使用Docker构建和运行容器。

2. Docker的基本概念

2.1 镜像

Docker镜像是一个轻量级、自包含的文件系统,包含了运行一个软件所需的所有依赖和配置信息。一个镜像可以用来创建一个或多个容器。

使用Docker镜像可以方便地复制、分发和部署应用程序。Docker Hub是一个公共的镜像仓库,上面已经有了大量的镜像可以使用。

2.2 容器

容器是基于镜像创建的运行实例。一个容器包含了运行一个应用程序所需的所有内容,包括文件系统、环境变量、网络配置等。

容器是轻量级的,可以在几秒钟内启动和停止。每个容器是独立的,互相之间不会干扰。容器可以动态地调整资源占用,提高资源利用率。

2.3 仓库

Docker仓库是用来存储和分享镜像的地方。Docker Hub是一个公共的仓库,上面已经有了大量的镜像可以使用。除了公共仓库,也可以搭建私有仓库来存储自己的镜像。

3. Docker的安装和配置

3.1 安装Docker

根据操作系统的不同,可以选择不同的安装方式。以Ubuntu为例,可以通过以下命令来安装Docker:

sudo apt-get update
sudo apt-get install docker-ce

3.2 配置Docker

安装完成后,默认情况下只有root用户可以使用Docker命令。可以通过以下命令将当前用户加入到docker用户组,从而具备使用Docker的权限:

sudo usermod -aG docker $USER

重新登录后,即可使用Docker命令。

4. Docker的使用示例

4.1 运行第一个容器

我们以一个简单的Web应用为例来演示如何使用Docker。首先,我们需要一个Docker镜像,可以使用下面的命令从Docker Hub上下载一个Node.js的镜像:

docker pull node:14

下载完成后,可以使用下面的命令来运行一个容器并启动Web应用:

docker run -d -p 8080:8080 node:14 node -e "console.log('Hello, Docker!');"

上面的命令中,-d表示以后台模式运行容器,-p 8080:8080表示将容器内部的8080端口映射到主机的8080端口,node:14表示使用node:14镜像,node -e "console.log('Hello, Docker!');"表示运行一个Node.js程序。

运行成功后,可以通过访问http://localhost:8080来查看Web应用的输出。

4.2 构建自定义镜像

Docker不仅可以使用现有的镜像,还可以通过Dockerfile来构建自定义镜像。

下面是一个使用Dockerfile构建Node.js应用的示例:

# 使用Node.js 14作为基础镜像
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制package.json到工作目录
COPY package.json .

# 安装依赖
RUN npm install

# 复制所有文件到工作目录
COPY . .

# 暴露8080端口
EXPOSE 8080

# 运行应用
CMD