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 指定构建参数
相关推荐
桂月二二4 小时前
Java与容器化:如何使用Docker和Kubernetes优化Java应用的部署
java·docker·kubernetes
007php0076 小时前
linux服务器上CentOS的yum和Ubuntu包管理工具apt区别与使用实战
linux·运维·服务器·ubuntu·centos·php·ai编程
人类群星闪耀时6 小时前
深度学习在灾难恢复中的作用:智能运维的新时代
运维·人工智能·深度学习
djykkkkkk6 小时前
ubuntu编译遇到的问题
linux·运维·ubuntu
LinkTime_Cloud6 小时前
GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily
大数据·运维·gitlab
qq_429856576 小时前
linux 查看服务是否开机自启动
linux·运维·服务器
Smile丶凉轩7 小时前
Docker核心技术和实现原理
运维·docker·容器
清风细雨_林木木7 小时前
Docker使用——国内Docker的安装办法
运维·docker·容器
运维&陈同学7 小时前
【Kibana01】企业级日志分析系统ELK之Kibana的安装与介绍
运维·后端·elk·elasticsearch·云原生·自动化·kibana·日志收集
dessler8 小时前
Docker-Dockerfile讲解(三)
linux·运维·docker