docker run 命令
1.0、参考
1.1、docker run的作用

创建并运行一个容器。该命令相当于docker create + docker start

1.2、docker run命令的使用格式

docker run的帮助:

docker run命令的使用格式:

docker run [option]... <imageId|imageRepository:[tag]> [commandOfContainer]

docker run是最为复杂的一个命令,参数非常多,下面是一些常用的参数:

参数说明
-h <hostname>容器的hostname,默认是容器的ID
-p <portOfHost[:portOfContainer]>端口映射,将宿主机的端口和容器的端口进行映射,这样就可以通过http://ipOfHost:portOfHost访问容器了
-u <username|uid>指定启动的容器以哪个用户登陆,默认是root
-e <key=value>设置容器启动后可以使用的环境变量,这样动态指定比较灵活
-name <str>给容器起一个名字,这样,我们在启动、重启、停止、删除等后续的容器操作中使用这个名字, 如果不起名字,只能使用containerId
-d以后台方式运行,这样,我们执行完这条命令,还可以干其他事情,写脚本最常用
-i以交互方式运行,是阻塞式的
-t分配一个伪终端,这个参数通常与-i参数一起使用,然后, 在后面跟上容器里的/bin/bash,这样就把我们带到容器里去了。
--rm在容器停止的时候自动删除容器。如果是临时使用的话,这样是非常方便的。

示例1:

sudo docker run -p 3036:3036 -d -e MYSQL_ROOT_PASSWORD=123456 -name mysql5.7 mysql:5.7

说明:

使用ImageRepositorymysqlImageTag5.7的镜像, 创建并运行了一个新容器,新容器的名字为mysql5.7,以后台方式运行,把宿主机器的3036端口与 要启动的这个新容器的3306端口进行映射,这样,我们就可以通过宿主机的IP访问容器了,同时还给 新容器设置了一个环境变量,在容器中可以直接使用。

示例2:

sudo docker run -it -name ubuntu ubuntu /bin/bash

说明:

使用ImageRepositoryubuntuImageTaglatest的镜像, 创建并运行了一个新容器,新容器的名字为ubuntu,以交互方式运行,容器启动后执行了容器里的/bin/bash命令。

这样,我们就创建了一个Ubuntu服务器的容器, 这比使用Virtual Box等虚拟机安装Ubuntu操作系统简单多了!而且运行速度更快!

1.2.5、--privileged=[false|true]

是否授予此容器全部权限。

默认是--privileged=false,也就是说默认的容器内的root用户并没有真正的root权限, 它只有宿主机器上的普通用户的权限, 在容器内无法操作宿主机器上的东西。但是一但设置了--privileged=true,在容器内可以操作宿主的任意东西。显然, 这样是很危险的。

--privileged=[false|true]是一刀切的做法,不建议这么做,建议使用精确的权限分配参数--cap-add--cap-drop

1.2.6、--cap-add=<Capability>

追加此容器指定的权限。

此参数在GNU/Linux上是使用libcap实现的。

示例:

docker run -d --cap-add NET_ADMIN --cap-add NET_RAW --name myName xx:latest
1.2.7、--cap-drop=<Capability>

去除此容器指定的权限。

此参数在GNU/Linux上是使用libcap实现的。

示例:

docker run -d --cap-drop NET_ADMIN --cap-drop NET_RAW --name myName xx:latest