Docker容器搭建并运行实现过程详解

下面是" 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容器的镜像加速器,将镜像存储在使用镜像加速器到国内注册表中,可以使拉取拉取官方仓库中的镜像加速。具体配置方式如下:

  1. 在Docker Desktop的任务栏中找到“Settings”;
  2. 选择左侧菜单中的“Docker Engine”选项卡;
  3. 找到"registry-mirrors"配置,点击"+"添加mirror地址,如大致的中国区加速器有:
https://hub-mirror.c.163.com
https://docker.mirrors.ustc.edu.cn/
https://reg-mirror.qiniu.com/
  1. 完成后保存退出。

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服务器的完整过程。

  1. 首先创建一个新的目录,用于存储项目文件,并切换到该目录,例如:
mkdir node-app && cd node-app
  1. 创建一个名为“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服务器的完整过程。

  1. 创建一个目录,用于存储项目文件,并切换到该目录,例如:
mkdir mysql-server && cd mysql-server
  1. 获取 MySQL 镜像:
sudo docker pull mysql:latest
  1. 运行 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" ]
  1. 构建 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
  • mysql:在这个Docker容器中有mysql实例。
  • -p 8080:8080:设置端口映射。

  • 用浏览器访问 http://localhost:8080/ ,可以看到 MySQL 数据库中添加的数据。

小结

通过以上步骤,我们可以了解到Docker以及Docker容器的基本知识,了解如何构建和运行Docker容器。使用Docker可以更快地开发、测试和部署应用程序,并更好地隔离容器。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker容器搭建并运行实现过程详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Docker探索namespace详解

    Docker探索namespace详解 前言 Docker是目前最流行的容器化技术之一,它的核心技术之一就是使用namespace隔离不同的资源。在这篇文章中,我们将深入探索namespace的概念和与Docker的关联。 namespace是什么 在Linux中,namespace是一种机制,可以让系统中的不同进程看到不同的资源集合。一个进程的namesp…

    Docker 2023年5月16日
    00
  • 在Windows系统下安装docker窗口的配置过程

    安装Docker在Windows系统下需要经过以下几个步骤: 步骤1:下载Docker Desktop 首先去Docker官网下载Docker Desktop for Windows。根据自己的操作系统版本选择下载相应的安装文件。下载完毕后,双击打开安装程序。 步骤2:安装Docker Desktop 安装过程中,会出现一些提示框。根据提示依次操作即可,安装…

    Docker 2023年5月16日
    00
  • 详解docker中Dockerfile指令创建镜像

    下面我将为您详细讲解“详解docker中Dockerfile指令创建镜像”的完整攻略,包含两个示例。 什么是Dockerfile Dockerfile 是一种文本文件,其中包含构建 Docker 映像所需的所有命令和指令。您可以使用 Dockerfile 自动化 Docker 映像的创建过程。 Dockerfile指令 Dockerfile 包含许多指令,每…

    Docker 2023年5月15日
    00
  • Docker存储驱动之OverlayFS简介

      OverlayFS是一种和AUFS很类似的文件系统,与AUFS相比,OverlayFS有以下特性:   1) 更简单地设计;   2) 从3.18开始,就进入了Linux内核主线;   3) 可能更快一些。  因此,OverlayFS在Docker社区关注度提高很快,被很多人认为是AUFS的继承者。就像宣称的一样,OverlayFS还很年轻。所以,在生成…

    Docker 2023年4月11日
    00
  • 安装docker及在docker中安装python环境学

      写Kali的记录了,趁年底工作不忙,继续捡起!这次记录下kali安装Docker的过程,关于Docker自行百度,这次记录kali安装docker后,运行一个完整的漏洞靶场镜像系统环境:从官网上下载的kali-linux-2017.3-amd64.iso  重新在虚拟机上安装全新的kali,更新源使用的是中科大的更新源#中科大deb http://mir…

    Docker 2023年4月13日
    00
  • Docker开启远程安全访问的图文教程详解

    下面我来为您详细讲解一下这篇文章的完整攻略。 Docker开启远程安全访问的图文教程详解 简介 本文将详细介绍如何在使用 Docker 时开启远程安全访问,并提供两种示例来帮助您更好地理解。 步骤 修改 Docker daemon.json 文件 首先,使用以下命令找到 Docker 的配置文件 daemon.json: $ sudo find /etc/d…

    Docker 2023年5月15日
    00
  • Docker compose命令的使用

    #命令对象与格式 对于 Compose 来说,大部分命令的对象既可以是项目本身,也可以指定为项目中的服务或者容器。如果没有特别的说明,命令对象将是项目,这意味着项目中所有的服务都会受到命令影响。 执行 docker-compose [COMMAND] –help 或者 docker-compose help [COMMAND] 可以查看具体某个命令的使用格…

    Docker 2023年4月16日
    00
  • Docker 网络工作原理详解

    Docker 网络工作原理详解 Docker 网络是 Docker 中比较核心、也比较复杂的一个部分,本篇文章就来详细讲解 Docker 网络的工作原理。我们将先介绍 Docker 网络中的一些基本概念、网络模式,然后讲解 Docker 内置网络的实现原理、Docker 容器间的通信方式,最后通过两个示例演示 Docker 容器间的通信方式。 Docker …

    Docker 2023年5月16日
    00
合作推广
合作推广
分享本页
返回顶部