【Docker】个人笔记

文章目录


Docker 开源的 应用容器引擎 Go语言开发的

Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化

Docker三个基本概念

镜像(Image)

Docker 镜像是一种轻量级、独立的、可执行的软件包,它包含了运行某个软件所需的所有元素。镜像是不可变的,创建后不能更改,但可以用作构建新镜像的基础。

比喻:

想象一下,它就像一本食谱(Recipe),详细列出了如何制作某道菜。这个食谱包含了所有的步骤和所需的食材。

食谱:代表 Docker 镜像

所需的食材和步骤:代表应用程序、依赖库、配置文件等

有了这本食谱(Docker 镜像),你和别人都能按照同样的步骤做出一样的菜。

容器(Container)

Docker 容器是基于镜像创建的一个运行实例,它包含了应用程序及其所有依赖项,运行在一个完全隔离的环境中。容器是动态的,可以启动、停止、移动和删除。

比喻:

容器就像是你根据食谱(Docker 镜像)做出来的那道实际的菜。你可以吃这道菜,也可以把它装进饭盒里带走。

实际的菜:代表 Docker 容器

装进饭盒里带走:代表容器的便携性和可移植性

有了这道菜(Docker 容器),你可以随时享用,也可以带到任何地方,和别人分享。

仓库(Repository)

集中存放镜像文件的场所


Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。

Docker 容器通过 Docker 镜像来创建。
Docker 镜像是用于创建 Docker 容器的模板

容器与镜像的关系类似于面向对象编程中的对象与类。

Docker命令

基础命令

查看版本信息

bash 复制代码
docker version

显示详细信息

bash 复制代码
docker info

从仓库拉取镜像

bash 复制代码
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest

列出本地存储的镜像

bash 复制代码
docker images

删除一个或多个镜像

bash 复制代码
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 例如:
docker rmi ubuntu:latest

列出所有运行中的容器

bash 复制代码
docker ps [OPTIONS]
# 列出所有容器(包括停止的容器):
docker ps -a

运行一个新的容器

bash 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 例如,运行一个交互式的 Ubuntu 容器:
docker run -it ubuntu:latest /bin/bash

常用选项:

-d:后台运行容器。

-p:端口映射。

-v:挂载卷。

--name:给容器命名。

-e:设置环境变量。

停止一个运行中的容器

bash 复制代码
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker stop my_container

启动一个已停止的容器

bash 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker start my_container

重启一个容器

bash 复制代码
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker restart my_container

删除一个或多个容器

bash 复制代码
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 例如:
docker rm my_container

在运行中的容器中执行命令

bash 复制代码
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 例如,在容器中打开一个交互式 shell:
docker exec -it my_container /bin/bash

获取容器的日志

bash 复制代码
docker logs [OPTIONS] CONTAINER
# 例如:
docker logs my_container

镜像管理

从Dockerfile构建一个镜像

bash 复制代码
docker build [OPTIONS] PATH | URL | -
# 例如,从当前目录的 Dockerfile 构建镜像:
docker build -t my_image:latest .

为镜像打标签

bash 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 例如:
docker tag my_image:latest my_repo/my_image:v1.0

将镜像推送到Docker仓库

bash 复制代码
docker push [OPTIONS] NAME[:TAG]
# 例如:
docker push my_repo/my_image:v1.0

从Docker仓库中拉取镜像

bash 复制代码
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 例如:
docker pull ubuntu:latest

网络管理

列出所有Docker网络

bash 复制代码
docker network ls

创建一个新的Docker网络

bash 复制代码
docker network create [OPTIONS] NETWORK
# 例如:
docker network create my_network

删除一个或多个Docker网络

bash 复制代码
docker network rm NETWORK [NETWORK...]
# 例如:
docker network rm my_network

查看Docker网络的详细信息

bash 复制代码
docker network inspect NETWORK
# 例如:
docker network inspect my_network

卷管理

列出所有Docker卷

bash 复制代码
docker volume ls

创建一个新的Docker卷

bash 复制代码
docker volume create [OPTIONS] [VOLUME]
# 例如:
docker volume create my_volume

删除一个或多个Docker卷

bash 复制代码
docker volume rm VOLUME [VOLUME...]
# 例如:
docker volume rm my_volume

查看Docker卷的详细信息

bash 复制代码
docker volume inspect VOLUME
# 例如:
docker volume inspect my_volume

常用选项详解

-d:后台运行容器。

-it:运行一个交互式终端。

-p:端口映射,格式为HOST_PORT:CONTAINER_PORT。

-v:挂载卷,格式为HOST_PATH:CONTAINER_PATH。

-e:设置环境变量。

--name:为容器指定名称。

--rm:容器退出后自动删除容器。

--network:指定容器加入的网络。

Dockerfile

Dockerfile 是一个文本文件,包含了构建Docker镜像所有指令

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像

Docker Compose

Compose 是用于定义和运行多容器 Docker 应用程序的工具

通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过一个简单的配置文件,你可以使用 Docker Compose 来配置应用程序的服务,并使用单个命令启动所有服务。

通俗理解

假设你有一个复杂的应用程序,它需要多个组件来一起工作,比如:

  1. Web服务器:处理用户的 HTTP 请求。
  2. 数据库:存储应用程序的数据。
  3. 缓存服务器:加速数据访问,提高性能。

如果你要手动启动这些服务,你需要分别运行多个 docker run 命令,这可能会变得非常复杂和容易出错。特别是当你需要在不同的环境(如开发、测试和生产)中运行应用程序时,管理这些服务的配置会变得更加困难。

Docker Compose 的作用

Docker Compose 通过一个配置文件(通常命名为 docker-compose.yml)来定义所有这些服务。这个配置文件可以包括:

  • 每个服务使用的镜像。
  • 服务之间的依赖关系。
  • 网络和卷的配置。
  • 环境变量。

举例说明

假设你有一个简单的应用程序,有一个 Web 服务器和一个数据库。你可以创建一个 docker-compose.yml 文件来定义这些服务:

yaml 复制代码
version: '3'
services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example

这个文件定义了两个服务:

  1. web 服务:使用最新版本的 Nginx 镜像,并将主机的 8080 端口映射到容器的 80 端口。
  2. db 服务:使用最新版本的 MySQL 镜像,并设置一个环境变量来定义 MySQL 的根密码。

使用 Docker Compose

  1. 启动服务

    通过运行以下命令,Docker Compose 会根据配置文件启动所有服务:

    bash 复制代码
    docker-compose up
  2. 停止服务

    运行以下命令可以停止所有服务:

    bash 复制代码
    docker-compose down
  3. 查看服务状态

    你可以使用以下命令查看运行中的服务状态:

    bash 复制代码
    docker-compose ps

优点

  • 简化多容器管理:不用手动启动和停止每个容器,简化操作。
  • 一致的开发环境:所有开发人员都可以使用相同的配置文件,确保一致的开发环境。
  • 易于扩展:可以轻松添加或删除服务,调整配置。

小结

Docker Compose 让你能够通过一个简单的配置文件来管理多容器应用,简化了复杂应用的部署和管理。无论是在开发环境还是生产环境,它都能帮助你更高效地管理服务。


相关推荐
年薪丰厚17 分钟前
如何在K8S集群中查看和操作Pod内的文件?
docker·云原生·容器·kubernetes·k8s·container
zhangj112518 分钟前
K8S Ingress 服务配置步骤说明
云原生·容器·kubernetes
岁月变迁呀20 分钟前
kubeadm搭建k8s集群
云原生·容器·kubernetes
墨水\\20 分钟前
二进制部署k8s
云原生·容器·kubernetes
Source、21 分钟前
k8s-metrics-server
云原生·容器·kubernetes
颜淡慕潇26 分钟前
【K8S问题系列 |19 】如何解决 Pod 无法挂载 PVC问题
后端·云原生·容器·kubernetes
云边有个稻草人2 小时前
【优选算法】—复写零(双指针算法)
笔记·算法·双指针算法
大熊程序猿3 小时前
K8s证书过期
云原生·容器·kubernetes
摸鱼也很难6 小时前
Docker 镜像加速和配置的分享 && 云服务器搭建beef-xss
运维·docker·容器
鸠摩智首席音效师9 小时前
Docker 中如何限制CPU和内存的使用 ?
docker·容器