企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# Docker run 命令 * **\-P:** 随机端口映射,容器内部端口**随机**映射到主机的端口 * **\-p:** 指定端口映射,**格式为**:主机(宿主)端口:容器端口(**宿**主机端口:**容**器端口) ***** **常用命令** ``` --privileged=true 使用该参数,container内的root拥有真正的root权限(可根据需要选择是否要该参数) --restart=always 自动重启容器(可根据需要选择是否要该参数) -p 端口映射(宿主机端口:容器端口) -v 容器卷挂载 (宿主机目录 :容器目录) ``` ## **docker run --rm** ``` docker run --rm  --name=test1 alpine ``` 在Docker容器退出时,默认容器内部的文件系统仍然被保留,以方便调试并保留用户数据。 但是,对于foreground容器,由于其只是在开发调试过程中短期运行,其用户数据并无保留的必要,因而可以在容器启动时设置--rm选项,这样在容器退出时就能够自动清理容器内部的文件系统。示例如下: **docker run --rm  --name=test1 alpine**docker run 加上--rm退出容器以后,这个容器就被删除了,方便在临时测试使用。不加--rm 退出容器后,容器只是停止运行,数据任然被保留。 不过容器内数据卷的内容不会被删除。但是,--rm选项不能与-d同时使用(或者说同时使用没有意义),即只能自动清理foreground容器,不能自动清理detached容器。 ## **docker rm -v** 数据卷是被设计用来持久化数据的,它的生命周期独立于容器,**Docker不会在容器被删除后自动删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷。** 如果需要在删除容器的同时移除数据卷。 可以在删除容器的时候使用 **docker rm -v** 这个参数。 ``` docker rm -v XXX   --用于删除数据卷 ``` **docker volume** https://www.jianshu.com/p/ef0f24fd0674 ## **常用命令**: ``` -d, --detach=false # 后台运行容器,并返回容器ID; -i, --interactive=false # 以交互模式运行容器,通常与 -t 同时使用; -t, --tty=false # 为容器重新分配一个伪输入终端,通常与 -i 同时使用; -u, --user="" # 指定容器的用户 -a, --attach=[] # 登录容器(必须是以docker run -d启动的容器) -w, --workdir="" # 指定容器的工作目录 -c, --cpu-shares=0 # 设置容器CPU权重,在CPU共享场景使用 -e, --env=[] # 指定环境变量,容器中可以使用该环境变量 -m, --memory="" # 指定容器的内存上限 -P, --publish-all=false # 指定容器暴露的端口 -p, --publish=[] # 指定容器暴露的端口 -h, --hostname="" # 指定容器的主机名 -v, --volume=[] # 给容器挂载存储卷,挂载到容器的某个目录 --volumes-from=[] # 给容器挂载其他容器上的卷,挂载到容器的某个目录 --cap-add=[] # 添加权限,权限清单详见:http://linux.die.net/man/7/capabilities --cap-drop=[] # 删除权限,权限清单详见:http://linux.die.net/man/7/capabilities --cidfile="" # 运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法 --cpuset="" # 设置容器可以使用哪些CPU,此参数可以用来容器独占CPU --device=[] # 添加主机设备给容器,相当于设备直通 --dns=[] # 指定容器的dns服务器 --dns-search=[] # 指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件 --entrypoint="" # 覆盖image的入口点 --env-file=[] # 指定环境变量文件,文件格式为每行一个环境变量 --expose=[] # 指定容器暴露的端口,即修改镜像的暴露端口 --link=[] # 指定容器间的关联,使用其他容器的IP、env等信息 --lxc-conf=[] # 指定容器的配置文件,只有在指定--exec-driver=lxc时使用 --name="" # 指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字 --net="bridge" # 容器网络设置: bridge # 使用docker daemon指定的网桥 host # 容器使用主机的网络 container:NAME_or_ID > # 使用其他容器的网路,共享IP和PORT等网络资源 none # 容器使用自己的网络(类似--net=bridge),但是不进行配置 --privileged=false # 指定容器是否为特权容器,特权容器拥有所有的capabilities --restart="no" # 指定容器停止后的重启策略: no # 容器退出时不重启 on-failure # 容器故障退出(返回值非零)时重启 always # 容器退出时总是重启 --rm=false # 指定容器停止后自动删除容器(不支持以docker run -d启动的容器) --sig-proxy=true # 设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 ```