Docker 的 run
命令用于创建并启动一个新的容器。它是 Docker 中最常用的命令之一,基本语法为:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数 | 说明 |
---|---|
-d 或 --detach |
后台运行容器(守护态)。 |
-it |
以交互模式运行容器(通常与 bash 结合使用,如 -it ubuntu bash )。 |
--name |
为容器指定名称(如 --name my_container )。 |
-p 或 --publish |
映射宿主机端口到容器端口(格式:宿主机端口:容器端口 ,如 -p 8080:80 )。 |
-P 或 --publish-all |
自动映射所有暴露的容器端口到宿主机随机高端口。 |
-v 或 --volume |
挂载宿主机目录到容器(格式:宿主机目录:容器目录 ,如 -v /data:/app/data )。 |
-e 或 --env |
设置环境变量(如 -e KEY=value ,支持多次使用)。 |
--env-file |
从文件加载环境变量(如 --env-file .env )。 |
--rm |
容器停止后自动删除(适合临时任务)。 |
--restart |
容器退出时的重启策略(如 --restart always 或 --restart on-failure:5 )。 |
--network |
指定容器网络模式(如 --network bridge 、host 、none )。 |
--memory 和 --cpus |
限制容器资源(如 --memory=500m 限制内存,--cpus=1.5 限制 CPU)。 |
--privileged |
赋予容器特权模式(访问宿主机设备)。 |
-u 或 --user |
指定运行用户(如 -u 1000 或 -u user:group )。 |
--restart
选项no
默认值,容器退出后不会自动重启。
on-failure[:max-retries]
:max-retries
指定最大重试次数(例如 on-failure:3
)。always
docker stop
手动停止的容器不会触发此策略。unless-stopped
always
的区别:如果容器是手动停止的(docker stop
),即使 Docker 服务重启,容器也不会自动启动。容器崩溃时自动重启(最多重试 3 次)
docker run --restart=on-failure:3 my_app
始终自动重启(适合关键服务)
docker run --restart=always nginx
除非手动停止,否则自动重启
docker run --restart=unless-stopped mysql
启动一个后台运行的 Nginx 容器:
docker run -d -p 80:80 --name my_nginx nginx
运行一次性任务并自动删除容器:
docker run --rm alpine echo "Hello, Docker!"
挂载目录并设置环境变量:
docker run -d -v /host/data:/app/data -e DB_HOST=db my_app_image
交互式进入容器 Shell:
docker run -it ubuntu bash
限制资源并指定重启策略:
docker run -d --memory=1g --cpus=2 --restart=on-failure:3 my_service
后台运行容器
-d
或 --detach
示例:
docker run -d nginx
交互式运行容器
-it
(组合使用 -i
交互模式 + -t
分配伪终端)
示例:
docker run -it ubuntu /bin/bash
端口映射
-p <主机端口>:<容器端口>
示例:
docker run -p 8080:80 nginx # 将主机的 8080 端口映射到容器的 80 端口
挂载数据卷
-v <主机路径>:<容器路径>
示例:
docker run -v /host/data:/container/data nginx
设置环境变量
-e <变量名>=<值>
示例:
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
容器名称
--name <名称>
示例:
docker run --name my_nginx nginx
自动删除容器(退出后)
--rm
示例:
docker run --rm alpine echo "Hello"
资源限制
--memory
:限制内存docker run --memory 512m nginx
--cpus
:限制 CPUdocker run --cpus 2 nginx
网络模式
--network <模式>
示例:
docker run --network host nginx # 使用主机网络
启动一个 Nginx 容器
docker run -d -p 80:80 --name my_web nginx
进入 Ubuntu 容器的 Shell
docker run -it ubuntu /bin/bash
运行 MySQL 并设置密码
docker run -d --name mysql_db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql
挂载目录并运行应用
docker run -v /home/user/app:/app -w /app python:3.9 python app.py
IMAGE
),Docker 会自动从仓库(如 Docker Hub)拉取。docker run --help
查看完整参数列表。docker ps -a
查看所有容器(包括已停止的)。Docker 的 run
命令是启动新容器的核心指令,其用法和常见参数如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数 | 说明 |
---|---|
-d |
后台运行容器(守护模式) |
-it |
交互式终端(常用于进入容器) |
--name |
指定容器名称 |
-p |
端口映射(主机端口:容器端口) |
-v |
卷挂载(主机目录:容器目录) |
-e |
设置环境变量(如 -e "KEY=value" ) |
--rm |
容器退出后自动删除 |
--network |
指定网络模式(如 host 或自定义网络) |
--memory |
限制内存使用(如 --memory 512m ) |
启动一个交互式的 Ubuntu 容器
docker run -it ubuntu bash
-it
:分配交互式终端bash
:容器启动后执行的命令后台运行 Nginx 并映射端口
docker run -d -p 80:80 --name my-nginx nginx
-d
:后台运行-p 80:80
:将宿主机的 80 端口映射到容器的 80 端口--name
:容器命名为 my-nginx
挂载主机目录到容器
docker run -v /host/path:/container/path -it ubuntu
-v
:将宿主机的 /host/path
挂载到容器的 /container/path
设置环境变量
docker run -e "MYSQL_ROOT_PASSWORD=123456" -d mysql
-e
:为 MySQL 容器设置 root 密码限制资源使用
docker run --memory 256m -it ubuntu
COMMAND
后退出,若需长期运行需指定持续进程(如 Web 服务)。docker ps
docker stop <容器ID> # 停止容器
docker rm <容器ID> # 删除容器
启动一个带有端口映射、卷挂载和环境变量的 Python 应用:
docker run -d \
-p 5000:5000 \
-v /host/app:/app \
-e "FLASK_ENV=production" \
--name my-flask-app \
python:3.9 \
python /app/app.py
掌握这些参数后,你可以灵活部署各种容器化应用。如果需要更高级的配置(如自定义网络、资源限制),可参考 Docker 官方文档。
以下是关于 Docker run
命令的详细说明,结合知识库中的信息整理而成:
docker run
是 Docker 中最核心的命令之一,用于创建并启动一个新的容器。docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
OPTIONS
:配置容器的选项(如 -d
后台运行、-v
挂载卷等)。IMAGE
:要使用的镜像名称(如 nginx
、ubuntu
)。TAG
:镜像的标签(如 latest
、1.0
),未指定时默认使用 latest
。COMMAND
:覆盖镜像默认的启动命令(如 /bin/bash
)。ARG
:传递给 COMMAND
的参数。参数 | 说明 | 示例 |
---|---|---|
-d |
后台运行容器(守护进程模式)。 | docker run -d nginx |
-it |
交互式终端(分配终端并保持 STDIN 打开)。 | docker run -it ubuntu /bin/bash |
--name |
指定容器名称(默认随机生成)。 | docker run --name my_nginx -d nginx |
-p |
端口映射(主机端口:容器端口)。 | docker run -p 8080:80 nginx (将容器 80 端口映射到主机 8080) |
-P |
随机端口映射(自动将容器的暴露端口映射到主机的随机高端口)。 | docker run -P nginx |
-v |
挂载卷(主机目录:容器目录[:模式])。 | docker run -v /data:/app/data nginx (将主机 /data 挂载到容器 /app/data ) |
--rm |
容器退出后自动删除(适用于临时容器)。 | docker run --rm ubuntu echo "Hello" |
-u |
指定用户运行容器(如 root )。 |
docker run -u root ubuntu |
--privileged |
赋予容器特权模式(允许访问硬件设备)。 | docker run --privileged=true jenkins/jenkins |
-e |
设置环境变量。 | docker run -e ENV_VAR=value my_image |
-w |
指定工作目录。 | docker run -w /app node npm start |
--link |
链接其他容器(Docker Compose 推荐使用网络替代)。 | docker run --link db_container:db app_image |
docker run ubuntu:latest
ubuntu
镜像默认命令是 /bin/bash
,但未指定命令时会退出)。docker run -it ubuntu:latest /bin/bash
-i
保持 STDIN 开放,-t
分配伪终端)。docker run -d -p 8080:80 --name my_nginx nginx:latest
docker run -d -v /host/path:/container/path nginx:latest
/host/path
目录挂载到容器的 /container/path
,实现数据持久化或共享。docker run -d --privileged --name jenkins_hogwarts jenkins/jenkins:lts
docker run -u root -e USERNAME=admin -w /app my_image python app.py
root
身份运行,设置环境变量 USERNAME=admin
,工作目录为 /app
,执行 python app.py
。run
命令中的参数(端口、卷、环境变量等)。-d
,容器会在命令执行完毕后退出(如 docker run ubuntu echo "Hello"
)。-d
后台模式。-p
需明确指定端口,-P
会随机映射容器暴露的端口。-v
挂载卷或 Docker 卷(docker volume create
)避免数据丢失。docker rm $(docker ps -a -q)
删除所有停止的容器。docker system prune
清理未使用的镜像、网络等。docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止)
docker exec -it <容器名/ID> /bin/bash # 进入 Ubuntu/Debian 容器
docker exec -it <容器名/ID> cmd # 进入 Windows 容器
docker stop <容器名/ID> # 停止容器
docker rm <容器名/ID> # 删除已停止的容器
docker run
是 Docker 的核心命令,通过灵活组合参数可以实现容器的高效管理和配置。常用参数包括 -d
、-it
、-p
、-v
等,结合示例可快速掌握其用法。更多高级功能(如网络配置、资源限制)可参考 Docker 官方文档或知识库中的其他命令。
docker run
是 Docker 里极为常用的命令,它的用途是创建并运行一个新的容器。以下是此命令的基本语法:
docker run [选项] <镜像名> [命令] [参数]
下面为你介绍一些常用选项及其功能:
-d
:让容器在后台以守护进程的形式运行。docker run -d nginx
-it
:开启一个交互式会话,一般用于需要与容器交互的场景,像进入容器的 shell 环境。docker run -it ubuntu bash
-p
:将容器内的端口映射到宿主机的端口,格式为 宿主机端口:容器端口
。docker run -p 8080:80 nginx
-v
:把宿主机的目录或文件挂载到容器内,这样能实现数据的持久化和共享。docker run -v /host/path:/container/path nginx
-e
:设置容器内的环境变量。docker run -e MYSQL_ROOT_PASSWORD=password mysql
--name
:为容器指定一个自定义的名称。docker run --name my-nginx nginx
--cpus
:限制容器可以使用的 CPU 核心数。docker run --cpus=0.5 nginx
-m
:限制容器可以使用的内存大小。docker run -m 512m nginx
这些只是 docker run
命令常用选项的一部分,你可以通过 docker run --help
命令查看完整的选项列表。
Docker 的 run
命令是 Docker 中最常用的命令之一,用于创建并启动一个新的容器。它的基本语法如下:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
以下是一些常用的 run
命令选项及其说明:
选项 | 说明 |
---|---|
-d |
后台运行容器(detached mode)。 |
-i |
保持标准输入打开(interactive mode)。 |
-t |
分配一个伪终端(pseudo-TTY)。 |
-p |
端口映射,格式为 主机端口:容器端口 。 |
-v |
挂载卷,格式为 主机路径:容器路径 。 |
--name |
为容器指定一个名称。 |
--rm |
容器停止后自动删除。 |
-e |
设置环境变量,格式为 KEY=VALUE 。 |
--network |
指定容器的网络连接类型(如 host 、bridge 、none )。 |
--restart |
设置容器的重启策略(如 always 、on-failure )。 |
--cap-add |
添加 Linux 能力(capability)。 |
--cap-drop |
移除 Linux 能力(capability)。 |
--privileged |
给容器赋予更高的权限(通常用于需要访问主机设备的场景)。 |
--read-only |
将容器的根文件系统设置为只读。 |
--restart |
设置容器的重启策略,如 always 、on-failure 、unless-stopped 等。 |
docker run hello-world
这个命令会从 Docker Hub 下载 hello-world
镜像,并运行它。
docker run -d nginx
这个命令会在后台启动一个 Nginx 容器。
docker run -p 8080:80 nginx
将主机的 8080 端口映射到容器的 80 端口。
docker run -v /host/path:/container/path nginx
将主机的 /host/path
目录挂载到容器的 /container/path
。
docker run --name my-nginx -d nginx
为容器指定一个名称 my-nginx
。
docker run -e ENV_VAR=value nginx
在容器中设置环境变量 ENV_VAR
。
docker run -it ubuntu bash
启动一个 Ubuntu 容器,并进入其终端。
docker run --rm nginx
容器停止后会自动删除。
docker run --restart=always nginx
设置容器在主机重启时自动启动。
docker run -m 512m --cpus=2.0 nginx
限制容器使用最多 512MB 内存和 2 个 CPU 核心。
运行以下命令可以查看当前正在运行的容器:
docker ps
查看所有容器(包括停止的):
docker ps -a
如果容器已经在后台运行,可以使用以下命令进入:
docker exec -it <container_id_or_name> bash
停止容器的命令:
docker stop <container_id_or_name>
删除容器的命令:
docker rm <container_id_or_name>
docker run
是一个非常强大的命令,通过组合不同的选项,可以满足各种复杂的容器运行需求。根据实际场景选择合适的选项,可以让容器的运行更加高效和安全。
docker run
命令用于创建一个新的容器并运行一个命令。以下是docker run
命令的基本用法和一些常用参数:
docker run [选项] <镜像名称> [命令] [参数]
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
-d
或 --detach
:以后台模式运行容器(守护进程模式)。-p
或 --publish
:将容器的端口映射到主机的端口。-v
或 --volume
:将主机的目录或文件挂载到容器中。--name
:为容器指定一个名称。-e
或 --env
:设置环境变量。--rm
:容器退出时自动删除容器。-it
:交互模式,通常与/bin/bash
一起使用。运行一个简单的容器
docker run hello-world
以后台模式运行Nginx容器
docker run -d --name my-nginx nginx
将容器的80端口映射到主机的8080端口
docker run -d -p 8080:80 --name my-nginx nginx
挂载主机目录到容器
docker run -d -v /host/path:/container/path --name my-nginx nginx
设置环境变量并运行容器
docker run -d -e MY_ENV_VAR=value --name my-nginx nginx
交互模式运行容器
docker run -it ubuntu /bin/bash
-d
:后台运行容器
docker run -d nginx
--name
:指定容器名称
docker run --name my_nginx nginx
-it
:开启交互式终端(通常配合 /bin/bash
使用)docker run -it ubuntu /bin/bash
-p
:端口映射(主机端口:容器端口)docker run -p 8080:80 nginx
-v
:挂载主机目录到容器docker run -v /host/data:/container/data nginx
-e
:设置容器内环境变量docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
--memory
:限制内存
docker run --memory=512m nginx
--cpus
:限制 CPU 核数
docker run --cpus=1.5 nginx
docker run -d -p 80:80 --name webserver nginx
docker run --rm alpine echo "Hello Docker"
docker run -it --entrypoint /bin/sh nginx
Docker 的 run
命令是启动容器的核心指令,其功能强大且参数丰富。以下是综合多个文档的详细解析:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
• IMAGE
:必选参数,指定容器基于的镜像。
• COMMAND
:容器启动后执行的命令(默认为镜像定义的命令)。
• 后台运行:-d
示例:docker run -d nginx:latest
• 交互模式:-it
(需同时使用 -i
交互模式和 -t
分配终端)
示例:docker run -it centos:7 /bin/bash
• 端口映射:
• -p 宿主机端口:容器端口
:指定映射(如 -p 80:80
)
• -P
:随机映射容器所有暴露端口到宿主机高位端口
• 网络类型:--net
(支持 bridge
/host
/none
等)
示例:docker run --net=host nginx:latest
• CPU限制:
• --cpuset-cpus="0-2"
:绑定容器到指定 CPU 核心
• --cpus
:限制容器可用的 CPU 核数
• 内存限制:-m
示例:docker run -m 500m --memory-swap=1g nginx:latest
• 数据卷挂载:-v 宿主机目录:容器目录
示例:docker run -v /data:/app/data nginx:latest
• 命名容器:--name
示例:docker run --name mynginx nginx:latest
• 设置主机名:-h
示例:docker run -h myhost centos:7
• 单变量:-e KEY=VALUE
示例:docker run -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
• 从文件加载:--env-file
示例:docker run --env-file=env.list nginx:latest
• 自动清理容器:--rm
(退出后自动删除)
示例:docker run --rm -it centos:7 bash
• 链接其他容器:--link
(已逐渐被网络替代)
示例:docker run --link redis:redis-server app
运行 Nginx 并映射端口
docker run -d -p 80:80 --name myweb nginx:latest
交互式运行 CentOS 并进入终端
docker run -it centos:7 /bin/bash
挂载目录并设置环境变量
docker run -d -v /host/data:/app/data -e APP_ENV=prod myapp:latest
限制资源运行 MySQL
docker run -d --name db -m 1g --cpus=2 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
• 镜像版本:尽量指定镜像版本(如 nginx:1.23.4
),避免默认拉取 latest
导致版本冲突。
• 资源限制:过度限制可能导致容器崩溃,需根据实际需求调整。
• 日志管理:默认日志可能占用磁盘空间,可通过 --log-opt
限制大小。
如需更完整的参数列表,可参考 Docker 官方文档。
Docker 的 run
命令用于从镜像创建并运行容器。以下是其基础用法和常用参数:
docker run [选项] 镜像名 [命令] [参数]
后台运行
-d, --detach
让容器在后台运行(脱离终端)。
docker run -d nginx
端口映射
-p, --publish <主机端口>:<容器端口>
将容器端口映射到主机端口。
docker run -p 8080:80 nginx
挂载卷
-v, --volume <主机路径>:<容器路径>
将主机目录或文件挂载到容器中。
docker run -v /data:/app/data ubuntu
环境变量
-e, --env <变量名>=<值>
设置环境变量。
docker run -e MY_VAR="hello" my-image
指定容器名
--name <名称>
为容器指定自定义名称(默认随机生成)。
docker run --name my_nginx -d nginx
运行后自动删除
--rm
容器退出后自动删除(适合临时任务)。
docker run --rm ubuntu echo "Hello World"
运行交互式 Shell
docker run -it --name my_ubuntu ubuntu /bin/bash
运行带持久化数据的 Nginx
docker run -d -p 80:80 -v /my_nginx_html:/usr/share/nginx/html --name my_nginx nginx
运行带环境变量的镜像
docker run -e NAME="Alice" -e AGE=30 my-app
docker run
会同时创建并启动容器,若需仅启动已存在的容器,使用 docker start
。需要更具体的用法或场景说明吗?
Docker的run
命令是用于创建并运行一个新的容器。以下是关于该命令的一些详细信息:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTIONS:一系列用于配置容器运行方式的选项[3]。
IMAGE:要运行的容器镜像[3]。
COMMAND:在容器内部执行的命令[3]。
ARG:传递给命令的参数[3]。
容器运行模式参数
-d, --detach=false
:以后台模式运行容器,将容器放置在后台运行,作为守护进程[1]。-it
:以交互模式运行容器,允许与容器进行交互[1]。--rm
:容器退出后自动删除[2]。容器标识相关参数
--name=""
:为容器指定一个名称(可以根据需要更改为您喜欢的名称)[1]。端口映射参数
-p=[]
:将容器的端口映射到主机上的一个端口[1]。数据卷挂载参数
-v, --mount=[[
:挂载主机上的文件或目录到容器内部[1]。环境变量设置参数
-e=[]
:设置环境变量[1]。容器重启策略参数
--restart=""
:指定容器在退出时的重启策略[1]。网络设置参数
--network="bridge|host|none|container:[name|id]"
:指定容器使用的网络模式[1]。其他参数
--privileged=false
:给容器赋予特权,可以访问主机的设备[1]。--cap-add=[]
:增加容器的 Linux 能力[1]。--cap-drop=[]
:删除容器的 Linux 能力[1]。--tmpfs=[]
:在容器内创建临时文件系统[1]。--ulimit=[]
:设置容器的资源限制[1]。--security-opt=[]
:设置容器的安全选项[1]。--cpu-shares=0
:设置容器的 CPU 份额[1]。--memory=""
:设置容器可使用的内存限制[1]。--hostname=""
:设置容器的主机名[1]。--user=""
:指定容器运行时的用户名或 UID[1]。--volume-driver=""
:指定容器使用的卷驱动程序[1]。--shm-size=""
:设置容器的共享内存大小[1]。--add-host=[]
:向容器的 /etc/hosts
文件添加自定义主机名和 IP 映射[1]。--read-only=false
:将容器的文件系统设置为只读模式[1]。--cpu-quota=0
:设置容器的 CPU 配额[1]。--cpu-period=0
:设置容器的 CPU 周期[1]。--dns=[]
:指定容器使用的自定义 DNS 服务器[1]。--dns-search=[]
:指定容器的 DNS 搜索域[1]。--sysctl=[]
:设置容器的内核参数[1]。--label=[]
:为容器添加标签[1]。docker run --restart no,always,on-failure,unless-stopped
笔记250406