使用docker在镜像中运行宿主机程序

本文详细介绍了 Docker run 命令的使用方法,包括如何创建和启动容器、设置容器的工作目录、挂载卷和 tmpfs、使用特权模式等。通过多个实例展示了如何利用 Docker run 的各种选项进行容器的高级配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载自:

易百教程 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...]

Shell

例子

分配名称并分配伪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

Shell

此示例使用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"

Shell

这将创建一个容器并打印测试到控制台。--cidfile标志使Docker尝试创建一个新文件,并将容器ID写入它。如果文件已经存在,Docker将返回一个错误。 Docker运行退出时,Docker将关闭此文件。

完整的容器功能(-privileged)

$ docker run -t -i --rm ubuntu bash
root@bc338942ef20:/# mount -t tmpfs none /mnt
mount: permission denied

Shell

这将不起作用,因为默认情况下,大多数潜在的危险内核功能被丢弃; 包括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

Shell

设置工作目录[-w]

$ docker  run -w /path/to/dir/ -i -t  ubuntu pwd

Shell

-w允许在目录中执行命令,这里是/path/to/dir/。 如果路径不存在,则在容器内创建。

为每个容器设置存储驱动程序选项

$ docker run -it --storage-opt size=120G fedora /bin/bash

Shell

挂载tmpfs(-tmpfs)

$ docker run -d --tmpfs /run:rw,noexec,nosuid,size=65536k my_image

Shell

--tmpfs标志使用rwnoexecnosuidsize = 65536k选项将一个空tmpfs装载到容器中。

挂载卷(-v,-read-only)

$ docker  run  -v `pwd`:`pwd` -w `pwd` -i -t  ubuntu pwd

Shell

-v标志将当前工作目录装载到容器中。 -w允许在当前工作目录中执行命令,将目录更改为pwd返回的值。所以这个组合使用容器执行命令,但在当前工作目录中。

$ docker run -v /doesnt/exist:/foo -w /foo -i -t ubuntu bash

Shell

当绑定卷的主机目录不存在时,Docker将自动在主机上创建此目录。 在上面的示例中,Docker将在启动容器之前创建/doesnt/exists文件夹。

$ docker run --read-only -v /icanwrite busybox touch /icanwrite/here

Shell

卷可以与--read-only组合使用,以控制容器写入文件的位置。 --read-only标志将容器的根文件系统挂载为只读禁止写入容器的指定卷以外的位置。

原文出自【易百教程】,商业转载请联系作者获得授权,非商业转载请保留原文链接:https://www.yiibai.com/docker/run.html
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值