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


转载自:

易百教程 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标志使用rwnoexecnosuidsize = 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


文章作者: 唐晨
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 唐晨 !
评论
 上一篇
Dijkstra算法的简单python实现(附代码) Dijkstra算法的简单python实现(附代码)
按照Dijkstra算法的思路用python实现了一下,用邻接矩阵表示点与点之间边的权重。刚接触Dijkstra算法,网上python实现的程序太过复杂因此没看,如果程序有错误欢迎指出。
下一篇 
Docker容器的创建、启动、和停止 Docker容器的创建、启动、和停止
1、容器是独立运行的一个或一组应用,及他们的运行环境。容器是Docker中的一个重要的概念。 2、docker容器的启动有三种方式 a.交互方式,基于镜像新建容器并启动 例如我们可以启动一个容器,打印出当前的日历表 [root@roc
2019-07-05
  目录