Docker命令-docker run

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker命令-docker run相关的知识,希望对你有一定的参考价值。

参考技术A 原文

docker进程运行与独立的容器中,而容器是宿主机的一个进程。宿主机可以使本地的也可以是远程的。每当执行 docker run 之后,容器进程式独立运行的,他有自己的文件系统、网络以及与主机隔离的进程🌲。

这里将介绍如何使用 docker run 运行容器以及容器资源。

一个 docker run 命令使用如下:

docker run 命令必须指定一个容器镜像,镜像开发者可以定义镜像的一些默认值:

开发者可以通过 docker run [options] 添加或者修改镜像的默认设置。此外,开发者几乎可以完全覆盖掉容器运行时的默认设置。正因为 docker run 能修改镜像和容器的默认设置,所以他的 [options] 可选项要比其他任何docker命令都要多。

要知道更多的 [options] ,移步: options type

最好只是懂得 docker run 命令的人去使用这些选项!

当你运行Docker容器的时候你需要决定是要在后台运行还是默认前台运行,当你选择后台运行时会在命令执行后打印出最新运行的容器ID。

想要让你的容器以后台方式运行只需要在使用参数 -d=true 或者 -d 即可。docker设计的默认情况下,如果你的容器以后台方式运行,只有在父进程即docker进程退出的时候才会去把容器退出,除非你使用了 --rm 选项。如果你在运行容器时将 -d 和 --rm 两个选项一起使用,那么容器会在退出或者后台进程停止的的时候自动移除掉(只要一个情况便会自动移除镜像)。

dokcer容器后台运行是不能通过 service x start 来启动的,比如想启动一个后台运行的 nginx 服务:

这样虽然启动了容器内的 nginx 服务,但是是不可用的,因为这种方式违背了后台运行容器的使用规范。nginx服务虽然启动了,但是他的所属容器服务已经停了,导致nginx服务是不可用的。如果想启动一个nginx服务请使用如下命令:

当容器后台运行之后便不回响应命令行的的相关操作,可以通过网络连接或者文件挂载方式查看容器运行的输入输出日志。可以通过 docker attach 来操作。

在不指定 -d 的情况下,容器默认是前台运行的,可以看到容器运行时候的输入输出以及错误信息日志。容器甚至还可以模拟终端输入输出(TTY),配置项如下:

如果你没有指定 -a 参数,docker默认会指定 stdout 和 stderr ,你也可以任意指定你想要的终端显示信息,例如:

为了开启容器终端,你必须指定参数 -i -t 。通常情况下 -i -t 会一起使用 -it ,注意如果容器需要从一个pipe接收输入参数时是不能使用 -t 的,例如:

定义一个容器ID有三种方式:

UUID是由docker的后台进程创建的。如果你没有指定容器名称,那么docker会默认生成一个随机字符串名字。如果你指定了容器的名字,不管是选择前台运行还是后台运行甚至docker网络配置的时候,你都可以在通过名字 name 来引用该容器。

为了方便管理,你可以选择让docker将容器ID写入到一个文件中。这个功能类似于一些程序会将进程PID写入到文件中,例如:

虽然给一个容器指定ID不是严格的要求规范,但是你可以在启动容器的时候指定容器的标签 iamge:tag ,例如:

使用V2或之后的镜像格式制作的镜像文件具有摘要内存寻址功能。只要生成镜像的参数和方式没有改变,那么这个镜像的摘要是可预测和可引用的。

例如下面这个运行一个从 alpine 拉取的镜像:

镜像摘要: sha256:9cacb71397b640eca97488cf08582ae4e4068513101088e9f96c9814bfda95e0

...

果然 docker run 是参数最多的命令,篇幅太多了,先翻译到这里,大致使用已经涵盖了,先去翻译接下来的命令了。

更多信息请参考 原文

更多参数说明:

以上是关于Docker命令-docker run的主要内容,如果未能解决你的问题,请参考以下文章

基于docker的php调用基于docker的mysql数据库的方法

容器化专栏第1辑——理解容器与Docker的基本概念

使用远程调试运行 docker-compose。智能,Java 11

在 .gitlab-ci.yml 中运行 docker-compose build

使用 ssh 从 Gitlab CI 在远程主机上运行 docker-compose

重启docker命令(docker自动重启)