Docker相关知识

是一个开源的平台,允许开发者自动化地部署应用程序在容器中。容器是轻量级、独立且打包的应用服务,可以在任何环境中运行,确保一致性和可移植性,利用操作系统级别的虚拟化技术来打包、交付和运行应用程序。可以将应用程序及其所有依赖项打包到一个可移植的容器中,可以在任何安装了Docker引擎的服务器上运行这些容器。

主要的组件

Docker Engine:负责构建、运行和管理Docker容器。

Docker Images:用于创建容器的只读模板。

Docker Containers:运行中的应用实例,由Docker镜像创建。

Docker Hub:存储和分发Docker镜像的云服务。

Docker Compose:用于定义和运行多容器Docker应用的工具。

用途

  • 应用封装:将应用和依赖环境封装成一个可移植的容器镜像。
  • 一致性环境:在开发、测试和生产环境中提供一致的运行环境。
  • 轻量化虚拟化:比传统虚拟机更快的启动速度和更小的资源开销。
  • 快速部署:简化和加速应用部署流程。
  • 隔离性和安全性:容器之间相互隔离,保障应用的安全性。

Docker与虚拟机区别

  • 架构:Docker是操作系统级别的虚拟化,共享主机的操作系统内核;虚拟机是硬件级别的虚拟化,需要完整的操作系统。
  • 性能:Docker容器启动速度快,资源消耗少;虚拟机启动较慢,占用更多的资源。
  • 镜像体积:Docker镜像通常较小,因为它们共享主机的操作系统;虚拟机镜像较大,包含完整的操作系统。
  • 隔离性:虚拟机提供更强的隔离性,因为每个虚拟机都有自己的操作系统;Docker容器共享主机的内核,隔离性较弱。
  • 使用场景:Docker适合微服务架构和开发测试环境;虚拟机适合多操作系统需求和强隔离需求的场景。

Docker镜像

是一个只读模板,包含了应用程序及其所有依赖项,用于创建Docker容器。镜像可以从Dockerfile构建,也可以从DockerHub拉取。

Docker容器

是运行中的应用实例,由Docker镜像创建。容器是独立、轻量级且便于移植的,确保应用在开发、测试和生产环境中的一致性。

Dockerfile

Dockerfile 是一个包含了一系列指令的文本文件,这些指令用于构建Docker镜像。每条指令都会在镜像中创建一个新的层。常见的指令包括 FROMRUNCOPYCMD 等。

命令

  • FROM:指定基础镜像。
  • RUN:在容器内执行命令。
  • COPY:将文件或目录从主机复制到容器内。
  • ADD:将文件或目录从主机复制到容器内,并支持URL和解压缩操作。
  • WORKDIR:设置工作目录。
  • EXPOSE:声明容器运行时监听的端口。
  • CMD:指定容器启动时要执行的命令。

Docker Compose

是一个用于定义和运行多容器Docker应用的工具。你可以使用docker-compose.yml文件来定义应用的服务、网络和卷,并通过一条命令启动和停止所有服务。

Docker网络模式

bridge:默认网络模式,适用于单机上的容器通信。

host:容器和主机共享一个网络命名空间,使用主机的 IP 和端口。

none:容器没有网络接口。

container:多个容器共享一个网络命名空间。

overlay:用于跨多个Docker主机的容器通信。

日志驱动

json-file(默认)

syslog

journald

gelf

fluentd

awslogs

splunk

日志驱动配置

docker run --log-driver=syslog --log-opt syslog-address=tcp://IP:端口 <image>

限制日志大小

docker run --log-opt max-size=10m --log-opt max-file=3 <image>

Docker相关命令

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

  • docker run:运行容器的命令。
  • [OPTIONS]:可选参数,用于配置容器的各种选项,如端口映射、容器名称等。
  • IMAGE:要运行的镜像名称或ID。
  • [COMMAND] [ARG...]:可选的命令和参数,用于在容器内执行特定的命令。

docker build [OPTIONS] PATH | URL | -

  • docker build:构建镜像的命令。
  • [OPTIONS]:可选参数,用于配置构建过程,如镜像标签、构建上下文路径等。
  • PATH | URL | -:Dockerfile所在的路径、URL或者使用标准输入作为Dockerfile。

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

  • docker pull:拉取镜像的命令。
  • [OPTIONS]:可选参数,用于配置拉取过程,如认证信息等。
  • NAME[:TAG|@DIGEST]:要拉取的镜像名称、标签或摘要。

docker push [OPTIONS] NAME[:TAG]

  • docker push:推送镜像的命令。
  • [OPTIONS]:可选参数,用于配置推送过程,如认证信息等。
  • NAME[:TAG]:要推送的镜像名称和标签。

docker images [OPTIONS] [REPOSITORY[:TAG]]

  • docker images:列出镜像的命令。
  • [OPTIONS]:可选参数,用于配置输出结果的格式等。
  • [REPOSITORY[:TAG]]:可选的镜像名称和标签,用于过滤输出结果。

docker ps [OPTIONS]

  • docker ps:列出容器的命令。
  • [OPTIONS]:可选参数,用于配置输出结果的格式和过滤条件。

docker stop [OPTIONS] CONTAINER [CONTAINER...]

  • docker stop:停止容器的命令。
  • [OPTIONS]:可选参数,用于配置停止过程,如超时时间等。
  • CONTAINER [CONTAINER...]:要停止的容器名称或ID。

docker start [OPTIONS] CONTAINER [CONTAINER...]

  • docker start:启动容器的命令。
  • [OPTIONS]:可选参数,用于配置启动过程,如守护模式等。
  • CONTAINER [CONTAINER...]:要启动的容器名称或ID。

docker restart [OPTIONS] CONTAINER [CONTAINER...]

  • docker restart:重启容器的命令。
  • [OPTIONS]:可选参数,用于配置重启过程,如超时时间等。
  • CONTAINER [CONTAINER...]:要重启的容器名称或ID。

docker kill [OPTIONS] CONTAINER [CONTAINER...]

  • docker kill:终止容器的命令。
  • [OPTIONS]:可选参数,用于配置终止过程,如信号等。
  • CONTAINER [CONTAINER...]:要终止的容器名称或ID。

docker rm [OPTIONS] CONTAINER [CONTAINER...] docker rmi [OPTIONS] IMAGE [IMAGE...]

  • docker rm:删除容器的命令。
  • docker rmi:删除镜像的命令。
  • [OPTIONS]:可选参数,用于配置删除过程,如强制删除等。
  • CONTAINER [CONTAINER...]:要删除的容器名称或ID。
  • IMAGE [IMAGE...]:要删除的镜像名称或ID。

docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

  • docker exec:在容器内执行命令的命令。
  • [OPTIONS]:可选参数,用于配置执行过程,如进入交互模式等。
  • CONTAINER:要执行命令的容器名称或ID。
  • COMMAND [ARG...]:要在容器内执行的命令及其参数。

docker logs [OPTIONS] CONTAINER

  • docker logs:查看容器日志的命令。
  • [OPTIONS]:可选参数,用于配置输出结果,如时间戳等。
  • CONTAINER:要查看日志的容器名称或ID。

docker inspect [OPTIONS] NAME|ID [NAME|ID...]

  • docker inspect:获取详细信息的命令。
  • [OPTIONS]:可选参数,用于配置输出结果的格式等。
  • NAME|ID [NAME|ID...]:要获取信息的容器或镜像的名称或ID。

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

  • docker cp:复制文件或目录的命令。
  • [OPTIONS]:可选参数,用于配置复制过程,如权限等。
  • CONTAINER:SRC_PATH:源路径,其中CONTAINER是容器名称或ID。
  • DEST_PATH:目标路径,其中DEST_PATH是主机路径。
  • SRC_PATH|-:源路径,其中-表示从标准输入读取。

docker system prune [OPTIONS]

  • docker system prune:清理资源的命令。
  • [OPTIONS]:可选参数,用于配置清理过程,如强制删除等。

docker network

  • docker network ls列出所有的Docker网络。
  • docker network create创建一个新的Docker网络。
  • docker network connect将容器连接到指定的Docker网络。
  • docker network disconnect将容器从指定的Docker网络断开连接。

docker volume

  • docker volume ls列出所有的Docker卷。
  • docker volume create创建一个新的Docker卷。
  • docker volume inspect获取Docker卷的详细信息。
  • docker volume rm删除指定的Docker卷。

docker-compose

  • docker-compose up:构建并启动Docker-compose定义的所有服务。
  • docker-compose down:停止并删除Docker-compose定义的所有服务。
  • docker-compose build:构建Docker-compose定义的所有服务的镜像。
  • docker-compose logs:查看Docker-compose定义的所有服务的日志。

docker swarm 原生集群管理和编排工具,用于在多个Docker主机上运行和管理应用程序

  • docker swarm init:初始化一个新的Docker swarm集群。
  • docker swarm join:将节点加入到Docker swarm集群。
  • docker node ls:列出Docker swarm集群中的所有节点。
  • docker service:管理在Docker swarm集群中运行的服务。
  • docker login:登录到Docker仓库。
  • docker logout:退出登录。

docker logs 查看容器日志

  • docker logs --tail:只显示最后几行的日志。
  • docker logs --follow:实时跟踪容器的日志输出。
  • docker logs --since:只显示特定时间之后的日志。
  • docker logs --until:只显示特定时间之前的日志。

Docker镜像与容器的区别

Docker镜像是应用程序和其依赖关系的静态快照,可以看作是一个只读的模板。Docker容器是Docker 镜像的一个实例,可以运行应用程序和修改应用程序的状态,例如添加、删除、修改文件。

Docker容器连接其他容器或主机

Docker 提供了多种网络模式,包括桥接模式、主机模式、覆盖网络模式等,可以实现容器之间和容器与主机之间的网络连接。常用的方法包括使用DockerCompose、Docker Swarm 和 Kubernetes 等容器编排工具。

Docker 的安全性管理

  • 使用最新版本的 Docker,以避免已知的安全漏洞。
  • 限制容器的权限,例如禁止使用 root 用户、限制容器的资源等。
  • 使用安全的镜像仓库,避免下载包含恶意软件的镜像。
  • 使用网络隔离技术,避免容器之间的互相影响。
  • 监控容器的运行状态,及时发现安全漏洞和攻击行为。
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值