Code前端首页关于Code前端联系我们

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

terry 2年前 (2023-09-28) 阅读数 87 #未命名

Docker客户端

Docker客户端非常简单。我们可以直接输入Docker命令来查看Docker客户端的所有命令选项。

coonote@coonote:~# docker

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

您可以通过命令docker command --help来了解如何使用指定的docker命令。

比如我们想看dockerstats命令的具体使用:

coonote@coonote:~# docker stats --help

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

容器使用

来获取镜像我们可以使用docker pull命令加载Ubuntu镜像:
$ docker pull ubuntu

启动容器

以下命令使用Ubuntu镜像来启动容器。参数为命令行方式进入容器:

$ docker run -it ubuntu /bin/bash

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

参数说明:

  • -i:交互操作。
  • -t:终端。
  • ubuntu:ubuntu镜像。
  • /bin/bash:命令放在镜像名称后面。这里我们希望有一个交互式的shell,所以使用了/bin/bash。

要退出终端,立即输入exit

root@ed09e4490c57:/# exit

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

启动停止的容器

查看所有容器命令如下:查看大图:

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

使用Docker Start 启动一个已停止的容器:

$ docker start b750bbbcfd88

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

在后台运行

在大多数场景中,我们希望 Docker 服务在后台运行。我们可以通过-d来指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

点击图片查看大图:

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

注意:添加的-d参数默认不会包含在容器中。进入容器需要使用命令 docker exec(下面介绍)。 ?然后你就进入后台了。如果此时想进入容器,可以通过以下命令进入:

  • docker Attach
  • docker exec:建议使用docker exec命令,因为从集装箱码头触​​发集装箱不会停止。

attach命令

下面展示了Docker Attach命令的用法。

$ docker attach 1e560fca3906

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

注意:如果退出此容器,容器将停止。

exec命令

下面展示了Docker exec命令的用法。

docker exec -it 243c32535da7 /bin/bash

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

注意:退出此容器不会停止容器,因此建议使用docker exec

更多参数说明请使用docker exec --help 命令。

导出和导入容器

导出容器

如果要导出本地容器,可以使用命令docker export

$ docker export 1e560fca3906 > ubuntu.tar

将容器1e560fca3906快照导出到本地文件ubuntu.tar。

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

这会将容器快照导出到本地文件。

导入容器快照

您可以使用 docker import 将容器快照文件导入到镜像中。以下示例将快照文件 ubuntu.tar 导入镜像 test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

此外,您还可以指定要导入的 URL 或目录,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除某个容器容器,使用 docker rm 命令:

$ docker rm -f 1e560fca3906

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

以下命令可以清理所有处于终止状态的容器。

$ docker container prune

运行Web应用程序

我们之前运行的容器没有什么特殊用途。

接下来让我们尝试使用 Docker 构建一个 Web 应用程序。

我们在 Docker 容器中运行 Python Flask 应用程序来运行 Web 应用程序。

coonote@coonote:~# docker pull training/webapp  # 载入镜像
coonote@coonote:~# docker run -d -P training/webapp python app.py

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

参数说明:

  • -d:让容器在后台运行。
  • -P: 将容器中使用的网络端口随机映射到我们正在使用的主机上。

查看WEB应用容器

使用Docker ps查看我们正在运行的容器:

coonote@coonote:~#  docker ps
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
d3d5e39ed9d3        training/webapp     "python app.py"     ...        0.0.0.0:32769->5000/tcp

这里有更多端口信息。

PORTS
0.0.0.0:32769->5000/tcp

Docker 打开映射到主机端口 32769 的端口 5000(默认 Python Flask 端口)。

这时候我们就可以通过浏览器访问WEB应用了

Docker容器使用初步教程:客户端、获取镜像、运行WEB程序

我们还可以通过-p参数设置不同的端口:

coonote@coonote:~$ docker run -d -p 5000:5000 training/webapp python app.py

docker ps查看正在运行的容器00在容器端口被映射到我们本地主机的端口 5000。

网络端口的快捷方式

您可以通过 docker ps 命令查看容器的端口映射。 docker还提供了另一个快捷方式docker端口,使用docker端口,这是主机显示的容器的某个端口名称(或端口名称)。

我们在上面创建的 Web 应用程序容器 ID 为 bf08b7f2cd89,名称为 wizardly_chandrasekhar

我可以使用 dockerport bf08b7f2cd89 或 dockerport Wizardly_chandrasekhar 来查看容器端口映射。

coonote@coonote:~$ docker port bf08b7f2cd89
5000/tcp -> 0.0.0.0:5000
coonote@coonote:~$ docker port wizardly_chandrasekhar
5000/tcp -> 0.0.0.0:5000

查看WEB应用日志

docker日志 [ID或名称] 可以查看容器中的标准输出。

coonote@coonote:~$ docker logs -f bf08b7f2cd89
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -

-f:docker log 在容器中输出标准输出,如tail -f

从上面我们可以看到应用程序正在使用5000端口,并且可以查看应用程序的访问日志。 ?信息。它返回一个JSON文件,记录了Docker容器的配置和状态信息。

coonote@coonote:~$ docker inspect wizardly_chandrasekhar
[
    {
        "Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
        "Created": "2018-09-17T01:41:26.174228707Z",
        "Path": "python",
        "Args": [
            "app.py"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 23245,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2018-09-17T01:41:26.494185806Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
......

停止WEB应用容器

coonote@coonote:~$ docker stop wizardly_chandrasekhar   
wizardly_chandrasekhar

重新启动WEB应用容器

我们可以使用Docker Start命令来启动停止的容器。

coonote@coonote:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar

docker ps -l 提示最后创建的容器:

#  docker ps -l 
CONTAINER ID        IMAGE                             PORTS                     NAMES
bf08b7f2cd89        training/webapp     ...        0.0.0.0:5000->5000/tcp    wizardly_chandrasekhar

对于正在运行的容器,我们可以使用 docker restart 命令来重新启动。

删除WEB应用容器

我们可以使用Docker rm命令删除不需要的容器

coonote@coonote:~$ docker rm wizardly_chandrasekhar  
wizardly_chandrasekhar

删除容器时,容器必须处于停止状态,否则会报以下错误

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门