docker略览

1.Docker 下载安装

sh 复制代码
# 清空原有 Docker 残留
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine \
                  docker-ce
# 设置 Docker yum 源
sudo yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 使用 sed 工具将 docker-ce.repo 中的 download.docker.com 替换为 mirrors.aliyun.com/docker-ce
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
# 生成软件包缓存以加快后续的软件包管理操作。
sudo yum makecache fast
# 安装 Docker
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 关闭防火墙
sudo systemctl disable firewalld --now
# 启动 Docker
sudo systemctl enable docker --now
# 配置 Docker 镜像源加速下载
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://as08lme3.mirror.aliyuncs.com","https://mirror.ccs.tencentyun.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

2.Docker 简单命令

sh 复制代码
# 查看所有镜像
docker images
# 搜索镜像
docker search [OPTIONS] TERM
# 拉取镜像
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
# 删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE...]
# 查看运行中的容器
docker ps
# 查看所有容器
docker ps -a
# 创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# 停止容器
docker stop [OPTIONS] CONTAINER [CONTAINER...]
# 启动容器
docker start [OPTIONS] CONTAINER [CONTAINER...]
# 重启容器
docker restart [OPTIONS] CONTAINER [CONTAINER...]
# 查看容器资源使用情况
docker stats [OPTIONS] [CONTAINER...]
# 查看容器日志
docker logs [OPTIONS] CONTAINER
# 删除容器
docker rm [OPTIONS] CONTAINER [CONTAINER...]
# 进入容器内部
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
# 提交容器打成一个新镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# 保存镜像为一个指定文件
docker save [OPTIONS] IMAGE [IMAGE...]
# 加载镜像
docker load [OPTIONS]
# 更改镜像名
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
# 登录 docker hub
docker login [OPTIONS] [SERVER]
# 推送镜像
docker push [OPTIONS] NAME[:TAG]

3.存储

Docker 支持两种存储方式,这都是在创建容器时,所用参数设置

  • 目录挂载:-v 目录名:目录名
  • 卷挂载:-v 卷名:目录名

4.网络

Docker 提供了一种虚拟网络环境,使得容器之间可以相互通信和访问。在 Docker 中,你可以创建自定义网络,或者使用默认的网络。

Docker 网络类型

  • 桥接网络(Bridge Network):这是 Docker 默认使用的网络类型。它会为每个容器分配一个 IP 地址,并创建一个虚拟交换机来连接容器。
  • 主机网络(Host Network):容器与主机共享网络栈,可以直接使用主机的网络接口进行通信。
  • Overlay 网络:用于连接多个 Docker 主机的网络,可实现分布式应用程序的跨主机通信。

相关命令

sh 复制代码
# 创建自定义网络
docker network create
# 连接容器到网络
# 创建容器时,使用 --network 参数来指定容器连接到的网络
# 查看网络列表
docker network ls
# 查看网络详情
docker network inspect
# 删除网络
docker network rm

补充:

  1. 在创建容器时,docker 会默认为每个容器分配一个唯一 ip,使用 容器 ip + 容器端口可以实现容器间的通信。
  2. 由于各种原因,分配的 ip 可能会发生变化,所以应当尽可能为其分配域名。由于默认的 docker 0 默认不支持主机域名,所以可以创建自定义网络,从而实现分配域名,达到稳定的通信。一般而言, 创建的自定义网络中,容器名就是稳定域名。

5.Docker Compose

Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。它使用一个 YAML 文件来配置应用程序的服务、网络和卷等,并使用一条命令启动、停止和管理整个应用程序的容器。

使用 Docker Compose 可以将多个 Docker 容器组合成一个应用程序,并定义它们之间的关系和依赖。它提供了一种简洁的方式来管理多个容器,使得应用程序的部署和运行变得更加容易和可复制。

Docker Compose 核心就是编写 docker-compose.yaml 文件。

docker-compose.yaml 中顶级元素,有 name、services、network、volumes、configs、secrets等

具体编写规则:https://docs.docker.com/compose/compose-file/

相关命令:

sh 复制代码
# 上线
docker compose up -d
# 下线
docker compose down
# 启动
docker compose start x1 x2 x3
# 停止
docker compose stop x1 x3

6.Dockerfile

Docker 可以通过读取 Dockerfile 中的指令来自动构建镜像。Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用来组装镜像的所有命令。

使用 Dockerfile,你可以定义所需的基础镜像、安装软件包、复制文件、设置环境变量、运行命令等一系列操作,最终生成一个包含应用程序和其依赖的可运行镜像。

常见指令 作用
FROM 指定镜像基础环境
RUN 运行自定义命令
CMD 容器启动命令或参数
LABEL 自定义标签
EXPOSE 指定暴露端口
ENV 环境变量
ADD 添加文件到镜像
COPY 复制文件到镜像
ENTRYPOINT 容器固定启动命令
VOLUME 数据卷
USER 指定用户和用户组
WORKDIR 指定默认工作目录
ARG 指定构建参数
相关推荐
qq_448941082 小时前
10、k8s对外服务之ingress
linux·容器·kubernetes
野猪佩挤2 小时前
minio作为K8S后端存储
云原生·容器·kubernetes
drebander2 小时前
Docker 与 Kubernetes(K8s)初探
docker
m0_748238783 小时前
Nginx 负载均衡详解
运维·nginx·负载均衡
EasyNVR4 小时前
EasyRTC:全平台支持与自研算法驱动的智能音视频通讯解决方案
运维·服务器·小程序·音视频·webrtc·p2p·智能硬件
柳鲲鹏4 小时前
Ubuntu编译ZLMediaKit
linux·运维·ubuntu
ccmjga5 小时前
升级 SpringBoot3 全项目讲解 — Spring Boot 3 中如何发Http请求?
java·spring boot·后端·docker·gradle·springboot·spring security
m0_748254096 小时前
Nginx WebSocket 长连接及数据容量配置
运维·websocket·nginx
安科瑞刘鸿鹏6 小时前
数据中心储能蓄电池状态监测管理系统 组成架构介绍
运维·服务器·数据库·物联网·能源
warton888 小时前
centos下使用pyenv管理python版本
linux·运维·python·centos