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
补充:
- 在创建容器时,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/
相关命令:
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 | 指定构建参数 |