docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker run使用方法

一篇文章看懂docker run的使用方法

作者:代码探险家(小符)

在Docker中,run应该是用户使用最多的命令了,很多人不是很明白run命令的用法,这篇文章主要介绍了关于docker run的使用方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

1. docker run 的基本用法

docker run 的基本格式为:

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

例如,运行一个简单的 Ubuntu 容器:

docker run ubuntu

这会从 Docker Hub 拉取 ubuntu 镜像(如果本地不存在),并启动一个基于该镜像的容器。

2. 常用的 docker run 选项

2.1. -d:后台运行容器

使用 -d 选项可以让容器在后台运行,而不是占据当前终端。它是“detached”模式的缩写。

docker run -d ubuntu

此时容器会在后台运行,你不会看到输出,但可以通过 docker ps 查看容器的状态。

2.2. --name:为容器指定名称

每次启动容器时,Docker 都会为它分配一个随机名称。如果你希望为容器指定一个自定义名称,可以使用 --name 选项。

docker run --name my_container ubuntu

这样,你的容器将以 my_container 为名称,而不是自动生成的名字。

2.3. -it:交互式终端

-i 和 -t 常常一起使用,分别表示交互式模式(-i)和分配一个伪终端(-t)。这通常用于需要与容器交互的场景,例如运行 Bash 终端:

docker run -it ubuntu bash

此命令将启动一个 Ubuntu 容器,并进入 Bash 终端,你可以直接与容器进行交互。

2.4. -p:端口映射

当容器内部的应用需要通过特定端口与外部通信时,可以使用 -p 选项将容器的端口映射到主机的端口。格式为:

docker run -p [host_port]:[container_port] IMAGE

例如,将本地主机的 8080 端口映射到容器的 80 端口:

docker run -p 8080:80 nginx

此时,你可以通过访问 http://localhost:8080 来与 Nginx 服务器交互。

2.5. -v:挂载卷

为了在主机和容器之间共享文件,Docker 提供了卷(Volume)功能。使用 -v 选项可以将主机的目录挂载到容器中。

docker run -v /host/path:/container/path ubuntu

例如,将本地主机的 /data 目录挂载到容器的 /mnt 目录:

docker run -v /data:/mnt ubuntu

这样,容器可以访问并修改主机上的 /data 目录内容。

2.6. --rm:自动删除容器

默认情况下,容器在退出后会保留它的文件系统和状态。使用 --rm 选项可以在容器退出时自动删除该容器,以节省资源。

docker run --rm ubuntu

此容器在任务完成后将被自动删除。

2.7. -e:设置环境变量

通过 -e 选项,可以在容器中设置环境变量。例如,运行一个 MySQL 容器时,通常需要设置 MySQL 的 root 用户密码:

docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw mysql

这会在容器中设置 MYSQL_ROOT_PASSWORD 环境变量。

3. 容器生命周期管理

使用 docker run 启动的容器可以通过以下命令进行管理:

例如,停止名为 my_container 的容器:

docker stop my_container

4. 运行容器的典型场景

4.1. 运行一个 Web 服务器

使用 docker run 快速启动一个 Web 服务器是 Docker 的常见用法。例如,运行一个 Nginx 服务器,并将主机的 8080 端口映射到容器的 80 端口:

docker run -d -p 8080:80 nginx

此时,你可以通过访问 http://localhost:8080 来查看 Nginx 服务器的默认页面。

4.2. 运行数据库服务

你可以使用 docker run 轻松启动一个数据库服务。例如,启动一个 MySQL 容器,并设置 root 用户的密码:

docker run -d -e MYSQL_ROOT_PASSWORD=my-secret-pw -p 3306:3306 mysql

这会启动一个 MySQL 容器,外界可以通过端口 3306 访问数据库。

4.3. 本地开发环境

在开发过程中,很多开发者使用 Docker 运行本地开发环境。例如,运行一个带有 Node.js 的容器:

docker run -it -v $(pwd):/app -w /app node bash

这会将当前目录挂载到容器中的 /app 目录,并进入 Node.js 容器中的 Bash 终端。

5. 进阶用法

除了常用的选项外,docker run 还提供了很多进阶用法,可以让用户对容器的行为和资源进行更精细的控制。

5.1. --network:自定义网络配置

Docker 提供了多种网络模式,例如 bridge、host 和 overlay 等。在容器启动时,可以通过 --network 选项指定网络模式。

docker run --network host nginx

此时,容器中的 Nginx 服务会与主机共享网络。

还可以通过 docker network create 创建自定义的网络,容器可以通过该网络进行互联。

docker network create my_network
docker run --network my_network ubuntu

5.2. --link:连接其他容器

--link 选项允许一个容器与另一个容器进行通信,主要用于在没有自定义网络的情况下快速实现容器间的网络连接。它的格式为:

docker run --link [other_container_name]:[alias] IMAGE

例如:

docker run --link db_container:mysql web_container

此命令会将名为 db_container 的容器的网络别名设置为 mysql,并让 web_container 能通过 mysql 这个别名访问 db_container

5.3. --cpus 和 --memory:限制容器资源

为了防止容器占用过多的系统资源,Docker 提供了 CPU 和内存的限制选项。--cpus 选项允许指定容器可以使用的 CPU 数量:

docker run --cpus="1.5" ubuntu

这将限制容器最多使用 1.5 个 CPU 核心。

--memory 选项则用来限制容器的内存使用:

docker run --memory="512m" ubuntu

这将限制容器使用不超过 512MB 的内存。

5.4. --restart:自动重启策略

--restart 选项允许指定容器的自动重启策略,这在生产环境中非常有用。常用的策略有:

例如:

docker run --restart always nginx

这会确保 Nginx 容器在退出后会自动重启。

5.5. --env-file:批量设置环境变量

除了使用 -e 来单独设置环境变量,Docker 还支持通过 --env-file 从文件中批量加载环境变量。文件的格式是一行一个变量:

docker run --env-file ./env.list ubuntu

env.list 文件的内容示例如下:

MYSQL_ROOT_PASSWORD=my-secret-pw
MYSQL_DATABASE=mydb

这种方式可以方便地管理大量的环境变量。

6. docker run 实践案例

为了更好地理解 docker run 的强大功能,以下是一些常见的实践案例。

6.1. 部署一个 LAMP 环境

假设你需要快速部署一个 Linux + Apache + MySQL + PHP (LAMP) 的开发环境,使用 docker run 可以轻松实现。

首先,运行 MySQL 容器:

docker run -d --name mysql_container -e MYSQL_ROOT_PASSWORD=rootpassword -e MYSQL_DATABASE=app_db mysql

然后,运行 Apache 和 PHP 的组合容器,并将它与 MySQL 容器链接:

docker run -d --name web_container --link mysql_container:mysql -p 8080:80 php:apache

此时,访问 http://localhost:8080 即可查看 LAMP 环境下的网站。

6.2. 持续集成(CI)环境中的应用测试

在持续集成(CI)环境中,docker run 通常用于自动化测试。例如,在每次代码提交后,可以使用一个干净的容器环境来运行测试,确保代码的正确性。

可以通过如下方式运行测试容器:

docker run --rm -v $(pwd):/app -w /app maven mvn test

这个命令会拉取 Maven 镜像,在容器中执行测试,并在完成后自动删除容器。

总结

到此这篇关于docker run使用方法的文章就介绍到这了,更多相关docker run使用方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文