当前位置: 首页 > news >正文

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 将生成一个包含应用程序及其所有依赖项的最终镜像,这个镜像随时准备被用来运行容器。

安装 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 [arch=amd64] 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

测试 Docker

docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.
  • 该命令会从 Docker Hub 上拉取 hello-world 镜像,并在容器中运行。
  • 如果成功,会在终端中看到一段欢迎信息。

安装docker-compose

docker-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

docker-compose.yml 文件详解

docker-compose.yml 文件用于定义服务、网络和卷。这个文件使用 YAML 格式编写,并且可以通过它来描述多个容器之间的关系以及它们的配置。下面是一个详细的解释,帮助你理解如何编写和使用 docker-compose.yml 文件。

version: '3.4'
services:project:image: shanghai.aliyuncs.com/hyperf-work/skeleton:hyperf-7.4container_name: test-apirestart: alwaysports:- "9005:8080"volumes:- ./:/wwwentrypoint:  ["php", "/www/bin/hyperf.php", "start"]#entrypoint:  ["sleep", "3600"]networks:- manage-v3-apinetworks:test-api:driver: bridge
  • image: 使用的镜像地址,这里是阿里云的一个私有镜像仓库中的 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 网络驱动。

http://www.mrgr.cn/news/93439.html

相关文章:

  • ubuntu 20.04下ZEDmini安装使用
  • 4.2 使用说明:手册写作利器VNote的使用
  • 【AIGC系列】6:HunyuanVideo视频生成模型部署和代码分析
  • nuxt2 打包优化使用“compression-webpack-plugin”插件
  • java中小型公司面试预习资料(一):基础篇
  • “深入浅出”系列之Linux篇:(13)socket编程实战+TCP粘包解决方案
  • 数据可视化大屏产品设计方案(附Axure源文件预览)
  • DeepSeek私有化部署5:openEuler 24.03-LTS-SP1安装docker
  • 每日一题----------枚举的注意事项和细节
  • Windows编译环境搭建(MSYS2\MinGW\cmake)
  • “深入浅出”系列之Linux篇:(10)基于C++实现分布式网络通信RPC框架
  • nodejs使用WebSocket实现聊天效果
  • 阿里云MaxCompute面试题汇总及参考答案
  • Linux基本操作指令1
  • zsh+Oh My Zsh+Powerlevel10k:打造简洁高效的终端环境
  • 为AI聊天工具添加一个知识系统 之138 设计重审 之2 文章学 引言之2 附加符号学附属诠释学附随工程学(联系)
  • 【芯片设计】处理器芯片大厂前端设计工程师面试记录·20250307
  • Spring实战spring-ai运行
  • 7. 机器人记录数据集(具身智能机器人套件)
  • IDEA 2024.1.7 Java EE 无框架配置servlet