使用Docker run命令可以创建并运行一个新的容器,该命令后面通常跟着要运行的镜像的名称和一个或多个参数。
使用Docker run运行容器
Docker run命令的基本用法
Docker run命令用于创建并启动一个新的容器,其基本语法如下:
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
各选项的含义如下:
选项 | 含义 |
d | 以后台模式运行容器 |
i | 以交互模式运行容器,通常与t一起使用 |
t | 为容器重新分配一个伪输入终端 |
name | 为容器指定一个名称 |
p | 将容器内部的端口映射到宿主机的一个端口 |
v | 将宿主机的一个目录或文件挂载到容器内部 |
rm | 在容器退出后自动删除容器 |
link | 链接到另一个容器 |
net | 指定容器的网络连接类型 |
e | 设置环境变量 |
env | 设置环境变量,格式为KEY=VALUE |
volumesfrom | 从其他容器挂载卷 |
capadd | 添加容器的特权能力 |
device | 添加主机设备到容器中 |
restart | 设置容器重启策略 |
privileged | 给容器添加特权,如设置IPC、内存等限制 |
tmpfs | 添加一个临时文件系统挂载点 |
readonly | 设置容器为只读模式 |
securityopt | 设置SELinux安全选项 |
cpushares | 设置容器CPU使用权重 |
memoryswap | 设置容器内存交换区大小 |
oomkilldisable | 禁用OOM Killer(内存溢出杀手) |
pidslimit | 设置容器PID数量限制 |
cpus | 设置容器可以使用的CPU核数 |
ulimit | 设置容器的资源限制,如文件描述符、最大线程数等 |
userns | 设置容器使用的用户命名空间 |
ipc | 设置容器的IPC机制,如共享内存、信号量等 |
uts | 设置容器的UTS命名空间 |
netalias | 设置容器的网络别名 |
macaddress | 设置容器的MAC地址 |
label | 设置容器的标签(metadata) |
workdir | 设置容器的工作目录 |
entrypoint | 覆盖容器的入口点(默认为镜像的入口点) |
cmd | 覆盖镜像的默认命令(ENTRYPOINT指令)和参数(CMD指令) |
healthcmd | 设置健康检查命令,用于检查容器是否正常运行 |
healthinterval | 设置健康检查的时间间隔(秒) |
healthtimeout | 设置健康检查的超时时间(秒) |
healthretries | 设置健康检查重试次数 |
healthstartperiod | 设置健康检查开始前的等待时间(秒) |
logdriver | 设置日志驱动(如jsonfile、syslog等) |
logopt | 设置日志选项,如日志级别、输出格式等 |
storagedriver | 设置存储驱动(如aufs、overlay2等) |
storageopt | 设置存储选项,如存储后端的URL、认证信息等 |
selinuxoptions | 设置SELinux选项,如上下文、策略等 |
securityopts | 设置安全选项,如seccomp、apparmor等 |
stopsignal | 设置停止容器的信号(如SIGTERM、SIGKILL等) |
initpath | 设置初始化进程路径(仅适用于自定义init镜像) |
initargs | 设置初始化进程参数(仅适用于自定义init镜像) |
busyboxoptions | 设置busybox选项,如共享库路径、环境变量等(仅适用于busybox镜像) |
capabilities | capabilities.txt文件的内容添加到容器中(仅适用于自定义镜像) |
w, webhook |
如果容器状态改变,发送HTTP请求到指定的URL(仅适用于Docker API CDN.1或更高版本) |
常用示例
1、后台运行一个Nginx容器,并将宿主机的80端口映射到容器的80端口:
docker run d p 80:80 nginx
2、以交互模式运行一个MySQL容器,并指定用户名和密码:
docker run it e MYSQL_ROOT_PASSWORD=mypassword p 3306:3306 mysql:latest /bin/bash
3、创建一个名为mycontainer的容器,并在其中运行一个简单的shell命令:
docker run d mycontainer /bin/echo "Hello, World!" > /tmp/hello.txt && cat /tmp/hello.txt && sleep infinity & echo $! > /var/run/mycontainer.pid && chmod +x /var/run/mycontainer.pid && chown root:root /var/run/mycontainer.pid && chown root:root /tmp/hello.txt && chown root:root /var/run/mycontainer.pid && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp/hello.txt && chmod u+rwx /var/run/mycontainer.pid && chmod u+rwx /tmp与回答:解答与问题1:如何查看正在运行的Docker容器?
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/545675.html