转载自:
易百教程 https://www.yiibai.com/docker/run.html
docker run
命令用于在新容器中运行命令。docker run
命令首先在指定的映像上创建一个可写容器层,然后使用指定的命令启动它。 也就是说,docker run
相当于API /containers/create
和 /containers/(id)/start
。 可以使用docker start
重新启动停止的容器,并使用其所有先前的更改完整。 请参阅docker ps -a
查看所有容器的列表。
用法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
例子
分配名称并分配伪TTY(-name
,-it
)
$ docker run --name test -it debian
root@d6c0fe130dba:/# exit 13
$ echo $?
13
$ docker ps -a | grep test
d6c0fe130dba debian:7 "/bin/bash" 26 seconds ago Exited (13) 17 seconds ago test
此示例使用debian:latest
映像运行一个名为test
的容器。 -it
指示Docker分配连接到容器的stdin的伪TTY; 在容器中创建一个交互式的bash shell。 在该示例中,bash shell通过输入exit 13
退出。该退出代码传递给docker run
的调用者,并记录在测试容器的元数据中。
捕获容器ID(-cidfile)
$ docker run --cidfile /tmp/docker_test.cid ubuntu echo "test"
这将创建一个容器并打印测试到控制台。--cidfile
标志使Docker尝试创建一个新文件,并将容器ID写入它。如果文件已经存在,Docker将返回一个错误。 Docker运行退出时,Docker将关闭此文件。
完整的容器功能(-privileged)
$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied
这将不起作用,因为默认情况下,大多数潜在的危险内核功能被丢弃; 包括cap_sys_admin
(这是挂载文件系统所需的)。 但是,--privileged
标志将允许它运行:
$ docker run -t -i --privileged ubuntu bash
root@50e3f57e16e6:/# mount -t tmpfs none /mnt
root@50e3f57e16e6:/# df -h
Filesystem Size Used Avail Use% Mounted on
none 1.9G 0 1.9G 0% /mnt
设置工作目录[-w]
$ docker run -w /path/to/dir/ -i -t ubuntu pwd
-w
允许在目录中执行命令,这里是/path/to/dir/
。 如果路径不存在,则在容器内创建。
为每个容器设置存储驱动程序选项
$ docker run -it --storage-opt size=120G fedora /bin/bash
挂载tmpfs(-tmpfs)
$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image
--tmpfs
标志使用rw
,noexec
,nosuid
,size = 65536k
选项将一个空tmpfs
装载到容器中。
挂载卷(-v,-read-only)
$ docker run -v `pwd`:`pwd` -w `pwd` -i -t ubuntu pwd
-v
标志将当前工作目录装载到容器中。 -w
允许在当前工作目录中执行命令,将目录更改为pwd
返回的值。所以这个组合使用容器执行命令,但在当前工作目录中。
$ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash
当绑定卷的主机目录不存在时,Docker将自动在主机上创建此目录。 在上面的示例中,Docker将在启动容器之前创建/doesnt/exists
文件夹。
$ docker run --read-only -v /icanwrite busybox touch /icanwrite/here
卷可以与--read-only
组合使用,以控制容器写入文件的位置。 --read-only
标志将容器的根文件系统挂载为只读禁止写入容器的指定卷以外的位置。
原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/docker/run.html