docker run

创建并启动一个新容器

语法

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

参数

参数说明示例级别
-d --detach 后台运行容器 docker run -d nginx 常用
-p --publish 映射端口(主机:容器) docker run -p 8080:80 nginx 常用
--name 指定容器名称 docker run --name my-app nginx 常用
-e --env 设置环境变量 docker run -e NODE_ENV=production node 常用
-v --volume 挂载卷(主机路径:容器路径) docker run -v /data:/app/data nginx 常用
--rm 容器停止后自动删除 docker run --rm alpine echo hello 常用
-it 交互式终端模式 docker run -it ubuntu bash 常用
--network 指定网络 docker run --network my-net nginx 进阶
--restart 重启策略 docker run --restart=always nginx 进阶

示例

后台运行 Nginx 并映射端口

docker run -d -p 8080:80 --name web nginx
访问 localhost:8080 即可看到 Nginx 默认页面

运行临时容器执行命令

docker run --rm alpine cat /etc/os-release
执行完自动删除容器

挂载本地目录开发

docker run -d -p 3000:3000 -v $(pwd):/app -w /app node:18 npm start
本地代码变更实时生效

传入环境变量运行

docker run -d -e MYSQL_ROOT_PASSWORD=secret -p 3306:3306 mysql:8
通过环境变量配置数据库密码

常见错误

docker: Error response from daemon: Conflict. The container name is already in use 容器名已存在,用 docker rm 删除旧容器或换一个名字
docker: Error response from daemon: driver failed programming external connectivity: port is already allocated 端口被占用,换一个主机端口或停止占用该端口的进程
Unable to find image 'xxx' locally 镜像不存在,检查镜像名和标签是否正确,或先 docker pull

技巧

相关命令