1、安装及加速配置
Docker 安装以及配置阿里云镜像加速器指南_大鱼的技术博客_51CTO博客
2、镜像操作
2.1 搜索镜像
docker search [OPTIONS] TERM
命令详情:
案例:
2.2 拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
命令详情:
案例:
2.3 查看镜像
docker images [OPTIONS] [REPOSITORY[:TAG]]
常用选项:
案例:
2.4 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE…]
命令详情:
案例:
3、容器操作
3.1 运行容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常见选项:
-d
: 以守护进程模式运行容器,即在后台运行,不会在终端输出任何内容。 3--name
: 指定容器名称,方便识别和管理。 3-p
: 端口映射,将容器端口映射到宿主机端口。-v
: 挂载卷,将宿主机目录挂载到容器中。-e
: 设置环境变量。-i
: 进入容器后,保持与容器的交互。-t
: 分配一个伪终端,在容器中执行交互式命令。--rm
: 容器停止后自动删除容器。
案例:
3.2 查看容器
docker ps [OPTIONS]
命令详情:
案例:
3.3 停止容器
docker stop [OPTIONS] CONTAINER [CONTAINER…]
命令详情:
案例:
3.4 启动容器
docker start [OPTIONS] CONTAINER [CONTAINER…]
命令详情:
案例:
3.5 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER…]
命令详情:
案例:
3.6 容器状态
docker stats [OPTIONS] [CONTAINER…]
命令详情:
案例:
3.7容器日志
docker logs [OPTIONS] CONTAINER
命令详情:
案例:
3.8 进入容器
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
命令详情:
案例:
3.9 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER…]
命令详情:
案例:
4、镜像保存和分享
4.1 提交镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
命令详情:
案例:
4.2 保存镜像
docker save [OPTIONS] IMAGE [IMAGE…]
命令详情:
案例:
4.3 加载镜像
docker load [OPTIONS]
命令详情:
案例:
4.4 分享镜像
4.4.1 登录docker
docker login [OPTIONS] [SERVER]
命令详情:
案例:
4.4.2 镜像tag
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
命令详情:
案例:
4.4.3 分享镜像
docker push [OPTIONS] NAME[:TAG]
命令详情:
案例:
5、容器高级
5.1 数据持久化
docker volume COMMAND
命令详情:
Docker Volumes 的核心概念:
- 持久性: Volumes 中的数据在容器停止或删除后依然存在。
- 独立性: Volumes 独立于容器的镜像文件系统,这意味着它们不会受到镜像更新的影响。
- 可共享性: Volumes 可以被多个容器同时挂载,从而实现容器之间的数据共享。
Volumes 的类型:
- 命名 Volumes: 使用名称标识的 Volumes,可以通过
docker volume ls
命令查看。 - 匿名 Volumes: 没有名称的 Volumes,由 Docker 自动分配唯一的 ID,
docker run 不加 -v
。 - Bind mounts: 将主机文件系统直接挂载到容器中,``docker run -v /自定义系统路径:容器路径`。
- 数据 Volumes: 独立于主机文件系统的 Volumes,``docker run -v volume(不存在则新建):容器路径`。
案例:
5.2 网络
docker network COMMAND
命令详情:
Docker 网络的基本概念
- 容器网络隔离: 每个容器默认拥有独立的网络命名空间,它们与主机网络隔离,彼此之间无法直接通信。ttps://docs.docker.com/network/understanding-docker-networks/)
- 网络驱动: Docker 提供多种网络驱动,用于创建不同的网络类型,例如 bridge、host、overlay、macvlan 等。
- 网络连接: Docker 允许容器通过网络进行连接,包括容器与容器、容器与主机、容器与外部网络之间的连接。
2. Docker 网络类型
Docker 提供了几种常见的网络类型,每种类型都拥有不同的特点和适用场景:
- bridge 网络: 默认网络类型,使用桥接模式连接容器。容器可以通过 Docker 内部创建的虚拟网络接口进行通信。
- host 网络: 容器直接使用主机网络,共享主机的 IP 地址和端口,适合容器需要直接访问主机资源的场景。
- overlay 网络: 用于跨主机连接容器,实现容器集群网络,适用于 Docker Swarm 集群环境。
- macvlan 网络: 为容器提供独立的 MAC 地址和 IP 地址,可以将容器连接到外部网络,并与其他设备进行通信。
- none 网络: 容器没有网络连接,无法进行任何网络通信。
案例:
6、dockerfile和compose file
6.1 Dockerfile
Dockerfile 是一个文本文件,其中包含一系列指令,这些指令用于构建 Docker 镜像。 镜像是一个轻量级的、可执行的软件包,它包含应用程序及其所有依赖项,可以轻松地部署和运行在任何 Docker 环境中。
Dockerfile 指令
Dockerfile 使用一系列指令来构建镜像,以下是几个常用的指令:
- FROM: 指定基础镜像,例如
FROM ubuntu:latest
- RUN: 在镜像中执行命令,例如
RUN apt-get update && apt-get install -y nginx
- COPY: 将文件或目录从构建上下文复制到镜像中,例如
COPY . /app
- WORKDIR: 设置工作目录,例如
WORKDIR /app
- CMD: 指定容器启动时的默认命令,例如
CMD ["nginx", "-g", "daemon off;"]
- EXPOSE: 指定容器要公开的端口,例如
EXPOSE 80
Dockerfile 例子
6.2 Compose file
Compose file 使用 YAML 格式,它定义了一个多容器 Docker 应用程序。 Compose file 可以定义多个服务,每个服务都有自己的 Dockerfile 和运行配置, Compose 会将这些服务链接在一起并管理它们的启动、停止和重启。
Compose file 指令
Compose file 使用一些指令来定义服务,以下是几个常用的指令:
- version: 指定 Compose 文件的版本,例如
version: "3.8"
- services: 定义应用程序中的所有服务,例如
services:
- build: 指定服务镜像的构建方式,可以指定 Dockerfile 或上下文路径,例如
build: .
- ports: 指定服务端口映射,例如
ports: - "80:80"
- volumes: 指定服务数据卷,例如
volumes: - data:/data
- links: 指定服务之间的链接,例如
links: - db
- depends_on: 指定服务依赖关系,例如
depends_on: - db
Compose file 例子