行业资讯
📅 2026/8/29 14:10:25
Ubuntu 安装docker docker-compose
Docker 通过提供轻量级、可移植且高效的解决方案简化了软件开发和部署。“docker build”命令是 Docker 镜像创建过程的核心。本文将探讨 Docker 构建命令、用法以及 Docker 构建的优化。Docker 构建有什么作用Docker build 是一个命令行界面 CLI命令允许你根据 Dockerfile 中指定的指令构建 Docker镜像。它使镜像创建过程自动化确保了一致性和可重复性。Docker 构建是如何工作的Docker 构建通过执行 Dockerfile 中的指令序列来创建镜像。这些指令包括复制文件、安装依赖项和执行命令等操作。当运行docker build命令时Docker 守护进程会逐条读取并执行 Dockerfile 中的指令每条指令都会生成一个轻量级的只读层。这些层被堆叠起来形成最终的镜像。为了提高效率Docker 会缓存那些自上次构建以来未发生变化的层这样在后续的构建中就可以直接使用这些缓存层而无需重新构建从而大幅缩短构建时间。完成所有指令后Docker 将生成一个包含应用程序及其所有依赖项的最终镜像这个镜像随时准备被用来运行容器。Linux安装安装 Docker安装必要的依赖包sudo apt-get install apt-transport-https ca-certificates curl software-properties-common添加 Docker 的官方 GPG 密钥curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -添加 Docker APT 源sudo add-apt-repository deb [archamd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable更新软件包索引sudo apt-get update安装 Docker CE (社区版)sudo apt-get install -y docker-ce docker-ce-cli containerd.io验证 Docker 是否安装成功sudo docker --version Docker version 24.0.5, build 12345678启动并设置 Docker 开机自启sudo systemctl start docker sudo systemctl enable docker将当前用户加入 docker 用户组默认情况下只有 root 用户或 docker 用户组的成员才能运行 Docker 命令。如果您希望当前用户无需使用 sudo 即可运行 Docker可以将用户加入 docker 用户组sudo usermod -aG docker $USER然后重新登录终端或重启系统以使更改生效。检查 Docker 服务是否正在运行sudo reboot #重启 sudo systemctl status docker测试 Dockerdocker run hello-world Hello from Docker! This message shows that your installation appears to be working correctly.该命令会从 Docker Hub 上拉取hello-world镜像并在容器中运行。如果成功会在终端中看到一段欢迎信息。安装docker-composedocker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 docker-compose你可以使用 YAML 文件来配置应用程序的服务、网络和卷。它简化了复杂应用的配置和启动过程使得管理和部署多个相互依赖的容器变得非常简单。# 删除旧版本如果有 sudo rm -f /usr/local/bin/docker-compose #离线安装 wget -c --no-check-certificate https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-Linux-x86_64 sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose # 或者使用阿里云镜像源下载 sudo curl -L https://mirrors.aliyun.com/docker-toolbox/linux/compose/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # 检查下载内容是否为二进制文件 file /usr/local/bin/docker-compose #/usr/local/bin/docker-compose: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]..., not stripped # 赋予执行权限 sudo chmod x /usr/local/bin/docker-compose # 验证安装 docker-compose --version运行容器服务在docker-compose.yml文件所在目录运行容器服务docker-compose up -ddocker-compose.yml根据 build.context 如果你没有显式指定 context默认值是当前目录查找目录下的 Dockerfile构建。在使用 docker-compose up 时Docker Compose 默认会自动加载当前目录下的 .env 文件用于替换或设置 docker-compose.yml 中的环境变量.Dockerfile例子FROM registry.cn-hangzhou.aliyuncs.com/hyperf/hyperf:8.1-alpine-v3.18-swoole-v5.0 LABEL maintainerHyperf Developers grouphyperf.io version1.0 licenseMIT app.nameHyperf ARG build_envprod ENV BUILD_ENV${build_env:-prod} \ SCAN_CACHEABLE(false) WORKDIR /www COPY . /www RUN cd /www \ composer install --no-dev -o \ composer clearcache \ php bin/hyperf.php EXPOSE 8080 8888 8889 ENTRYPOINT [php, /www/bin/hyperf.php, start]docker-compose.yml 文件详解docker-compose.yml 文件用于定义服务、网络和卷。这个文件使用 YAML 格式编写并且可以通过它来描述多个容器之间的关系以及它们的配置。下面是一个详细的解释帮助你理解如何编写和使用 docker-compose.yml 文件。version: 3.4 services: project: image: shanghai.aliyuncs.com/hyperf-work/skeleton:hyperf-8.1 container_name: test-api restart: always ports: - 9005:8080 volumes: - ./:/www entrypoint: [php, /www/bin/hyperf.php, start] #entrypoint: [sleep, 3600] networks: - test-api environment: - APP_ENVdev - SCAN_CACHEABLEfalse networks: test-api: driver: bridgeimage: 使用的镜像地址这里是阿里云的一个私有镜像仓库中的 Hyperf 项目镜像。container_name: 容器名称命名为 test-api。build: 如果需要从 Dockerfile 构建镜像可以指定路径。depends_on: 表示依赖的服务但请注意这不会等待直到依赖服务完全启动。restart: 设置容器重启策略为 always即无论退出状态如何Docker 都会自动重启该容器。environment: 设置环境变量。ports:端口映射将主机的 9005 端口映射到容器的 8080 端口。可以使用9005或者8080访问volumes: 卷挂载将当前目录.挂载到容器内的 /www 目录。command: 覆盖默认的命令entrypoint: 容器启动时执行的命令这里是启动 Hyperf 应用。networks: 容器连接的网络指定为 test-api 网络。test-api: 定义了一个名为 test-api 的自定义网络使用 bridge 网络驱动。WIN安装安装Docker Desktop需要确保开启 BIOS 虚拟化任务管理器 性能 查看 CPU 信息中的虚拟化​ 状态Windows 需启用 WSL2先配置国内镜像加速必做打开 Docker Desktop → 右上角 ⚙️Settings→ 左侧Docker Engine。把 JSON 改成下面直接复制替换{ builder: { gc: { defaultKeepStorage: 20GB, enabled: true } }, registry-mirrors: [ https://docker.1ms.run, https://hub-mirror.c.163.com, https://mirror.ccs.tencentyun.com, https://mirrors.aliyun.com ], features: { buildkit: true }, experimental: false }点Apply Restart等待重启完成。curl -I https://ccr.ccs.tencentyun.com HTTP/2 200 date: Thu, 28 May 2026 05:28:57 GMT content-type: text/html content-length: 612 last-modified: Tue, 17 Apr 2018 15:22:36 GMT etag: 5ad6113c-264 accept-ranges: bytes strict-transport-security: max-age15724800; includeSubDomains返回HTTP/1.1 200 OK→可用超时 / 连接失败 →不可用删掉使用命令行启动类似linux在容器里能看到已经启动