阅读量:0
1.Docker 下载安装
# 清空原有 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 简单命令
# 查看所有镜像 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 主机的网络,可实现分布式应用程序的跨主机通信。
相关命令
# 创建自定义网络 docker network create # 连接容器到网络 # 创建容器时,使用 --network 参数来指定容器连接到的网络 # 查看网络列表 docker network ls # 查看网络详情 docker network inspect # 删除网络 docker network rm
补充:
- 在创建容器时,docker 会默认为每个容器分配一个唯一 ip,使用 容器 ip + 容器端口可以实现容器间的通信。
- 由于各种原因,分配的 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/
相关命令:
# 上线 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 | 指定构建参数 |