前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >docker入门——容器

docker入门——容器

原创
作者头像
奇零才子
发布2023-11-03 22:15:01
3301
发布2023-11-03 22:15:01
举报
文章被收录于专栏:Linux运维之路Linux运维之路

1、docker对于容器的操作命令

以下是Docker对于容器的一些常用操作命令:

代码语言:javascript
复制
1. 查看容器列表:docker ps
	-a或--all:显示所有容器,包括未运行的(docker ps默认只显示运行的容器)。
	-f或--filter:根据条件过滤显示的内容。
	--format:指定返回值的模板文件。
	-l或--latest:显示最近创建的容器。
	-n:列出最近创建的n个容器。
	--no-trunc:不截断输出。
	-q或--quiet:静默模式,只显示容器编号。
	-s或--size:显示总的文件大小。

2. 查看单个容器详细信息:docker inspect <容器ID或名称>

3. 创建并运行容器:docker run <镜像名称>
    -i或--interactive:以交互模式运行容器,通常与-t一起使用。
    -t或--tty:为容器分配一个伪终端。
    -d或--detach:让容器在后台运行并返回容器ID。
    --name:为容器指定一个名称。
    -p或--publish:指定端口映射,格式为主机(宿主)端口:容器端口。
    -v或--volume:将宿主机目录或文件挂载到容器中,格式为宿主机目录:容器目录。
    --network或--net:为容器指定一个网络。
    --add-host:添加自定义主机到IP的映射(host:ip)。

4. 停止容器:docker stop <容器ID或名称>

5. 启动已停止的容器:docker start <容器ID或名称>

6. 重启容器:docker restart <容器ID或名称>

7. 删除容器:docker rm <容器ID或名称>
	-f: 强制删除正在运行的容器
	
8. 进入正在运行的容器:docker exec -it <容器ID或名称> /bin/bash

9. 将宿主机目录挂载到容器中:docker run <镜像名> -v <宿主机目录:容器目录>

10. 将容器添加到一个自定义网络中:docker network connect <网络名称> <容器ID或名称>

11. 查看所有网络:docker network ls

12. 删除自定义网络:docker network rm <网络名称>

1.2详解图

2、docker容器之间的网络通信

2.1、Docker容器之间的通信方式:

  1. 使用容器IP访问:每个Docker容器都有一个唯一的IP地址,如果两个容器在同一台主机上运行,那么它们可以直接通过对方的IP地址进行通信。但需要注意的是,一旦容器重启,其IP地址可能会发生变化。
  2. 宿主机IP:端口访问:另一种方式是通过宿主机的IP地址和端口号来访问容器。具体来说,可以在运行容器时使用-p参数来映射宿主机的端口到容器内部的端口,从而实现容器之间或者容器与宿主机之间的通信。
  3. 自定义网络:除了上述两种方式外,Docker还提供了自定义网络的功能,允许用户创建自己的虚拟网络并将容器添加到该网络中。在自定义网络中,容器之间可以通过各自的IP地址进行通信。此外,Docker还提供了一种名为“Container Networking Mode”的网络模式,在这种模式下,新创建的容器将不会创建自己的网卡和配置自己的IP地址,而是会和一个指定的容器共享IP、端口范围等,这样两个容器之间可以使用localhost进行高效快速的通信。

2.2、docker网络模式的用途和优缺点。

​ 1.首先,bridge网络是Docker默认的网络模式。在这种模式下,每个容器都会分配一个独立的IP地址, 并且可以通过容器名或者IP地址进行访问。bridge网络还支持端口映射,可以将主机上的端口映射到容 器内部的端口上,从而实现容器与外部的通信。

​ 2.其次,host网络模式可以让容器共享主机的网络栈,也就是说容器可以直接使用主机的网络接口进行 通信。这种模式下,容器之间可以通过localhost进行通信,但是不支持端口映射。

​ 3.最后,overlay网络模式是一种比较复杂的网络模式,它可以实现跨主机的容器之间的通信。在这种 模式下,需要有一个额外的组件来负责容器之间的网络连接和通信。目前最常用的overlay网络实现是 Flannel和Weave。

代码语言:javascript
复制
overlay网络的配置方法:
docker03上:
docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap
docker01、02上:
vim  /etc/docker/daemon.json
{
  "hosts":["tcp://0.0.0.0:2376","unix:///var/run/docker.sock"],
  "cluster-store": "consul://10.0.0.55:8500",
  "cluster-advertise": "10.0.0.56:2376",
  "insecure-registries": ["10.0.0.56:5000"]
}

2)创建overlay网络
docker network create -d overlay over_test

3)启动容器测试
docker run -it --network over_test --name test1  busybox:latest /bin/sh

你可以使用以下命令查看当前已经创建的所有Docker网络:docker network ls
如果你想要删除一个已经存在的overlay网络,可以使用以下命令进行删除:docker network rm over_test

除了上述三种网络模式外,Docker还提供了其他一些网络相关的功能,例如自定义网络、容器链接等。这些功能可以帮助用户更好地管理和配置Docker容器之间的通信。

3、docker数据持久化

Docker容器数据持久化是一个重要的概念,它让容器内的数据在Docker容器停止、删除或者重新创建之后依然存在。为实现这样的需求,Docker提供了两种主要的方式来实现数据的持久化:一是在运行的容器中直接创建volume:

docker volume create命令用于在Docker中创建一个新的卷。这个卷可以被一个或多个容器使用,提供了一种独立于容器生命周期的数据存储方式。也就是说,即使容器被删除,卷中的数据仍然会保留,可以在新的容器中重新挂载并使用。

该命令的基本语法格式为:docker volume create [OPTIONS] [VOLUME]。其中,OPTIONS参数是可选的,用于指定一些特殊的设置或者参数;而VOLUME则是必选的,用于指定要创建的卷的名称。

例如,如果我们想创建一个名为my-vol的卷,我们可以运行以下命令:

代码语言:javascript
复制
docker volume create my-vol

执行上述命令后,Docker会在后台创建一个名为my-vol的卷。如果需要查看已创建的卷列表,可以使用 docker volume ls命令。

创建了名为my-vol的卷之后,我们可以将其挂载到容器中,以便容器可以访问其中的数据。

要将卷挂载到容器中,可以使用 docker run 命令的 -v参数来指定要挂载的卷和容器内的目录。例如,如果我们想将卷挂载到容器的 /app 目录下,可以运行以下命令:

代码语言:javascript
复制
docker run -itd --name my-container -v my-vol:/app my-image

上述命令会创建一个名为 my-container的新容器,并将 my-vol卷挂载到该容器的 /app 目录下。在容器内部,可以通过 /app 目录访问卷中的数据。

如果需要在多个容器之间共享同一个卷,可以将一个容器设置为另一个容器的父容器,并使用 --volumes-from参数来继承父容器中的卷。例如,如果我们有一个名为 parent-container 的父容器,并且已经将卷挂载到了该容器中,我们可以使用以下命令来创建一个新的子容器,并将其连接到父容器的卷上:

代码语言:javascript
复制
docker run -itd --name child-container --volumes-from parent-container my-image

上述命令会创建一个名为 child-container的新容器,并将其连接到父容器 parent-container中的卷上。在子容器内部,也可以通过相同的路径访问卷中的数据。

二是创建一个存储内外部映射关系的路径,然后其他容器使用–volumes-from进行引用,这种情况主要用于多个容器共享一组数据的情况。

器,并将其连接到父容器 parent-container中的卷上。在子容器内部,也可以通过相同的路径访问卷中的数据。

二是创建一个存储内外部映射关系的路径,然后其他容器使用–volumes-from进行引用,这种情况主要用于多个容器共享一组数据的情况。

此外,Docker容器还可以通过挂载宿主机文件系统或内存的方式来实现数据存储。具体操作可以通过如下命令启动一个容器并指定要挂载的数据卷:docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]。其中,通过-v参数可以将宿主机的某目录作为数据卷挂载到容器中,使该容器与宿主机共享此目录。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、docker对于容器的操作命令
    • 1.2详解图
      • 2、docker容器之间的网络通信
        • 2.1、Docker容器之间的通信方式:
        • 2.2、docker网络模式的用途和优缺点。
      • 3、docker数据持久化
      相关产品与服务
      容器镜像服务
      容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档