使用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...]

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
 

Docker镜像Docker容器的基础,它包含一个完整的文件系统,包括运行一个应用程序所需的所有内容:代码、运行时环境、库、环境变量和配置文件等。当我们在宿主机上执行Docker命令时,可以通过以下步骤来执行Docker镜像: 1. 首先,使用`docker pull`命令从Docker Hub或私有仓库下载所需的Docker镜像。例如,要下载官方的Ubuntu镜像,可以执行以下命令: ``` docker pull ubuntu ``` 2. 下载完成后,可以使用`docker run`命令来创建并运行一个新的Docker容器。例如,要在后台运行一个基于Ubuntu镜像的容器,可以执行以下命令: ``` docker run -d ubuntu ``` 3. 如果需要在容器内执行特定的命令,可以使用`docker exec`命令。例如,要在正在运行的Ubuntu容器内执行一个bash shell,可以执行以下命令: ``` docker exec -it <container_id> bash ``` 其,`<container_id>`是容器的ID或名称。 4. 在容器内执行命令后,可以通过退出容器来停止它。可以使用`docker stop`命令来停止指定的容器。例如,要停止名为"my_container"的容器,可以执行以下命令: ``` docker stop my_container ``` 如果要删除已停止的容器,可以使用`docker rm`命令。例如,要删除名为"my_container"的容器,可以执行以下命令: ``` docker rm my_container ``` 注意:以上命令的`docker`是Docker命令行工具的名称,具体根据你的操作系统和安装方式可能会有所不同。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值