下面是" Docker容器搭建并运行实现过程详解"的完整攻略,同时附上两个示例说明。
Docker容器搭建并运行实现过程详解
什么是Docker
Docker是一个开源的容器化平台,能够将应用程序及其依赖项放入一个容器中,以便在不同的环境中运行。它能够实现跨平台、轻量级、高效等特性,受到广泛的关注和应用。
容器与虚拟机的对比
Docker容器是轻量级的虚拟化方式,与传统虚拟机相比,它具有以下优点:
- 轻量级:Docker容器只需容器镜像和宿主机的一些控制信息就能运行,相较传统虚拟机所带的操作系统、内核等更轻量;
- 运行速度快:传统虚拟机的启动时间常常需要数分钟,而Docker容器则只需秒级别快速启动;
- 跨平台:Docker容器可以在不同的系统中运行,例如在一台Linux系统上创建的容器,在Windows或MacOS中同样可以运行;
- 隔离性强:Docker容器与宿主机相互隔离,容器之间也互相隔离。这意味着如果某个容器崩溃或出现问题,其他容器和宿主机不会受到影响。
Docker技术架构
Docker架构主要由以下几部分组成:
- Docker客户端:可以通过命令行或GUI与Docker服务器进行通信;
- Docker daemon(服务器):读取Dockerfile文件中的指令,在宿主机上生成Docker容器镜像,以及为Docker容器提供运行环境和管理容器;
- Docker Registry:管理Docker容器镜像,可用于共享和搭建私有Docker镜像库。
Docker的安装与配置
首先需要在官方网站中下载相应的Docker安装包(根据各个系统的不同)。下载地址:https://www.docker.com/products/docker-desktop
安装完成后配置Docker容器的镜像加速器,将镜像存储在使用镜像加速器到国内注册表中,可以使拉取拉取官方仓库中的镜像加速。具体配置方式如下:
- 在Docker Desktop的任务栏中找到“Settings”;
- 选择左侧菜单中的“Docker Engine”选项卡;
- 找到"registry-mirrors"配置,点击"+"添加mirror地址,如大致的中国区加速器有:
https://hub-mirror.c.163.com
https://docker.mirrors.ustc.edu.cn/
https://reg-mirror.qiniu.com/
- 完成后保存退出。
Docker的基本使用方法
创建Docker容器
Docker容器必须基于镜像创建,所以第一步必须先拉取或者创建一个容器镜像。docker run命令用于拉取镜像并在镜像基础上启动一个新容器。具体使用方法为:
sudo docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
- OPTIONS:启动容器时指定的一些选项参数;
- IMAGE:启动容器时使用的镜像名称或ID;
- COMMAND:容器启动后需要执行的命令;
- ARG:向容器中传递的参数。
例如,拉取并启动官方的hello-world
镜像,则可以输入以下命令:
sudo docker run hello-world
查看Docker容器
通过docker ps
命令可以查看当前正在运行的Docker容器,可以查看到容器ID、容器名称、状态、创建时间、端口信息等。具体使用方法为:
sudo docker ps [OPTIONS]
- OPTIONS:启动容器时指定的一些选项参数。例如"-a"选项,会显示所有的Docker容器信息。
例如,如果要查看当前正在运行容器的信息,可以输入以下命令:
sudo docker ps
启动、停止和重启Docker容器
使用docker start
命令可以启动一个当前未运行的Docker容器,使用docker stop
命令可以停止当前正在运行的容器,使用docker restart
命令可以重启一个容器。具体使用方法为:
sudo docker start|stop|restart CONTAINER_ID|CONTAINER_NAME
其中,CONTAINER_ID或CONTAINER_NAME为需要启动、停止或重启的容器ID或容器名称。
例如,如果要重启一个容器名为“web1”的容器,则可以输入以下命令:
sudo docker restart web1
示例1:搭建一个Node.js服务器
以下是搭建一个Node.js服务器的完整过程。
- 首先创建一个新的目录,用于存储项目文件,并切换到该目录,例如:
mkdir node-app && cd node-app
- 创建一个名为“Dockerfile”的文件,并在文件中写入以下内容:
FROM node:10
WORKDIR /app
COPY . /app
RUN npm install
EXPOSE 3000
CMD ["npm", "start"]
以上内容主要是:
- FROM node:10:从 Node.js 官方镜像中获取镜像,版本号位于 tags 中;
- WORKDIR /app:设置工作目录在容器的/app目录下;
- COPY . /app:将代码拷贝到容器中;
- RUN npm install:在容器中运行 npm install 安装依赖;
- EXPOSE 3000:将容器的 3000 端口暴露给主机;
-
CMD ["npm","start"]:以 npm start 命令来启动应用。
-
构建 Docker 镜像:
sudo docker build -t my-node-app .
-
-t my-node-app
:指定镜像的名称,". "表示当前目录下的 Dockerfile。 -
在本地运行 Node.js 服务:
sudo docker run -p 3000:3000 -d my-node-app
-p 3000:3000
:将容器的 3000 端口映射到主机的 3000 端口上;-
-d
:使用后台模式启动Docker容器。 -
用浏览器访问 http://localhost:3000/, 就可以看到Node.js服务器响应的内容了。
示例2:搭建一个MySQL服务器
以下是搭建一个MySQL服务器的完整过程。
- 创建一个目录,用于存储项目文件,并切换到该目录,例如:
mkdir mysql-server && cd mysql-server
- 获取 MySQL 镜像:
sudo docker pull mysql:latest
- 运行 MySQL,并设置 root 用户密码:
sudo docker run --name my-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
--name my-mysql
:指定容器的名称;-e MYSQL_ROOT_PASSWORD=my-secret-pw
:设置root账户密码;-
-d
:使用后台模式启动Docker容器。 -
编写一个应用程序,并使用 Docker 进行构建:
FROM node:10
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD [ "node", "index.js" ]
- 构建 Docker 镜像:
sudo docker build . -t my-app
.
:表示当前目录;-
-t my-app
:为镜像指定名称。 -
在运行的 MySQL 容器内创建一个数据库和表并添加数据:
sudo docker exec -it my-mysql bash
mysql -p
CREATE Database testdb;
USE testdb;
CREATE TABLE contacts (name VARCHAR(255), email VARCHAR(255));
INSERT INTO contacts VALUES ('Alice', 'alice@example.com');
INSERT INTO contacts VALUES ('Bob', 'bob@example.com');
exit;
-
-it my-mysql bash
:进入正在运行的MySQL容器的bash终端。 -
运行应用程序并连接到 MySQL 容器:
sudo docker run --name my-app --link my-mysql:mysql -p 8080:8080 -d my-app
mysq
l:在这个Docker容器中有mysql实例。-
-p 8080:8080
:设置端口映射。 -
用浏览器访问 http://localhost:8080/ ,可以看到 MySQL 数据库中添加的数据。
小结
通过以上步骤,我们可以了解到Docker以及Docker容器的基本知识,了解如何构建和运行Docker容器。使用Docker可以更快地开发、测试和部署应用程序,并更好地隔离容器。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker容器搭建并运行实现过程详解 - Python技术站