Docker 容器管理和镜像管理基础知识(二)

2024-01-07 17:47:02

Docker 容器管理和镜像管理

容器管理

docker create 命令用于在 Docker 中创建一个新的容器,但不会自动启动它。这个命令会返回容器的 ID,可以使用它来
进一步操作容器,这也是与 docker run 命令的一个区别

以下是 docker create 的基本用法:

docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • OPTIONS:可以使用一系列选项来配置容器的行为,如端口映射、数据卷挂载、环境变量设置等。
  • IMAGE:指定要使用的镜像,可以是本地镜像的名称或远程仓库中的镜像。
  • COMMAND:可选参数,指定容器启动时要执行的命令。
  • ARG...:可选参数,传递给容器启动命令的参数。

以下是一些常用的选项:

  • -i, --interactive:打开容器的标准输入,允许交互操作。
  • -t, --tty:为容器分配一个伪终端。
  • --name CONTAINER_NAME:为容器指定一个自定义的名称。
  • -e, --env KEY=VALUE:设置容器的环境变量。
  • -v, --volume SOURCE:DEST:挂载主机上的目录或数据卷到容器内部。
  • -p, --publish HOST_PORT:CONTAINER_PORT:将容器的端口映射到主机的端口上。

以下是一个示例:


查看镜像
docker images 

从镜像 my-ubuntu tag:latest 创建一个容器 my-container2
docker create -it --name my-container2 -p 8080:80 my-ubuntu:latest

启动容器
docker start my-container2

查看容器是否启动
docker ps

docker rundocker create 区别

docker create:

  • docker create 命令用于在 Docker 中创建一个新的容器,但不会自动启动它。
  • 创建容器后,会返回容器的 ID,可以使用该 ID 进一步操作容器,如启动、停止、删除等。
  • docker create 命令通常与 docker start 命令一起使用,以分别创建和启动容器。

docker run:

  • docker run 命令用于创建并立即启动一个新的容器。
  • 它相当于 docker createdocker start 命令的组合,可以在一步中创建和启动容器。
  • docker run 命令提供了更便捷的方式来创建和启动容器,适用于大多数常见的容器使用场景。

为什么会设计两个命令呢?

  • 设计上的灵活性:Docker 设计了两个命令,以便在不同的场景下提供更多的灵活性。docker create 提供了更细粒度
    的控制,允许在创建容器后进行进一步的配置和准备工作,然后手动启动容器。而 docker run 则提供了一种简化的方
    式,可以在一步中创建和启动容器。

  • 工作流程的不同:docker create 适用于需要在容器启动之前执行额外操作的场景,例如在容器启动之前挂载数据卷、
    设置环境变量等。而 docker run 适用于直接启动容器并运行应用程序的场景,它通常用于常见的容器使用场景。

总之,docker createdocker run 提供了不同的方式来创建和启动容器,可以根据具体的需求和工作流程选择合适的命令。
对于简单的容器启动,docker run 是更常用和方便的选择。而对于需要更多控制和定制的场景,可以使用 docker create
docker start 命令来分别创建和启动容器。

  • docker cp 命令用于在 Docker 容器和主机之间复制文件或目录。
docker cp 命令的基本语法:

docker cp <source> <destination>

<source>:指定要复制的文件或目录的路径。可以是容器内的路径或主机上的路径。
<destination>:指定目标位置的路径。可以是容器内的路径或主机上的路径。

从容器复制文件到主机:
docker cp <container_name_or_id>:<source_path> <destination_path>

从名为 mycontainer 的容器复制 /app/file.txt 文件到主机的 /tmp 目录:
eg: docker cp mycontainer:/app/file.txt /tmp/file.txt

从主机复制文件到容器:
docker cp <source_path> <container_name_or_id>:<destination_path>

将主机上的 /tmp/file.txt 文件复制到名为 mycontainer 的容器的 /app 目录:
eg:docker cp /tmp/file.txt mycontainer:/app/file.txt

注意事项:

当复制文件到容器时,如果目标路径不存在,Docker 会自动创建目标路径。
当复制文件到容器时,目标路径不能是符号链接。
当复制目录时,目录本身和其中的内容都会被复制。
  • docker 端口映射
当使用 docker run 命令时,通过 -p 或 --publish 参数可以设置容器的端口映射,将容器内部的端口映射到主机的端口上。

docker run -d -p 8888:8080 --name mycontainer your-image

-d:以后台模式运行容器。
-p 8888:8080:将主机的 8888 端口映射到容器的 8080 端口上。
--name mycontainer:为容器指定一个名称。
your-image:要运行的容器镜像。

现在,可以通过在浏览器中访问 http://localhost:8888 来访问容器内部的 Web 应用程序。流量将被重定向到容器的 8080 端口。
  • docker 的网络模式
在 Docker 中,有几种常见的网络模式可供选择,包括默认的桥接网络、主机网络和覆盖网络。以下是这些网络模式的特点、优缺
点和适用场景的概述:

桥接网络(Bridge Network):

特点:默认的网络模式,每个容器分配一个独立的 IP 地址,可以通过容器名称进行通信。
优点:隔离性好,容器可以在同一主机的不同网络命名空间中运行。
缺点:不适用于多主机环境,容器之间需要通过端口映射才能访问。
适用场景:单主机上多个容器之间需要相互通信的情况,比如微服务架构。
主机网络(Host Network):

特点:容器与主机共享网络命名空间,直接使用主机的 IP 地址和端口。
优点:网络性能好,容器无需通过端口映射即可访问主机网络。
缺点:缺乏隔离性,容器与主机共享网络栈。
适用场景:对网络性能要求较高、需要容器与主机共享网络的情况,比如网络工具、监控工具等。
覆盖网络(Overlay Network):

特点:使用 Docker Swarm 模式创建的多主机集群环境下的网络模式,跨主机通信使用 Overlay 网络。
优点:容器可以在多个主机上通过 Overlay 网络进行通信。
缺点:配置和管理复杂,需要使用 Swarm 模式。
适用场景:在多主机环境下,需要容器之间跨主机通信的情况,比如横向扩展应用程序。

docker run -d --network=bridge --name mycontainer your-image

使用 --network=bridge 参数来指定容器使用默认的桥接网络模式。你可以将 bridge 替换为其他网络模式,如 host 或 overlay
  • docekr 资源限定
在 Docker 中,你可以为容器分配资源限制,如 CPU 和内存限制。

通过 --cpus 参数设置容器的 CPU 限制。例如,设置容器的 CPU 限制为 0.5:
docker run -d --cpus=0.5 --name mycontainer your-image

通过 --memory 参数设置容器的内存限制。例如,设置容器的内存限制为 512MB:
docker run -d --memory=512m --name mycontainer your-image
  • docker stats 容器资源监控
使用 docker stats 命令可以实时监控正在运行的容器的资源使用情况:
docker stats mycontainer

docker stats 命令将显示容器的 CPU 使用率、内存使用量、网络 I/O、磁盘 I/O 等信息,并以实时更新的方式显示。

可以使用 --format 参数来自定义输出格式,以满足特定的需求。例如,只显示 CPU 使用率和内存使用量:
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

通过设置容器的资源限制和使用 docker stats 命令,你可以有效地管理和监控容器的资源使用情况
  • docker 镜像仓库
搜索镜像:

在 Docker Hub 或其他镜像仓库的网站上,使用搜索功能来查找你需要的镜像。可以通过关键字、镜像名称或镜像作者来进行搜索。
在搜索结果中,可以查看镜像的描述、标签和其他相关信息。
拉取镜像:

使用 docker pull 命令从镜像仓库中拉取镜像到本地。命令格式为:docker pull <镜像名称>:<标签>。
默认情况下,如果未指定标签,默认会拉取 latest 标签的镜像。
例如,要拉取 nginx 镜像的 latest 版本,可以执行:docker pull nginx:latest。
推送镜像:

如果你开发了自己的镜像,并希望将其推送到镜像仓库,需要先登录到镜像仓库。
使用 docker login 命令登录到 Docker Hub 或其他镜像仓库。需要提供用户名、密码和仓库地址。
登录成功后,可以使用 docker push 命令将本地的镜像推送到镜像仓库。命令格式为:docker push <镜像名称>:<标签>。
镜像标签:

镜像标签用于区分不同版本或变体的镜像。一个镜像可以有多个标签。
通常,latest 标签表示最新的版本,但最好使用特定的版本标签来确保镜像的可重复性和稳定性。
在拉取或推送镜像时,可以通过指定标签来选择特定版本的镜像。
例如,要拉取 nginx 镜像的 1.21.3 版本,可以执行:docker pull nginx:1.21.3。

文章来源:https://blog.csdn.net/yaoqiancuo3276/article/details/135441769
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。