发布网友
共1个回答
热心网友
从镜像创建和运行一个新的容器
使用 `docker run [OPTIONS] IMAGE [COMMAND] [ARG...]` 命令,Docker 会从指定的镜像创建和运行一个容器。例如,`docker run -it --name test debian:latest` 命令会创建一个名为 `test` 的容器,使用 `debian:latest` 镜像,并启动交互式 `bash shell`。通过输入 `exit 13` 可以退出 shell,该值将作为命令的退出码返回给调用者并记录在 `test` 容器的元数据中。
执行结果包括创建容器并将其 ID 写入到一个文件中,如果文件已存在则会返回错误。Docker 在退出时会关闭此文件。
为了获得完整的容器权限,可以使用 `--privileged` 标志。这会解除对内核功能的大多数潜在危险,包括用于挂载文件系统的 `CAP_SYS_ADMIN` 功能。然而,这仅适用于特定的用例,比如在 Docker 内部运行 Docker。
可以通过 `-w` 或 `--workdir` 选项设置容器内的工作目录。例如,`docker run -w /path/to/dir/ IMAGE COMMAND` 命令会在指定目录中执行命令。
使用 `--storage-opt` 设置存储驱动选项,如容器文件系统的大小。`size` 参数可以用于大小,仅适用于特定的存储驱动程序(如 devicemapper、btrfs、overlay2、windowsfilter 和 zfs)。
`--tmpfs` 标志用于在容器内挂载一个空的 tmpfs,使用 `rw、noexec、nosuid` 和 `size=65536k` 选项。
`-v` 或 `--volume` 标志用于在主机上挂载卷到容器中。例如,`docker run -v /host/path:/container/path IMAGE COMMAND` 命令将主机上的 `/host/path` 挂载到容器的 `/container/path`。
从 Docker Engine 23 版本开始,可以使用相对路径。例如,`docker run -v /host/path:/container/path IMAGE COMMAND`。
当指定路径不存在时,Docker 会在主机上自动创建该路径。例如,在 `docker run -v /doesnt/exist:/container/path IMAGE COMMAND` 中,Docker 会在启动容器前创建 `/doesnt/exist` 文件夹。
使用 `--read-only` 标志可以使容器的根文件系统挂载为只读,对除指定卷之外的位置的写入。例如,`docker run --read-only -v /host/path:/container/path IMAGE COMMAND`。
当在 Windows 上发布端口时,必须使用 Windows 风格路径。未绑定到主机的端口(例如 `-p 80:80` 而非 `-p 127.0.0.1:80:80`)将对外部可访问。
`--pull` 标志用于在创建容器时设置镜像的拉取策略。默认情况下,Docker 会在本地缓存中找不到镜像时拉取。`always` 选项始终拉取镜像,以确保它是最新的,而 `never` 选项禁用拉取,仅使用本地缓存的镜像。
使用 `--env`、`-e` 或 `--env-file` 设置容器中的环境变量。例如,`docker run --env VAR=value IMAGE COMMAND`。
`--label`、`-l` 或 `--label-file` 用于在容器上设置元数据。例如,`docker run --label key1=value1 --label key2=value2 IMAGE COMMAND`。
`--network` 选项用于将容器连接到网络。例如,`docker run --network my-net IMAGE COMMAND`。
`--volumes-from` 标志从引用的容器中挂载所有定义的卷。例如,`docker run --volumes-from my-container IMAGE COMMAND`。
`--attach` 或 `-a` 标志允许绑定到容器的 `STDIN`、`STDOUT` 或 `STDERR`。例如,`docker run -a /dev/null IMAGE COMMAND`。
`--restart` 标志用于指定容器的重启策略。例如,`docker run --restart always IMAGE COMMAND`。
`--add-host` 标志用于将其他主机添加到容器的 `/etc/hosts` 文件中。例如,`docker run --add-host docker:192.168.1.1 IMAGE COMMAND`。
`--ulimit` 标志用于设置容器内的 ulimit 设置。例如,`docker run --ulimit memlock=[0:1048576] IMAGE COMMAND`。
`--stop-signal` 标志用于向容器发送系统调用信号以退出。例如,`docker run --stop-signal SIGTERM IMAGE COMMAND`。
`--security-opt` 标志用于在 Windows 上指定 credentialspec 选项。例如,`docker run --security-opt credentialspec=file:///path/to/file IMAGE COMMAND`。
`--stop-timeout` 标志设置在发送预定义的系统调用信号后等待容器停止的秒数。例如,`docker run --stop-timeout 10 IMAGE COMMAND`。
`--isolation` 标志用于指定容器的隔离技术。例如,在 Windows 上使用 `docker run --isolation process IMAGE COMMAND`。
`-m` 或 `--memory` 标志用于指定容器可用内存的硬。例如,`docker run -m 1024m IMAGE COMMAND`。
`--sysctl` 标志用于设置容器内的命名空间内核参数(sysctls)。例如,`docker run --sysctl net.ipv4.ip_forward=1 IMAGE COMMAND`。
通过 `--exec-opt isolation=hyperv` 或 `--isolation=hyperv`,在 Docker 守护程序上设置 `--exec-opt`,可以在 Windows 容器中使用 Hyperv 隔离。
在运行 Docker 容器时,可以使用多种选项和标志来精确控制容器的创建、运行和配置,以满足不同场景和需求。这些选项和标志提供了强大的灵活性,允许用户根据具体应用的要求进行自定义和优化。