使用Docker Run命令启动Docker容器
在Linux系统上安装并运行Docker服务后,下一步是启动运行Docker容器。
在下面的教程中,我们将学习如何使用Docker Run命令创建Docker引擎上的新容器。
- 从镜像创建一个新的Docker容器。
- 容器名称。
- 运行docker容器在背景中。
- 将伪终端分配给容器。
- 端口映射。
- 链接容器。
- 从主机安装音量。
- 命令选项。
Docker Run命令从镜像创建新的Docker容器。
Docker运行的语法如下:
docker run [OPTIONS] IMAGE [COMMAND]
唯一必需的命令参数是Docker镜像 IMAGE。
要启动新的Docker容器,我们需要一个Docker镜像,如果镜像不存在,Docker将从Docker Hub下载镜像,然后创建并启动新容器。
示例:从镜像创建一个新的Docker容器
以下命令将启动一个来自Ubuntu:16.04镜像的“Ubuntu-Server”的新Ubuntu容器。
docker run -d -t --name ubuntu-server ubuntu:16.04
- -d - 在后台运行容器。
- -t - 分配伪tty。
使用docker exec命令将shell会话与容器中的shell会话:
docker exec -it ubuntu-server bash
列出运行的运行容器与Docker PS:
docker ps
要列出所有容器,请键入:
docker ps -a
容器名称
可以通过容器ID或者名称识别Docker容器。
默认情况下,docker守护程序如果未指定名称,则将随机名称分配给容器。
我们可以使用--name选项为容器分配名称。
docker run --name some-name image
运行docker容器在背景中
Docker容器可以在分离模式(背景)或者前景模式下启动。
默认模式是将容器在前台启动的前景模式,并使用当前控制台进程的标准输入,输出和标准错误。
要在后台运行容器,请使用-d选项。
docker run -d --name some-redis redis
使用-d选项容器将从背景中启动并继续在后台运行。
将伪终端分配给容器
某些容器需要在容器开始使用Docker Run命令时分配伪终端。
这是使用-t选项完成的。
docker run -d -t --name ubuntu-server ubuntu:16.04
请注意,并非所有容器都需要从-t选项开始。
如果我们在Docker容器上运行像Ubuntu或者Fedora这样的操作系统,我们需要使用-t选项。
在启动容器时暴露端口
我们需要创建端口映射以将容器的内部端口暴露到外部。
使用-p选项,我们将容器的内部端口映射到主机上的端口。
docker run -d -p host_port:container_port image
在以下示例中,我们创建一个带有主机端口80映射到容器端口80的新Apache Httpd容器。
docker run -d -p 80:80 --name apache-web httpd:latest
使用与另一个容器的链接创建新容器
当我们开始一个新的容器时,我们可以将另一个容器与--link标志链接到新容器。
在以下示例中,首先我们创建一个MySQL容器:
docker run -d --name my_server -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
接下来,我们将使用与MySQL容器的链接创建HTTPD容器:
docker run -d -p 80:80 --name apache --link my_server:mysql httpd:latest
Apache容器现在可以访问MySQL实例中的数据库。
在Apache实例中,MySQL主机应为MySQL容器的名称或者ID。
mysql -p -h my_server
从主机安装卷
使用-v选项,我们可以将主机上的目录和文件安装到容器上。
docker run -v host_dir:/container_dir image:tag
在以下示例中,我们开始一个新的Apache容器,内容将从主机上的/var/www/html目录中提供服务。
docker run -d -p 80:80 -v /var/www:/var/www httpd:latest
Docker运行命令选项
-d | 在后台运行容器。 |
-t | 分配一个伪TTY。 |
-e | 在容器内设置环境变量。 |
-h | 设置docker容器的主机名。 |
--link=[] | 添加到另一个容器的链接。 |
-m, --memory="" | 限制容器的可用内存,单位可以是b、k、m或者g。如果指定限制为0(不使用-m),则容器的内存不受限制。 |
--mac-address="" | 设置容器MAC地址(例如92:d0:c6:0a:29:33)。 |
--name="" | 为容器指定一个名称。如果未指定,docker将为docker容器分配一些随机名称。 |
-p | 将容器的端口或者端口范围发布到主机。 |
-P | 将所有公开的端口发布到主机接口上的随机端口。默认值为false。 |
--rm | 退出时自动移除容器。 |