安卓系统

Docker运行命令示例

docker 应用 利用闲置VPS挣钱 一路赚钱演示

docker 应用 利用闲置VPS挣钱 一路赚钱演示

目录:

Anonim

Docker是一个平台,使您可以将应用程序开发,测试和部署为可在几乎任何地方运行的可移植的自给自足容器。

docker run 命令从给定映像创建容器,并使用给定命令启动容器。 这是开始使用Docker时应熟悉的第一批命令之一。

,我们将使用官方的Nginx图像来显示运行Docker容器的各种方法。

Docker运行命令

docker run 命令采用以下形式:

docker run IMAGE

从中创建容器的映像的名称是 docker run 命令唯一需要的参数。 如果本地系统上不存在该映像,则将其从注册表中拉出。

如果未指定命令,则在运行容器时将执行Dockerfile的 CMD ENTRYPOINT 指令中指定的命令。

从版本1.13开始,Docker CLI已经进行了重组,并且所有命令都被分组在与之交互的对象下。

由于 run 命令与容器交互,因此它现在是 docker container 的子命令。 新命令的语法如下:

docker container run IMAGE

仍支持旧的1.13之前的语法。 在后台, docker run 命令是 docker container run 的别名。 鼓励用户使用新的命令语法。

可以在Docker文档页面上找到所有Docker docker container run 选项的列表。

在前景中运行容器

默认情况下,如果不为 docker run 命令提供任何选项,则根进程在前台启动。 这意味着来自根进程的标准输入,输出和错误将附加到终端会话。

docker container run nginx

Nginx进程的输出将显示在您的终端上。 由于没有与Web服务器的连接,因此终端为空。

要停止容器,请按 CTRL+C 终止正在运行的Nginx进程。

以分离模式运行容器

要在退出终端会话时保持容器运行,请以分离模式启动它。 这类似于在后台运行Linux进程。

使用 -d 选项启动一个分离的容器:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

当根进程终止时,分离的容器将停止。

您可以使用 docker container ls 命令列出正在运行的容器。

要将终端附加到分离的容器根进程,请使用 docker container attach 命令。

退出后取出容器

默认情况下,当容器退出时,其文件系统将保留在主机系统上。

--rm 选项告诉 --rm docker run 命令在容器自动退出时将其删除:

docker container run --rm nginx

Nginx映像可能不是在容器退出后清理容器的文件系统的最佳示例。 此选项通常用于执行短期任务(例如测试或数据库备份)的前台容器。

设置容器名称

在Docker中,每个容器都通过其 UUID 和名称来标识。 默认情况下,如果未显式设置,则容器名称由Docker守护程序自动生成。

使用 --name 选项为容器分配自定义名称:

docker container run -d --name my_nginx nginx

容器名称必须唯一。 如果您尝试使用相同的名称启动另一个容器,则会收到类似于以下的错误:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

运行 docker container ls -a 列出所有容器,并查看其名称:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

有意义的名称对于在Docker网络中或运行Docker CLI命令时引用容器很有用。

发布集装箱港口

默认情况下,如果未发布任何端口,则只能从容器内部访问容器中运行的进程。

发布端口意味着将容器端口映射到主机端口,以便这些端口可用于Docker外部的服务。

要发布端口,请使用 -p 选项,如下所示:

-p host_ip:host_port:container_port/protocol

  • 如果未指定 host_ip ,则默认值为 0.0.0.0 。如果未指定 protocol ,则默认值为TCP。要发布多个端口,请使用多个 -p 选项。

要将容器中的TCP端口80(nginx)映射到主机localhost接口上的端口8080,请运行:

docker container run --name web_server -d -p 8080:80 nginx

您可以通过在浏览器中打开 http://localhost:8080 或在Docker主机上运行以下 curl 命令来验证端口是否已发布:

curl -I

输出将如下所示:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

共享数据(安装量)

停止容器时,将删除该容器生成的所有数据。 Docker Volumes是使数据持久保存并在多个容器之间共享的首选方法。

要创建和管理卷,请使用 -p 选项,如下所示:

-v host_src:container_dest:options

  • host_src 可以是主机或命名卷上文件或目录的绝对路径 host_src container_dest 上文件或目录的绝对路径。选项可以是 rw (读写)和 ro (只读) )。 如果未指定任何选项,则默认为 rw

为了解释它是如何工作的,让我们在主机上创建一个目录,并在其中放置一个 index.html 文件:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

接下来,将 public_html 目录挂载到容器中的 /usr/share/nginx/html 中:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

而不是指定 public_html 目录的绝对路径,而是使用 $(pwd) 命令,该命令显示当前工作目录。

现在,如果在浏览器中输入 http://localhost:8080 ,则应该看到 index.html 文件的内容。 您还可以使用 curl

curl

Testing Docker Volumes

交互式运行容器

处理 bash 等交互式进程时,请使用 -i -t 选项启动容器。

-it 选项告诉Docker将标准输入保留在终端上并分配一个伪tty:

docker container run -it nginx /bin/bash

容器的Bash shell将附加到终端,命令提示符将更改:

root@1da70f1937f5:/#

现在,您可以与容器的外壳进行交互并在其中运行任何命令。

在此示例中,我们提供了命令( /bin/bash )作为已执行的docker docker run 命令的参数,而不是Dockerfile中指定的命令。

结论

Docker是打包和部署应用程序的标准,并且是CI / CD,自动化和DevOps的重要组成部分。

docker container run 命令用于创建和运行Docker容器。

码头工人