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.mzph.cn/pingmian/71860.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unity开发——CanvasGroup组件介绍和应用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染顺序的组件。 一、常用属性的解释 1、alpha:控制UI的透明度 类型:float,0.0 ~1.0, 其中 0.0 完全透明,1.0 完全不透明。 通过调整alpha值可以实现UI的淡入淡…

每天五分钟深度学习PyTorch:向更深的卷积神经网络挑战的ResNet

本文重点 ResNet大名鼎鼎,它是由何恺明团队设计的,它获取了2015年ImageNet冠军,它很好的解决了当神经网络层数过多出现的难以训练的问题,它创造性的设计了跳跃连接的方式,使得卷积神经网络的层数出现了大幅度提升,设置可以达到上千层,可以说resnet对于网络模型的设计具…

大模型巅峰对决:DeepSeek vs GPT-4/Claude/PaLM-2 全面对比与核心差异揭秘

文章目录 一、架构设计深度解剖1.1 核心架构对比图谱1.2 动态MoE架构实现架构差异分析表 二、训练策略全面对比2.1 训练数据工程对比2.2 分布式训练代码对比DeepSeek混合并行实现GPT-4 Megatron实现对比 2.3 关键训练参数对比 三、性能表现多维评测3.1 基准测试全景对比3.2 推理…

基于hive的电信离线用户的行为分析系统

标题:基于hive的电信离线用户的行为分析系统 内容:1.摘要 随着电信行业的快速发展,用户行为数据呈现出海量、复杂的特点。为了深入了解用户行为模式,提升电信服务质量和精准营销能力,本研究旨在构建基于 Hive 的电信离线用户行为分析系统。通…

Python使用alembic实现数据库管理

python使用alembic实现数据库管理 环境准备 安装依赖: pip install sqlalchemy alembic项目结构 my_project/ ├── models.py # 定义数据模型 └── alembic/ # 迁移脚本目录(自动生成) 使用步骤: 1. 初始化Alembic环境 …

对WebSocket做一点简单的理解

1.概念 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信——浏览器和服务器只需要完成一次握手,两者之间就可以创建持久性的连接, 并进行双向数据传输。 HTTP协议和WebSocket协议对比: HTTP是短连接 WebSocke…

kali虚拟机登录页面发癫 大写锁定输入不了密码

不知道怎么了 总是发癫 重启切换太麻烦了 还有时候不成功 kali其实可以开启虚拟键盘 如下 就解决的 发癫kali 发癫 发癫

基于Python的商品销量的数据分析及推荐系统

一、研究背景及意义 1.1 研究背景 随着电子商务的快速发展,商品销售数据呈现爆炸式增长。这些数据中蕴含着消费者行为、市场趋势、商品关联等有价值的信息。然而,传统的数据分析方法难以处理海量、多源的销售数据,无法满足现代电商的需求。…

内存泄漏出现的时机和原因,如何避免?

由于时间比较紧张我就不排版了,但是对于每一种可能的情况都会出对应的代码示例以及解决方案代码示例。 内存泄漏可能的原因之一在于用户在动态分配一个内存空间之中,忘记将这部分内容手动释放。例如:(c之中使用new分配内存没有使…

PDF处理控件Aspose.PDF,如何实现企业级PDF处理

PDF处理为何成为开发者的“隐形雷区”? “手动调整200页PDF目录耗时3天,扫描件文字识别错误导致数据混乱,跨平台渲染格式崩坏引发客户投诉……” 作为开发者,你是否也在为PDF处理的复杂细节消耗大量精力?Aspose.PDF凭…

工程化与框架系列(27)--前端音视频处理

前端音视频处理 🎥 引言 前端音视频处理是现代Web应用中的重要组成部分,涉及音频播放、视频处理、流媒体传输等多个方面。本文将深入探讨前端音视频处理的关键技术和最佳实践,帮助开发者构建高质量的多媒体应用。 音视频技术概述 前端音视…

2008-2024年中国手机基站数据/中国移动通信基站数据

2008-2024年中国手机基站数据/中国移动通信基站数据 1、时间:2008-2024年 2、来源:OpenCelliD 3、指标:网络类型、网络代数、移动国家/地区、移动网络代码、区域代码、小区标识、单元标识、坐标经度、坐标纬度、覆盖范围、测量样本数、坐标…

阿里云 ESA 游戏行业解决方案|安全防护、加速、低延时的技术融合

如今,游戏行业正处于蓬勃发展与深刻变革的关键时期。根据中国国际数字娱乐产业大会(CDEC)发布的《2024年 1-6 月中国游戏产业报告》显示 2024 年上半年国内游戏市场实际销售收入达 1472.67 亿元,同比增长 2.08%,游戏用…

C# Unity 唐老狮 No.7 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: 全部 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 如果你发现了文章内特殊的字体格式,…

electron + vue3 + vite 主进程到渲染进程的单向通信

用示例讲解下主进程到渲染进程的单向通信 初始版本项目结构可参考项目:https://github.com/ylpxzx/electron-forge-project/tree/init_project 主进程到渲染进程(单向) 以Electron官方文档给出的”主进程主动触发动作,发送内容给渲…

【杂谈】-因果性:开启机器学习新纪元?

文章目录 因果性:开启机器学习新纪元?一、机器学习的现状与局限二、因果性的定义与意义(一)日常生活中的因果性案例(二)相关性与因果性的区别 三、现有机器学习模型的困境与因果性的价值(一&…

【Python】omegaconf 用法详解

OmegaConf:从基础到进阶 1. OmegaConf 简介 OmegaConf 是 hydra 背后的核心配置库,提供比 argparse 和 json.load 更灵活的配置管理能力。其主要特性包括: 安装 OmegaConf: pip install omegaconf2. 基本操作 2.1 创建 OmegaC…

如何在 Windows 10 启用卓越性能模式及不同电源计划对比

在使用 powercfg -duplicatescheme 命令启用 “卓越性能模式”(即 Ultimate Performance 模式)之前,有几个前提条件需要注意: 前提条件: 系统版本要求:卓越性能模式 仅在 Windows 10 专业版 或更高版本&a…

请谈谈 HTTP 中的安全策略,如何防范常见的Web攻击(如XSS、CSRF)?

一、Web安全核心防御机制 (一)XSS攻击防御(跨站脚本攻击) 1. 原理与分类 ​存储型XSS:恶意脚本被持久化存储在服务端(如数据库)​反射型XSS:脚本通过URL参数或表单提交触发执行​…

三、0-1搭建springboot+vue3前后端分离-idea新建springboot项目

一、ideal新建项目1 ideal新建项目2 至此父项目就创建好了,下面创建多模块: 填好之后点击create 不删了,直接改包名,看自己喜欢 修改包名和启动类名: 打开ServiceApplication启动类,修改如下: …