书籍目录
1- Docker简介-什么是Docker?
2- Docker简介-Docker组件
3- Docker简介-Docker的用途
4- Docker简介-资料站
5- Docker安装
6- Docker安装-Ubuntu或者Debian安装Docker
7- Docker安装-CentOS安装Docker
8- Docker安装-macOS 安装 Docker
9- Docker安装-Windows 安装 Docker
10- Docker使用-确认Docker正在工作
11- Docker使用-我们的第一个容器
12- Docker使用-与容器进行交互
13- Docker使用-以后台进程形式存在的容器
14- Docker使用-Docker 镜像
15- Docker使用-Dockerfile
16- Docker使用-通过端口访问Docker容器
17- 容器运行-运行CentOS、Ubuntu容器
18- 容器运行-运行Nginx容器
19- 容器运行-运行Apache容器
20- 容器运行-运行MySQL容器
21- 容器运行-运行Node.js容器
654
轻松驾驭 Docker
限时免费
共21小节
学习Docker是一个很好的选择,它是一种开源的容器化平台,可以帮助开发人员更轻松地构建、部署和运行应用程序。通过使用Docker,你可以将应用程序及其依赖项打包到一个独立的容器中,使得应用程序在不同的环境中具有一致的运行结果。
离线

Ace_Biubiu

咨询作者

1- 什么是Docker?

什么是Docker?

Docker是一种流行的开源容器化平台,由一群技术专家在2014年共同开发。它的出现解决了传统虚拟机技术中存在的一些问题,例如复杂的操作和较高的运行成本。

Docker的主要特点是使用容器来打包应用程序及其依赖项,并且在不同的环境中都能够保持一致的状态。相比传统虚拟机,Docker的容器更加轻量级、高效,启动和停止速度更快,并且能够在更少的资源下运行。

此外,Docker的容器内部和外部环境隔离,能够有效避免应用程序之间的冲突和影响。这也为应用程序的开发、测试和部署提供了更高的可移植性和可靠性。

Docker还拥有一个庞大的社区,提供了大量的Docker镜像和插件,可以方便地在不同的环境中使用。此外,Docker还提供了完善的生态系统,包括Docker Hub、Docker Compose和Docker Swarm等工具,使得开发人员和运维人员能够更加高效地使用和管理Docker容器。

总的来说,Docker的出现为应用程序的开发、测试和部署提供了更高的可移植性和可靠性,同时也提高了开发人员和运维人员的工作效率。因此,Docker已经成为了当今最流行的容器化平台之一。

Docker的主要特点

  1. 容器化:Docker使用容器来打包应用程序及其依赖项,可以快速创建和部署相同的环境,而无需关心底层系统和环境的差异。

  2. 轻量级:Docker容器相对于传统的虚拟机来说,更轻量级、更高效,可以快速启动和停止,减少了系统资源的浪费。

  3. 隔离性:Docker容器内的应用程序可以与外部环境隔离,从而避免了应用程序之间的冲突和影响。

  4. 易于部署:Docker容器可以在任何地方运行,只需要有相应的环境即可,从而实现了快速部署和快速扩展。

  5. 社区支持:Docker拥有庞大的社区支持,有很多优秀的Docker镜像和插件可供使用。

2- Docker 组件

客户端

Docker 客户端是指使用 Docker 命令行工具或图形化界面工具来管理 Docker 容器的工具。通过 Docker 客户端,用户可以创建、运行、停止、删除和检查 Docker 容器的状态等操作。Docker 客户端支持 Windows、Mac 和 Linux 等多个操作系统,用户可以根据自己的操作系统选择相应的客户端。

服务器

Docker 服务器是指用于运行 Docker 容器的主机系统。在 Docker 服务器上,用户可以运行 Docker 命令行工具来管理容器,或者使用 Docker Desktop 等图形化界面工具来管理容器。Docker 服务器需要一定的计算资源和网络带宽来支持 Docker 容器的运行。

镜像

Docker的基础是Docker镜像。镜像是一种可重复使用的软件包,它将应用程序及其所有依赖项打包在内,从而提供快速启动的应用程序。Docker的优点在于其轻量级和高度可重复使用的特性,这使得Docker镜像成为构建、共享和部署应用程序的理想选择。

Registry

Registry是Docker容器仓库的管理和存储系统。它允许开发人员将Docker镜像存储在中央存储库中,并在需要时将其提供给其他人或团队。它是Docker生态系统中的重要组成部分,因为它允许Docker镜像的管理、备份、分发和存储。使用Docker Registry,您可以轻松地将Docker镜像从本地存储库或其他服务器上传到中央存储库中,并允许其他人或团队下载和使用这些镜像。Docker Registry还支持各种身份验证和授权选项,以确保安全和保护Docker镜像。

容器

Docker容器具有独立于宿主机的隔离性,使得不同的应用程序可以在同一台服务器上运行,而不会相互干扰。

Docker容器可以运行在各种操作系统上,包括Windows、Linux、macOS等。它们可以轻松地在云环境中部署,也可以在本地环境中使用。

以上就是Docker组件的五个主要组成部分:客户端、服务器、镜像、Registry和容器。这些组件协同工作,为开发人员提供了一个可靠的容器化平台,可以轻松地构建、运行、部署和管理应用程序。

其中,客户端是Docker最重要的组件之一,它允许用户通过命令行或图形化界面工具来管理Docker容器。Docker客户端提供了一个简单、直观的用户界面,使得用户可以方便地创建、运行、停止、删除和检查Docker容器的状态等操作。Docker客户端支持多种操作系统,包括Windows、Mac和Linux等,因此用户可以根据自己的需求选择最适合自己的客户端。

另外,Docker服务器是Docker容器的运行环境,它允许用户在主机系统上运行Docker命令行工具或使用图形化界面工具来管理容器。Docker服务器需要一定的计算资源和网络带宽来支持Docker容器的运行,因此用户需要在选择Docker服务器时考虑自己的需求和资源情况。

Docker镜像是Docker的基础,它是一种可重复使用的软件包,包括应用程序及其所有依赖项。Docker镜像的优点在于其轻量级和高度可重复使用的特性,这使得Docker镜像成为构建、共享和部署应用程序的理想选择。Docker Registry是Docker容器仓库的管理和存储系统,它允许开发人员将Docker镜像存储在中央存储库中,并在需要时将其提供给其他人或团队。使用Docker Registry,用户可以轻松地将Docker镜像从本地存储库或其他服务器上传到中央存储库中,并允许其他人或团队下载和使用这些镜像。

Docker容器是一种独立于宿主机的隔离性环境,它可以运行在各种操作系统上,包括Windows、Linux、macOS等。Docker容器具有许多有用的功能,例如隔离性、自动化和快速启动等,使得用户可以轻松地构建、运行、部署和管理应用程序。

3- Docker 的用途

用途

Docker 是一个快速增长的开源容器化平台,它已经成为开发者和运维人员构建、发布和部署应用程序的首选工具之一。Docker 提供了许多有用的功能和优点,这些功能和优点使得它成为了一个受欢迎的工具。

首先,Docker 容器的轻量级和高效性是其最大的优点之一。相比于传统的虚拟机,Docker 容器的启动和停止时间更短,占用的资源更少,因此可以提高应用程序的响应速度和效率。Docker 容器还可以实现快速启动和快速扩展,从而提高应用程序的可伸缩性和可靠性。

其次,Docker 容器的隔离性也是其优点之一。Docker 容器内的应用程序可以与外部环境隔离,从而避免了应用程序之间的冲突和影响。这也使得Docker容器可以更加安全地运行,因为应用程序不会直接与操作系统或其他应用程序发生交互。

其他的功能和优点

此外,Docker 还提供了许多其他的功能和优点,例如:

  1. 方便的打包和部署:Docker 可以将应用程序及其依赖项打包成一个可移植的容器,使得应用程序可以轻松地部署到任何支持 Docker 的环境中。通过 Dockerfile 的编写和构建,开发人员可以轻松地将应用程序打包成一个稳定、可靠的交付包。

  2. 支持多种操作系统:Docker 容器可以在多种操作系统上运行,包括Windows、Linux、macOS等。这使得开发人员可以在不同的操作系统上开发、测试和部署应用程序,从而提高了应用程序的可移植性和可扩展性。

  3. 高度的可重复使用性:Docker 镜像是一种可重复使用的软件包,它将应用程序及其所有依赖项打包在内,从而提供快速启动的应用程序。Docker 的优点在于其轻量级和高度可重复使用的特性,这使得Docker镜像成为构建、共享和部署应用程序的理想选择。

  4. 安全性:Docker 容器的隔离性可以帮助应用程序更加安全地运行,因为应用程序不会直接与操作系统或其他应用程序发生交互。此外,Docker 还提供了许多身份验证和授权选项,以确保安全和保护Docker镜像。

  5. 开放源代码:Docker 是一个开源项目,它提供了丰富的文档和社区支持。这使得开发人员可以更轻松地学习和使用Docker,同时也为Docker的发展提供了源源不断的动力。

总之,Docker 容器化的方式已经成为开发者和运维人员构建、发布和部署应用程序的首选工具之一。Docker 的轻量级、高效性、隔离性、可重复使用性和安全性等优点,使得它成为一个受欢迎的工具。随着Docker技术的不断发展和完善,它将继续成为开发者和运维人员的得力助手,帮助他们构建更加稳定、可靠、高效和安全的应用程序。

4- 资料站

以下是10个 Docker 资源网站,并附有它们的域名:

1. Docker Hub (https://hub.docker.com)

这是 Docker 官方的持续交付和部署平台,用户可以在上面托管和分享 Docker 镜像。

2. Docker Compose (https://docs.docker.com/compose/)

这是一个基于 Docker 的容器编排工具,可以帮助用户轻松地创建和运行多个 Docker 容器的应用程序。

3. Docker Swarm (https://docs.docker.com/swarm/)

这是一个微服务容器编排平台,可以帮助用户在集群中部署和管理多个 Docker 容器。

4. Dockerfile.io (https://www.dockerfile.io/)

这是一个 Dockerfile 指南网站,提供了 Dockerfile 的详细说明和示例。

5. Docker for Mac (https://www.docker.com/docker-for-mac)

这是 Docker 官方的 macOS 应用程序,可以让用户轻松地安装、管理和运行 Docker 容器。

6. Docker for Windows (https://www.docker.com/docker-for-windows)

这是 Docker 官方的 Windows 应用程序。

7. Docker Linux (https://www.docker.com/linux)

这是 Docker 官方的 Linux 应用程序。

8. Docker Tips (https://www.docker.com/docker-tips)

这是 Docker 官方的技巧和最佳实践网站,提供了一些有用的 Docker 指南和示例。

9. Dockerize (https://dockerize.com/)

这是一个 Docker 应用程序生成器,可以帮助用户将 Web 应用程序转换为 Docker 容器。

10. Docker Datacenter (https://www.docker.com/datacenter)

这是 Docker 官方的企业级容器平台,可以帮助用户构建、管理和运行容器化的企业应用程序。

5- Docker 安装

可安装Docker的操作系统

Docker 可以安装在多种操作系统中,包括但不限于:

  1. Windows 10

  2. Windows Server 2019

  3. macOS Catalina 或更高版本

  4. Linux 发行版,如 Ubuntu、Debian、Fedora、Red Hat Enterprise Linux、CentOS、OpenSUSE 等。

  5. Android 11 或更高版本

  6. iOS 13 或更高版本

不同操作系统和版本的 Docker 可能会有不同的安装和配置要求。在安装和配置 Docker 之前,需要确保操作系统和版本满足 Docker 的最低要求。

安装Docker的先行条件

  1. 操作系统:Docker支持多种操作系统,包括Linux、Windows、macOS等。在安装Docker之前,您需要确保您的操作系统符合Docker的要求,目前Docker只支持64位操作系统。

  2. 虚拟机或容器化平台:Docker本身就是一个容器化平台,但如果您使用的是虚拟机,您需要确保虚拟机具有足够的资源来运行Docker。如果您使用的是容器化平台,如Kubernetes、Docker Compose等,您需要确保它们支持Docker。

  3. 存储空间:Docker需要一定的存储空间来存储镜像和容器。您需要确保您的系统具有足够的存储空间来支持Docker。

  4. 网络连接:Docker需要与互联网连接以下载镜像和使用其他Docker功能。如果您没有连接到互联网,您可能无法安装Docker或使用其他Docker功能。

6- Ubuntu或者Debian安装Docker

支持安装Docker的Ubuntu版本

Docker Engine-Community 目前支持的 Ubuntu 版本包括以下内容:

  • Ubuntu 18.04 LTS (Bionic Beaver)

  • Ubuntu 20.04 LTS (Focal Fossa)

  • Ubuntu 16.04 LTS (Xenial Xerus)

  • Ubuntu 14.04 LTS (Trusty Tahr)

Docker Engine-Community 的最新版本通常支持最新的 Ubuntu 版本,确认您的Ubuntu版本是否支持Docker。Docker最新版本在Ubuntu 20.04上支持,但是如果您的Ubuntu版本较旧,则需要进行升级。

支持安装Docker的Debian版本

  1. Debian 8.8 “Jessie”

  2. Debian 9.6 “Stretch”

  3. Debian 10.0 “Buster”

以上三个版本的 Debian 都可以在 Docker 中运行。请注意,在使用 Docker 时,请确保你的 Docker 环境与你所使用的 Debian 版本兼容。

检查当前主机上是否安装了Docker

通过运行以下命令来检查当前正在使用的 Docker Engine 版本:

docker version

Ubuntu与Debian的安装步骤是相同的。

手动安装

卸载旧版本

Docker 的旧版本被称为 docker,docker.io 或 docker-engine 。如果已安装,请卸载它们,卸载命令:

 sudo apt-get remove docker docker-engine docker.io containerd runc

使用 Docker 仓库安装

首次安装 Docker Engine-Community 之前,需要设置一下 Docker 仓库。然后可以从仓库安装和更新 Docker 。

设置仓库

打开终端并更新系统软件包列表。您可以使用以下命令:

sudo apt-get update

安装 apt 依赖包

sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common

添加 Docker 的官方 GPG 密钥:

    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

设置稳定版仓库

    sudo add-apt-repository \
       "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \
       $(lsb_release -cs) \
       stable"

安装 Docker Engine-Community

更新系统软件包列表:

    sudo apt-get update

安装最新版本的 Docker Engine-Community 和 containerd

    sudo apt-get install docker-ce docker-ce-cli containerd.io

或者转到下一步安装特定版本

    apt-cache madison docker-ce
    
      docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.1~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.0~ce~3-0~ubuntu       | https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu  xenial/stable amd64 Packages
      ...

例如 :安装 18.06.1~ce~3-0~ubuntu版本

    sudo apt-get install docker-ce=18.06.1~ce~3-0~ubuntu docker-ce-cli=18.06.1~ce~3-0~ubuntu containerd.io

验证Docker是否安装成功,提示以下信息安装成功:

    sudo docker info
    Containers: 0
    Images: 0
    ...

自动安装

除了手动安装外,我们还可以使用官方安装脚本自动安装

     curl -fsSL https://test.docker.com -o test-docker.sh
     sudo sh test-docker.sh

这种安装方式是一站式的,安装好了就直接可以使用了,简单加快乐。

7- CentOS安装Docker

Docker 支持的 CentOS 版本

Docker 是一个广泛使用的开源容器技术,为开发者和运维人员提供了方便、高效的工具。而在 Docker 支持的平台中,CentOS 也是一个重要的操作系统。以下是 Docker 支持的 CentOS 版本:

  1. CentOS 7

CentOS 7 是一个高度可定制的、稳定的 Linux 发行版,自从 2014 年 10 月发布以来一直受到开发者和企业用户的欢迎。作为一个 Docker 的官方支持版本,CentOS 7 的稳定性和可靠性使其成为 Docker 容器应用的理想平台。

  1. CentOS 8 (原名为 RHEL 8,已于 2020 年 6 月 1 日正式发布)

CentOS 8 是 Red Hat Enterprise Linux (RHEL) 的第 8 个版本,它在内核、系统工具、软件包等方面都有很大的改进。在 Docker 方面,CentOS 8 同样提供了支持,但它还提供了一些额外的功能,如增强的内核模块支持和安全性功能。

这些版本都是支持 64 位的。

卸载旧版

旧版本的 Docker 称为 docker 或者 docker-engine ,使用以下命令卸载旧版本以及相关的依赖项:

  1. CentOS 7
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine
  1. CentOS 8
    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine

以上命令会卸载 Docker 及其依赖项,如果您的系统中存在其他 Docker 版本,还需要分别卸载它们。此外,为了保证 Docker 在卸载后不会影响系统的稳定性,请确保在卸载前先备份所有的 Docker 相关文件和数据。

使用 Docker 仓库进行安装

Docker Engine-Community 可以在新主机上进行首次安装和配置。在开始之前,需要设置 Docker 仓库,这是一个非常重要的步骤。在设置 Docker 仓库之后,您可以从仓库安装和更新 Docker Engine。Docker 仓库提供了许多预安装的镜像,您可以使用这些镜像快速构建和运行应用程序。安装 Docker 还需要确保您的系统满足最低要求,并且已经安装了必要的依赖项和软件包。安装和配置 Docker 需要一定的技术知识,但是 Docker 社区提供了丰富的文档和支持,以帮助您完成这个过程。

使用yum源安装依赖包

  1. 安装依赖包
    sudo yum install -y yum-utils \
      device-mapper-persistent-data \
      lvm2
  1. 使用官方源
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo

国内地址比较快一些,可以选择国内地址踢馆官方源进行仓库的安装:

  • 阿里云:https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  • 清华大学:https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo

使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,CentOS

系统上可以使用这套脚本安装:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

启动docker

sudo systemctl start docker

验证是否安装成功

sudo docker run hello-world

image

8- macOS 安装 Docker

使用 Homebrew 安装

Homebrew 的 Cask 已经支持 Docker for Mac,因此可以很方便的使用 Homebrew Cask 来进行安装:

    $ brew cask install docker

在载入 Docker app 后,点击 Next,可能会询问你的 macOS 登陆密码,你输入即可。之后会弹出一个 Docker 运行的提示窗口,状态栏上会出现一个小鲸鱼的图标:image

手动下载安装

下载链接:https://docs.docker.com/desktop/install/mac-install/

提示:根据自己电脑的芯片选择安装版本

image

进行安装

image

安装后应用列表里就会出现这个鲸鱼标的应用

image

双击顶部状态栏会出现鲸鱼图标

image

查看安装结果

    $ docker --version
    Docker version 17.09.1-ce, build 19e2cf6

9- Windows 安装 Docker

Windows 10 安装 Dokcer

在使用Docker的过程中,安装和配置是非常重要的一步。Docker支持64位版本的Windows 10,但在使用之前需要确保系统中已经开启了Hyper-V功能。

Hyper-V是Windows操作系统中的一项虚拟化技术,它允许用户在单个计算机上创建多个虚拟机,以实现更高的性能和可扩展性。因此,如果您希望在Windows 10上安装和运行Docker,则必须先启用Hyper-V功能。

在安装Docker之前,您还需要确保系统中已经安装了64位版本的Windows 10操作系统。Docker最初发布时支持32位版本的Windows操作系统,但随着技术的发展和Docker社区的反馈,现在已经改为支持64位版本的Windows 10。

在启用Hyper-V功能之后,您可以从Docker官网下载并安装Docker。在安装过程中,您需要设置Docker的配置文件和默认路径,并选择安装Docker后要运行的容器镜像。

完成安装后,您可以通过命令行或图形界面启动Docker并开始使用。在使用Docker时,您可以使用容器镜像创建一个新的虚拟机,并在其中运行Docker容器。通过使用Docker容器,您可以在虚拟机中运行多个应用程序,以提高性能和可扩展性。

总之,在安装和使用Docker时,确保系统中已经开启Hyper-V功能是非常重要的一步。启用Hyper-V功能可以帮助您在Windows 10上运行Docker容器,从而实现更高的性能和可扩展性。

开启Hyper-V

除了右击开始选择应用和功能中寻找,还可以通过直接搜索启用或关闭 Windows 功能

image

勾选Hyper-V

image

安装 Docker Desktop for Windows

中文官网:http://docker.p2hp.com/ ,点击下载安装包

image

点击下载好的安装包,进行安装

image

安装完成,点击Close and restart之前确保工作进度都保存了,因为这个按钮会重启你的电脑

image

重启后,如果没有自动启动,可点击桌面docker应用的图标打开docker进行使用

image

启动docker前确定自己的系统内核版本为WSL 2

升级WSL内核的链接给大家贴在这里:https://aka.ms/wsl2kernel

10- 确认Docker正在工作

当我们准备创建和运行第一个容器时,我们需要确保我们的Docker服务处于良好的工作状态,并且可以正确地处理整个容器生命周期的所有阶段。这意味着我们需要熟悉容器的各种生命周期操作,如创建、管理、停止和删除。

确认Docker正在工作

当你在运行Docker命令时遇到"Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"错误时,可能是由于Docker守护进程未启动导致的。

1. 检查Docker守护进程状态:在终端或命令提示符中执行以下命令,查看Docker守护进程的运行状态:

    sudo service docker status

如果守护进程没有运行,你可以通过以下命令启动它:

    sudo service docker start

2. 检查当前用户的权限: 确保当前用户具有执行Docker命令的权限。你可以将自己添加到docker用户组中,以便在不使用sudo的情况下运行Docker命令。执行以下命令将当前用户添加到docker用户组:

    sudo usermod -aG docker $USER

请注意,在执行完此命令后,你需要重新登录才能使用户组更改生效。

3. 检查/var/run/docker.sock文件是否存在:执行以下命令检查Docker套接字文件是否存在:

    ls -la /var/run/docker.sock

如果文件不存在,可以尝试重启Docker服务:

    sudo service docker restart

4. 检查Docker安装是否正常:确保Docker已正确安装并更新到最新版本。你可以从Docker官方网站获取最新版本的安装包,并按照官方文档提供的指南进行安装。

如果上述解决方法仍然无法解决问题,可能需要进一步检查系统日志以了解具体错误原因。此外,你还可以参考Docker社区或官方文档以获取更多支持和指导。

11- 我们的第一个容器

创建第一个容器

我们以常用的Linux系统centOS 8为例。

要创建一个Docker容器,我们需要使用Docker命令行界面或者Docker Desktop应用程序。Docker是一种流行的容器化平台,它可以在不同的操作系统之间轻松移植应用程序。Docker容器提供了一个独立的环境,可以让应用程序在其中运行,而不会受到操作系统的影响。这使得Docker容器成为一种流行的应用程序部署方法,特别是在开发人员需要在不同环境中进行测试和开发时。

在本例中,我们将使用Docker来创建一个基于Ubuntu镜像的容器,并在其中运行一个命令。要运行容器,,我们需要先从Docker Hub下载Ubuntu镜像,然后使用docker run命令来启动容器。在docker run命令中,我们可以指定要运行的镜像和容器名称,并可以指定一些其他选项来配置容器的行为。

在本例中,我们使用以下命令来启动容器:

    docker run ubuntu:latest /bin/echo "Hello Docker!"

在这个命令中,我们指定了要使用的镜像为Ubuntu:latest。该镜像是Ubuntu官方提供的最新镜像,它包含了Ubuntu的最新版本的内核和其他组件。接下来,我们使用了一个可执行文件的路径 /bin/echo来执行容器中的命令。这个命令将在容器中输出 “Hello Docker!” 到控制台。

执行完docker run命令后,容器就会被创建并启动。在容器中,您可以使用任何其他命令来操作容器,并与容器中的文件进行交互。

image

这是创建和运行Docker容器的基本过程。Docker容器提供了一种简单、快速、安全和可移植的方式来运行应用程序和服务。在未来,我们将看到更多的应用程序和服务使用Docker容器进行部署和管理。

我们的容器在哪里

在服务器中,我们的容器也是被Docker管理起来的,我们可以使用命令进行查看

查看运行中的容器:docker ps

查看所有容器:docker ps -a

因为我们上面创建的容器没有设定一些特殊的交互模式,所以在运行完程序之后,它自动停止了,我们这里需要使用查看所有容器

    docker ps -a

我们可以看到我们刚才创建的输出"Hello Docker!"的容器

image

12- 与容器进行交互

我们通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力

通过在docker命令中添加-i和-t参数,可以实现docker容器的交互能力,这是因为这两个参数都用于在容器内运行控制台。其中,-i参数会打开标准输入设备,让用户可以通过终端在容器内与操作系统进行交互;而-t参数会创建一个伪终端,这样用户就可以像在本地计算机上一样在容器内与控制台进行交互。

    docker run -i -t ubuntu:latest /bin/bash

运行之后,我们会发现进入了一个新的服务器地址,这其实就是我们进入到了我们的容器中,在容器中可以进行各种操作

image

使用 cat /proc/version 命令查看当前系统的版本

    cat /proc/version

我们可以看到终端打印出我们创建容器时使用的系统镜像版本

image

使用 ls 查看服务器上的目录文件结构

    ls

image

使用exit命令退出容器

    exit

image

除了使用exit命令,我们也可以按下键盘上的Ctrl+D来退出容器

扩展

在容器内部运行控制台是一项非常有用的功能,它可以让用户更加方便地操作容器内的应用程序。此外,通过控制台交互,用户还可以轻松地获取容器内部的运行状态信息,例如容器的进程ID、CPU和内存使用情况等等。这些信息可以帮助用户更好地了解容器内部的运行状况,并根据需要进行相应的调整。

除了控制台交互外,还有一些其他的方法可以与docker容器进行交互。例如,可以使用docker exec命令在容器内运行其他的命令或者进程,或者使用docker attach命令将容器内的进程与终端绑定在一起,从而可以在终端中运行其他的命令或者控制容器内部的进程。

13- 以后台进程形式存在的容器

docker run -d

docker run -d 是用于在后台运行容器的命令。其中 -d 是用来指定容器的运行模式的。

在运行容器之前,我们需要确保已经安装并启动了Docker守护进程。然后,我们可以使用以下命令来运行容器

    docker run -d ubuntu:latest /bin/sh -c "while true; do echo Hello Docker; sleep 1; done"

运行完后,不难发现输出结果中并没有输出我们指定的:“Hello Docker”这一字符串,而是得到了一个随机的长字符串

image

使用docker ps查看容器,可以发现截取了这段字符一段作为容器的id

image

输出详情介绍:

CONTAINER ID: 容器 ID。

IMAGE: 使用的镜像。

COMMAND: 启动容器时运行的命令。

CREATED: 容器的创建时间。

STATUS: 容器状态。

PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。

NAMES: 自动分配的容器名称。

在宿主主机内使用 docker logs 命令,查看容器内的输出

    docker logs happy_ellis

运行后可以看到容器内的打印程序在运行

image

停止容器

后台运行的容器将在后台执行,并且不会在你退出当前终端或会话时自动停止,停止容器的命令是 docker stop ,运行以下命令停止容器

    docker stop happy_ellis

请注意,在后台模式下运行容器时,通常无法看到容器的实时输出。如果需要查看容器的日志或输出,可以使用 docker logs 命令。

总结起来,docker run -d 是一个在后台模式下运行容器的命令,使得容器可以在后台持续运行而不会阻塞当前终端。

14- Docker 镜像

镜像介绍

Docker 镜像是 Docker 容器的基础,它是一个轻量级、可执行的独立软件包,其中包含了运行一个应用程序所需的所有内容,包括代码、运行时环境、系统工具、库文件以及依赖项。

我们在创建、运行容器时,如果创建这个容器的镜像不存在,Docker会自动从Docker镜像仓库中获取我们需要的指定的镜像。

docker images 命令用于列出本地计算机上已经下载的 Docker 镜像列表。它会显示每个镜像的名称、标签、镜像 ID、大小和创建时间等信息。

在命令行中运行docker images ,我们将看到类似以下的输出:

image

其中,每一行代表一个镜像,每一列也有自己特殊的意义:

  • REPOSITORY:镜像的仓库/来源。它可以是官方仓库(如 ubuntu、nginx)或自定义仓库(如 myrepo/myimage)。

  • TAG:镜像的标签。它通常表示镜像的版本或相关信息,如 latest、14.04等。同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本。

  • IMAGE ID:镜像的唯一标识符,由一串字符组成。

  • CREATED:镜像的创建时间。

  • SIZE:镜像的大小。

这些信息可以帮助我们了解当前系统中已经下载的镜像,以及它们的相关信息。

Docker 镜像的特点

  • 轻量级:Docker 镜像是通过使用容器化技术构建的,它们非常小巧且精简,只包含了应用程序运行所需的最低限度的组件。

  • 可移植性:Docker 镜像是可移植的,可以在任何支持 Docker 的平台上运行,无论是开发环境、测试环境还是生产环境,保持一致的运行方式。

  • 可扩展性:Docker 镜像是可扩展的,可以基于现有的镜像构建新的镜像,通过添加额外的组件、配置或代码来满足特定的需求。这种层次结构和复用性使得镜像的管理和维护变得更加容易。

  • 版本控制:Docker 镜像支持版本控制,每个镜像都有一个唯一的标识符(Image ID),可以通过标识符来管理和跟踪不同版本的镜像。

  • 安全性:Docker 镜像可以提供更高的安全性,因为它们是隔离的、独立的运行环境。每个容器都运行在其自己的命名空间中,相互之间不会相互影响,这样可以减少潜在的安全漏洞。

  • 通过使用 Docker 镜像,开发人员可以方便地打包应用程序及其依赖项,并在任何支持 Docker 的环境中快速部署和运行。同时,镜像还提供了一种标准化和可重复的部署方式,简化了应用程序的交付和管理过程。

镜像的使用

  1. 如果我们要使用指定的一个版本的ubuntu镜像创建并运行容器,比如使用15.10版本的镜像,我们可以使用以下命令:
    docker run -i -t ubuntu:15.10 /bin/bash

这条命令的含义如下:

  • docker run:运行 Docker 容器的命令。

  • -t:表示要分配一个终端(tty)设备。

  • -i:表示要保持标准输入流(stdin)打开。

  • ubuntu:15.10:指定要基于哪个镜像来运行容器。在这里,使用的是 Ubuntu 15.10 版本的镜像。

  • /bin/bash:在容器内要运行的命令,这里是启动一个 Bash 终端。

运行该命令将会启动一个新的 Ubuntu 15.10 版本的容器,并打开一个 Bash 终端。我们可以在容器中执行各种操作,例如安装软件包、运行命令等。当退出 Bash 终端时,容器也将停止并退出。

  1. 当我们在 docker run 命令中不指定镜像的版本标签时,Docker 将默认使用该镜像的 latest 标签版本。

例如,如果我们运行以下命令:

    docker run -t -i ubuntu /bin/bash

Docker 将会自动下载并使用最新版本的 Ubuntu 镜像,即 ubuntu:latest。

latest 是一个常用的标签,它表示镜像的最新版本。但是需要注意的是,某些镜像的 latest 标签可能不是真正的最新版本,因此最好明确指定所需的版本标签来确保一致性和可重现性。

使用docker pull获取镜像

docker pull 命令用于从远程镜像仓库中获取(拉取)一个新的镜像到本地。

要拉取一个新的镜像,只需使用以下命令格式:

    docker pull [镜像名称]:[标签]

其中,[镜像名称] 是我们要拉取的镜像的名称,例如 ubuntu、nginx 等。[标签] 则是镜像的具体版本或标识符,例如 latest、20.04 等。

举个例子,如果要拉取最新的 Ubuntu 镜像,可以运行以下命令:

    docker pull ubuntu:latest

Docker 将会从 Docker Hub 或其他配置的镜像仓库中下载该镜像,并保存在我们的本地环境中。

当拉取镜像时,我们可以在命令行中看到下载的进度信息,一旦下载完成,即可使用 docker images 命令查看本地镜像列表,确认镜像已成功拉取到本地。

删除镜像

要删除 Docker 镜像,可以使用 `docker rmi` 命令。以下是删除镜像的步骤:

  1. 打开终端或命令行界面。

  2. 运行 `docker images` 命令,查看您本地的镜像列表。这将列出已下载的镜像及其相关信息,包括镜像 ID 和标签。

image

  1. 根据要删除的镜像,找到其镜像 ID 或标签。

  2. 运行 `docker rmi` 命令,后面跟随要删除的镜像的镜像 ID 或标签。例如,要删除镜像 ID 为 `13b66b487594` 的镜像,可以运行如下命令:`docker rmi 13b66b487594`。或者,如果要删除标签为 `ubuntu:latest` 的镜像,可以运行如下命令:`docker rmi ubuntu:latest`。

  3. 确认删除操作。命令执行后,Docker 将删除指定的镜像。如果镜像正在被使用,则需要先停止和删除相关的容器,才能成功删除镜像。

image

请注意,在删除镜像之前,请确保不再需要该镜像,并且没有其他依赖该镜像的容器正在运行。

更新镜像

要更新 Docker 镜像,可以按照以下步骤进行操作:

  1. 运行容器:使用 `docker run` 命令创建一个容器。可以使用如下命令运行一个基于 Ubuntu 15.10 的容器:
    docker run -t -i ubuntu:15.10 /bin/bash

image

  1. 在容器内更新:容器启动后,进入容器的命令行界面。在这个例子中,通过 `/bin/bash` 命令进入容器的 Bash Shell。然后在容器内执行以下命令:
    apt-get update

image

  1. 退出容器:在容器内完成更新操作后,使用 `exit` 命令退出容器。

  2. 提交容器副本:使用 `docker commit` 命令提交容器的副本,以生成一个新的镜像。命令的格式为:

    docker commit <容器ID> <镜像名称>:<标签>

例如,如果容器ID为 `060240caac28`,可以运行如下命令进行提交:

    docker commit 060240caac28 myimage:latest

其中,“myimage” 就是我们希望更新的镜像名称,`latest` 是新的标签或版本号。

  1. 查看更新后的镜像:使用 `docker images` 命令查看本地镜像列表,确认已经生成了更新后的镜像。

image

请注意,提交容器副本生成的新镜像是一个单独的镜像,与原始镜像相互独立。更新后的镜像可以在其他容器中使用或推送到远程镜像仓库。

  1. 使用新镜像创建容器,运行命令:docker run -t -i myimage /bin/bash

image

构建镜像

要构建一个镜像,我们可以使用 Docker 工具根据一个包含构建指令的 Dockerfile 文件进行操作。

  1. 在 Dockerfile 中定义您的镜像配置,可以使用任何文本编辑器。这包括选择基础映像、安装软件包、添加文件等等。下面是一个简单的示例

image

在上面的示例中,您需要根据实际情况自定义以下部分:

  • FROM 行指定了基础映像,您可以选择适合您需求的映像。

  • RUN 行用于在镜像中运行命令,以安装所需的软件包或执行其他操作。

  • EXPOSE 暴露端口给主机

  • CMD 行指定了容器启动时要执行的命令。

保存DockerFile文件

  1. 在Dockerfile 的目录中使用以下命令来构建镜像:
    docker build -t image_name:tag .

image

其中,image_name 是想要为镜像设置的名称,`tag` 是可选的标签,表示镜像的特定版本。注意 “.” 表示当前目录。

  1. Docker 将按照 Dockerfile 中的指令运行构建过程,并且会下载所需的依赖项。这可能需要一些时间,具体取决于镜像的大小和网络速度。

  2. 构建完成后,可以使用以下命令查看已构建的镜像列表:

    docker images

image

  1. 我们可以使用上面构建的镜像来运行一个容器
    docker run -it myubuntu:tag /bin/bash
  • -it :用于在容器中启动一个交互式会话,以便您可以与容器进行交互。

给镜像设置标签

要给已经存在的镜像设置标签,可以使用 docker tag 命令。以下是命令的格式:

    docker tag <existing_image> <new_image>:<tag>
  • <existing_image> 是现有镜像的名称或 ID。

  • <new_image> 是要创建的新镜像的名称。

  • <tag> 是要为新镜像设置的标签。

例如:

image

运行命令后,我们使用查看一下镜像列表:

image

可以看到myubuntu这个镜像多出了一个v10版本的镜像。

15- Dockerfile

Dockerfile是什么?

上一节,构建镜像时,我们用到了Dockerfile简单的构建了演示镜像,那么Dockerfile是什么呢?

实际上,Dockerfile 是一种文本文件,用于指示 Docker 镜像的构建过程。它包含了一条条的指令和参数,每条指令相当于执行 Docker 中的一个命令,并且构建顺序按照文件中的顺序执行。

使用 Dockerfile 可以方便地自定义镜像,以应对不同的需求。通过编写 Dockerfile 文件,可以定义基础镜像、安装软件、配置环境变量、复制文件等操作,最终生成一个新的 Docker 镜像。

编写Dockerfile的语法

    <指令> <参数>
    <指令2> <参数>
    ...

在这一代码中,每个指令都有自己特殊的语法和参数,例如:

    # 基于 Ubuntu 16.04 创建镜像
    FROM ubuntu:16.04
    
    # 安装必要的工具和软件包
    RUN apt-get update && \
        apt-get install -y curl wget
    
    # 设置环境变量
    ENV MY_VAR=my_value
    
    # 复制文件到镜像中
    COPY my_app /opt/my_app
    
    # 暴露 8000 端口
    EXPOSE 8000
    
    # 容器启动时默认执行的命令
    CMD ["/opt/my_app/start.sh"]
    
    ...

Dockerfile的指令

上面示例中使用了一些指令以及参数,这里会列出它们,并对他们做出解释

指令说明

指令 指令说明
FROM 指定基础镜像,它指定了作为基础的镜像名称或标签。在构建过程中,将以该镜像作为起点
MAINTAINER 设置镜像的维护者信息(已废弃,推荐使用 LABEL),通常用于指定镜像的作者和联系方式
LABEL 设置镜像的元数据信息,可以为镜像添加自定义的元数据,如版本、描述、作者等
RUN 在容器内执行命令,可以执行任意的 Shell 命令,用于构建镜像时的一些操作,如安装软件包、设置环境等
CMD 设置容器启动时默认执行的命令,该命令将在容器启动时自动执行,可以被 docker run 命令覆盖
EXPOSE 声明容器监听的端口,并不会实际发布端口,只是做一种提示,告诉使用者容器运行时可以监听哪些端口
ENV 设置环境变量,用于在容器内部设置环境变量,可以在后续的指令中引用这些环境变量
ADD 将文件、目录或远程文件复制到容器中(类似于 COPY,但还支持 URL 和解压缩),除了复制本地文件外,还可以从 URL 复制文件,并且支持解压缩
COPY 复制文件或目录到容器中,只能复制本地文件或目录,无法处理 URL 和解压缩
ENTRYPOINT 设置容器启动时默认执行的命令,该命令将在容器启动时自动执行,不会被 docker run 命令覆盖
VOLUME 声明匿名卷,用于持久化数据或与其他容器共享数据,用于将容器内的数据持久化或与其他容器共享数据
USER 设置运行容器时的用户名或 UID,用于指定在容器中运行的进程所使用的用户
WORKDIR 设置工作目录,用于指定之后命令的工作目录路径
ARG 定义构建参数,构建参数可以在构建过程中传递给 Dockerfile,用于定制化镜像的构建
ONBUILD 在当前镜像被用作基础镜像时执行相关指令,这些指令将在子镜像的构建过程中被执行

参数说明

指令 参数说明 指令及其参数示例
FROM 镜像名称或标签 FROM ubuntu:18.04
MAINTAINER 维护者信息 MAINTAINER John Doe <johndoe@example.com>
LABEL 键值对形式的元数据信息 LABEL version=“1.0” description=“My Docker Image”
RUN 要执行的命令 RUN apt-get update && apt-get install -y curl
CMD 数组或字符串 CMD [“python”, “app.py”] 或 CMD python app.py
EXPOSE 端口号 EXPOSE 8080
ENV 变量名=值 ENV MY_VAR=my_value
ADD 源文件/目录路径 目标路径 ADD app.tar.gz /app/
COPY 源文件/目录路径 目标路径 COPY app.py /code/
ENTRYPOINT 数组或字符串 ENTRYPOINT [“python”, “app.py”]  或 ENTRYPOINT python app.py
VOLUME 路径 VOLUME /data
USER 用户名或 UID USER myuser
WORKDIR 目录路径 WORKDIR /app
ARG 参数名[=默认值] ARG VERSION=latest
ONBUILD 要执行的指令 ONBUILD ADD . /app/

这些指令允许用户在 Dockerfile 中定义镜像的构建过程,包括基于基础镜像、安装软件、设置环境变量和执行命令等操作。通过组合和使用这些指令,可以创建出符合个人需求的定制化 Docker 镜像。

16- 通过端口访问Docker容器

步骤

要通过端口连接到一个 Docker 容器,你可以按照以下步骤进行操作:

  1. 确保容器内的应用程序已正确配置为监听容器内部的特定端口。这可以在容器内的应用程序配置文件或命令行参数中完成。

  2. 运行容器时,使用 -p 参数将容器内的端口映射到宿主机上的一个可用端口。例如,如果容器内的应用程序监听的是容器的 8080 端口,可以使用以下格式的 docker run 命令来运行容器:

    docker run -p 宿主机端口:容器端口 镜像名称

其中宿主机端口是你想要将容器内的端口映射到的宿主机端口。

例如,你可以运行以下命令将容器内的 8080 端口映射到宿主机的 8888 端口:

    docker run -p 8888:8080 镜像名称
  1. 连接到容器。现在,你可以使用宿主机的 IP 地址和映射的宿主机端口来连接到容器。打开 Web 浏览器或其他客户端工具,并访问 宿主机地址,例如:“http://111.222.333.1:8080” 来连接到容器中的应用程序。

请注意,如果使用的是 Docker Desktop 或 Docker for Mac/Windows,可以使用 localhost 作为宿主机来连接到容器。如果在云服务器上运行 Docker,则需要使用服务器的公共 IP 地址来连接到容器。

案例

下面,我们通过一个案例的实现,来直观的了解如何通过端口访问Docker容器。

首先,我们需要先创建一个容器,例如创建一个运行python应用的容器,命令如下:

    docker run -d -P training/webapp python app.py

其中 -d 我们之前介绍过,其作用是让容器在后台运行起来,而不是运行后进入容器内

其中 -P 的作用是绑定端口号,注意这里是大写的P,它会随机分配一个宿主机的端口号与容器进行绑定

使用 -P/-p 绑定主机与容器的端口

  1. 运行上面的命令,第一次使用training/webapp镜像时,会自动拉取镜像以运行容器。

image

  1. 接下来,使用docker ps 查看我们的容器列表,不难发现,主机上的32768端口绑定了容器的5000端口。

image

  1. 除了使用**-P** 随机映射之外,我们也可以使用**-p** 来选择指定的主机端口绑定容器中的端口。
    docker run -d -p 5000:5000 training/webapp python app.py

image

  1. 还可以给指定容器绑定网络地址。
    docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

image

使用 Docker 命令行工具中的 docker ps 命令来查看当前运行的容器列表。

image

通过 127.0.0.1:5001,我们可以使用容器的5000端口进行访问。

  1. 如果需要绑定的端口是udp而不是tcp,可以在端口后面加上/udp
    docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

使用docker ps查看创建的容器

image

  1. 使用docker port 命令可以查看容器端口的绑定情况
    docker port <容器名> 

image

17- 运行CentOS、Ubuntu容器

拉取镜像

我们这里指定CentOS 版本为centos8。

    docker pull centos:centos8

image

查看镜像

使用docker images命令查看主机上的镜像列表。

    docker images

镜像列表中出现了,上一步拉去的centos8版本的镜像。

image

运行容器

    docker run -itd --name centos8-test centos:centos8

image

进入容器

使用docker exec命令进入容器

    docker exec -it centos8-test /bin/bash

可以看到,这个容器中的结构和本身系统是centos8的服务器结构是一致的,其实,这个容器已经可以作为一个单独的服务器来使用了。

image

查看容器

使用exit命令退出容器后,然后使用docker ps 查看正在运行的容器

image

在容器列表中可以找到我们运行的centos8容器,说明我们运行成功,否则,就要回去检查以下看是否是哪一步出错了。

Ubuntu容器

Ubuntu容器的运行与centos运行大致相同,需要注意指定镜像的版本,或者直接使用ubuntu:last也可以。

18- 运行Nginx容器

查看可用的Nginx版本

使用命令 docker search nginx 查看可用的nginx版本

image

拉取镜像

使用命令 docker pull 拉取镜像,我们这里拉取最新版镜像

    docker pull nginx:latest

然后使用docker images 查看主机上的镜像列表

    docker images

image

运行容器

我们使用上面拉取到的nginx:latest 镜像来运行一个nginx容器

    docker run --name nginx-test -p 8080:80 -d nginx

这里面有几个命令,在前面的小节中,我们讲过

  • –name 设置容器名称

  • -p 指定主机8080端口绑定到容器的80端口

  • -d 让容器以后台进程的方式一直运行

查看容器运行结果

    docker ps

image

访问容器

使用主机ip或者域名加“:8080”可以访问到容器中的nginx服务。

image

注意:在访问的时候确保主机暴露了8080端口,否则浏览器无法访问主机的8080端口。

19- 运行Apache容器

查看可用的httpd版本

    docker search httpd

运行以上命令,可以查询到可供选择拉取的httpd版本

image

拉取镜像

如果不指定拉取镜像的版本,默认会拉取最新的镜像,httpd:latest

    docker pull httpd

image

查看镜像拉取结果

使用docker images查看列表,或使用docker images <镜像名>查看镜像

    docker images httpd

image

运行Apache容器

    docker run -d -p 80:80 --name my-apache-container httpd

打开浏览器,输入 http://localhost 或者 http://宿主机IP地址,就可以看到 Apache 的默认欢迎页面了。

image

这样,我们就成功在 Docker 中运行了一个 Apache 容器。

20- 运行MySQL容器

查看可用的mysql版本

运行命令:docker search mysql 查看到可供选择拉取的 mysql 版本

    docker search mysql

image

拉取镜像

拉取镜像时,可以指定镜像的版本,如果不指定拉取镜像的版本,默认会拉取最新的镜像,mysql:latest

    docker pull mysql

image

查看镜像拉取结果

使用docker images查看列表,或使用docker images <镜像名>查看镜像

    docker images mysql:latest

image

镜像库中出现了刚才我们拉取的镜像,这说明我们的拉取是成功的。

运行容器

拉取镜像成功后,我们就可以使用这个镜像运行容器了

    docker run -itd -p 3306:3306 --name my-mysql-container -e MYSQL_ROOT_PASSWORD=123456 mysql

这个命令会在后台模式下运行一个名为 my-mysql-container 的 MySQL 容器,并将容器的 3306 端口映射到宿主机的 3306 端口。
-e MYSQL_ROOT_PASSWORD=<your_password> 参数用于设置 MySQL 的 root 用户密码,替换 <your_password> 为你自己的密码。

运行

image

运行完成,我们来查看一下是否运行成功

    docker ps

image

验证MySQL容器的运行

这时候我们可以使用navicat或者其他数据库管理工具进行连接了

image

填写刚才云习容器时所设置的信息,然后点击左下角测试连接

image

连接成功,证明我们的MySQL容器创建成功并且正常运行。

21- 运行Node.js容器

查看镜像版本

使用 docker search node 查看可用的node镜像版本

    docker search node

image

有很多可用的版本可以供我们安装使用,我们选择自己想要的镜像版本进行拉取即可。

拉取镜像

使用docker pull node:<version>命令,拉取指定版本的node,我们这里直接拉取最新版本。

    docker pull node:latest

image

查看镜像拉取结果

使用docker images查看镜像是否拉取成功

image

通常情况下,列表第一位就是我们刚才拉取的镜像,看到这个node镜像的话,说明我们已经将镜像拉取到我们主机上的镜像库中了。

运行容器

使用 docker run -itd --name node-test node:latest 运行node容器

    docker run -itd --name node-test node:latest

image

查看运行结果

使用docker ps 查看node容器是否运行

image

验证

要验证node.js容器是否创建成功,需要进入容器,查看node.js的版本

    docker exec -it node-test /bin/bash

进入容器后,使用node -v命令查看安装的node.js版本

    node -v

image

版本号打印成功,说明我们的node容器创建成功并且可以正常使用