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

Docker和DockerCompose基础教程及安装教程

Docker的应用场景

  • Web 应用的自动化打包和发布。
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

CentOS Docker 安装

使用官方安装脚本自动安装

安装命令如下:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

也可以使用国内 daocloud 一键安装命令:

curl -sSL https://get.daocloud.io/docker | sh

启动 Docker。

sudo systemctl start docker

将Docker服务设置为开机启动.

sudo systemctl enable docker

Docker三个基本概念

  • 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

  • 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

  • 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。

Docker 镜像加速

Mac端配置

  "registry-mirrors": ["https://hub-mirror.c.163.com","https://ustc-edu-cn.mirror.aliyuncs.com","https://ghcr.io","https://mirror.baidubce.com"]

在这里插入图片描述

命令配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://hub-mirror.c.163.com", "https://ustc-edu-cn.mirror.aliyuncs.com", "https://ghcr.io", "https://mirror.baidubce.com", "https://kuamavit.mirror.aliyuncs.com", "https://registry.docker-cn.com", "https://docker.mirrors.ustc.edu.cn"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

检查加速器是否生效

$ docker infoRegistry Mirrors:https://hub-mirror.c.163.com/https://ustc-edu-cn.mirror.aliyuncs.com/https://ghcr.io/https://mirror.baidubce.com/

Docker 使用

Docker 容器使用

获取镜像

$ docker pull ubuntu

启动容器

$ docker run -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作。
  • -t: 终端。
  • ubuntu: ubuntu 镜像。
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。

查看所有容器

$ docker ps -a

查看正在运行容器

$ docker ps

启动已停止容器

$ docker start b750bbbcfd88 

后台运行容器

在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。

$ docker run -itd --name ubuntu-test ubuntu /bin/bash

停止容器

$ docker stop <容器 ID>

重启容器

$ docker restart <容器 ID>

进入容器

在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:

  • docker attach
  • docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。

attach 命令(不推荐)

$ docker attach 1e560fca3906 

注意: 如果从这个容器退出,会导致容器的停止。

exec 命令(推荐)

$ docker exec -it 243c32535da7 /bin/bash

注意: 如果从这个容器退出,容器不会停止,这就是为什么推荐大家使用 docker exec 的原因。

更多参数说明请使用 docker exec --help 命令查看。

导出容器快照

如果要导出本地某个容器,可以使用 docker export 命令。

$ docker export 1e560fca3906 > ubuntu.tar

导入容器快照

可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:

$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1

此外,也可以通过指定 URL 或者某个目录来导入,例如:

$ docker import http://example.com/exampleimage.tgz example/imagerepo

删除容器

删除容器使用 docker rm 命令:

$ docker rm -f 1e560fca3906

数据拷贝

Docker cp 命令

**docker cp 😗*用于容器与主机之间的数据拷贝。

语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

OPTIONS说明:

  • **-L 😗*保持源目标中的链接
实例

将主机/www/runoob目录拷贝到容器96f7f14e99ab的/www目录下。

docker cp /www/runoob 96f7f14e99ab:/www/

将主机/www/runoob目录拷贝到容器96f7f14e99ab中,目录重命名为www。

docker cp /www/runoob 96f7f14e99ab:/www

将容器96f7f14e99ab的/www目录拷贝到主机的/tmp目录中。

docker cp  96f7f14e99ab:/www /tmp/

运行WEB应用

运行WEB应用

docker pull training/webapp  # 载入镜像docker run -d -P training/webapp python app.pydocker run -d -p 5000:5000 training/webapp python app.py  # 指定映射端口

参数说明:

  • **-d:**让容器在后台运行。
  • **-P:**将容器内部使用的网络端口随机映射到我们使用的主机上。

查看 WEB 应用容器

使用 docker ps 来查看我们正在运行的容器:

docker ps

查看端口映射

通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

docker port bf08b7f2cd89

查看 WEB 应用程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出。

docker logs -f bf08b7f2cd89

-f:docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

查看WEB应用程序容器的进程

docker top redis-test

检查 WEB 应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。

docker inspect redis-test

停止 WEB 应用容器

docker stop redis-test

重启WEB应用容器

docker start redis-testdocker restart redis-test  # 重启正在运行的容器

移除WEB应用容器

docker rm redis-test 

Docker 镜像使用

列出镜像列表

 songfayuan@songfayuandeMacBook-Pro  ~  docker images
REPOSITORY                   TAG       IMAGE ID       CREATED         SIZE
tomcat                       latest    b0e0b0a92cf9   2 weeks ago     680MB
redis                        latest    7faaec683238   3 weeks ago     113MB
nginx                        latest    87a94228f133   3 weeks ago     133MB
activiti/activiti-keycloak   latest    4f29e5564672   10 months ago   779MB
kibana                       7.2.0     3e581a516dcd   2 years ago     890MB
elasticsearch                7.2.0     0efa6a3de177   2 years ago     861MB

各个选项说明:

  • **REPOSITORY:**表示镜像的仓库源
  • **TAG:**镜像的标签
  • **IMAGE ID:**镜像ID
  • **CREATED:**镜像创建时间
  • **SIZE:**镜像大小

获取镜像

docker pull ubuntu:13.10

查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/

我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个 httpd 的镜像来作为我们的 web 服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像。

docker search httpd

NAME: 镜像仓库源的名称

DESCRIPTION: 镜像的描述

OFFICIAL: 是否 docker 官方发布

stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。

AUTOMATED: 自动构建。

拖取镜像

docker pull httpd

下载完成后,我们就可以使用这个镜像了。

docker run httpd

删除镜像

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world

创建镜像

当我们从 docker 镜像仓库中下载的镜像不能满足我们的需求时,我们可以通过以下两种方式对镜像进行更改。

  • 1、从已经创建的容器中更新镜像,并且提交这个镜像
  • 2、使用 Dockerfile 指令来创建一个新的镜像

本地加载镜像

要从本地加载 Docker 镜像,你可以使用以下命令:

docker load < image.tar

其中 image.tar 是包含 Docker 镜像的文件路径。这将从指定的文件中加载镜像,并将其添加到本地的 Docker 镜像列表中。

导出镜像

要导出 Docker 镜像到本地文件,可以使用以下命令:

docker save -o image.tar image_name

其中 image_name 是要导出的 Docker 镜像的名称。该命令将镜像打包为一个 tar 文件,并将其保存到本地的文件系统中。你可以指定任意的输出文件名,例如 image.tar

请注意,加载和导出 Docker 镜像都需要在拥有 Docker 守护进程的主机上执行。

Docker Dockerfile

Docker应用

Docker安装Elasticsearch

docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

Docker 命令大全

https://www.runoob.com/docker/docker-command-manual.html

Docker Compose

安装docker-compose

github上下载docker-compose二进制文件安装
  • 下载最新版的docker-compose文件
sudo curl -L https://github.com/docker/compose/releases/download/v2.21.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
  • 添加可执行权限
sudo chmod +x /usr/local/bin/docker-compose
  • 测试安装结果
[root@MiWiFi-R4A-srv ~]# docker-compose -v
Docker Compose version v2.21.0

docker-compose -h

查看帮助
docker-compose -h

docker-compose up

在后台启动所有服务

docker-compose up -d

docker-compose stop

docker-compose stop 停止正在运行的容器,可以通过docker-compose start 再次启动

docker-compose stop [options] [SERVICE...]

选项包括 -t, –timeout TIMEOUT 停止容器时候的超时(默认为10秒)

docker-compose down

停止和删除容器、网络、卷、镜像

docker-compose down [options]

选项包括:

  • –rmi type,删除镜像,类型必须是:all,删除compose文件中定义的所有镜像;local,删除镜像名为空的镜像
  • -v, –volumes,删除已经在compose文件中定义的和匿名的附在容器上的数据卷
  • –remove-orphans,删除服务中没有在compose中定义的容器 docker-compose down 停用移除所有容器以及网络相关

相关文章:

Docker和DockerCompose基础教程及安装教程

Docker的应用场景 Web 应用的自动化打包和发布。自动化测试和持续集成、发布。在服务型环境中部署和调整数据库或其他的后台应用。从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。 CentOS Docker 安装 使用官方安装脚本自动安装 安装命令…...

ArcGIS操作:13 生成最小外接矩阵

应用情景&#xff1a;筛选出屋面是否能放下12*60m的长方形&#xff0c;作为起降场候选点&#xff08;一个不规则的形状内&#xff0c;判断是否能放下指定长宽的长方形&#xff09; 1、面积初步筛选 Area ≥ 720 ㎡ 面积计算见 2、打开 ArcToolbox → Data Management Tools …...

Qt:事件

目录 处理事件 鼠标事件 键盘事件 定时器事件 窗口事件 虽然 Qt 是跨平台的 C 开发框架&#xff0c;Qt 的很多能力其实是操作系统提供的 只不过 Qt 封装了系统的 API 事件 前面学习过信号槽&#xff1a; 用户进行的各种操作&#xff0c;就可能会产生出信号&#xff0c;可以…...

python 程序一次启动有两个进程的问题(flask)

0. 背景 写了一个使用 flask 作为服务框架的程序&#xff0c;发现每次启动程序的时候&#xff0c;使用 ps 都能观察到两个 python 进程。 此外&#xff0c;这个程序占用了 GPU 资源&#xff0c;我发现有两个 python 进程&#xff0c;分别占用了完全相同的 GPU 显存 1. 原因 …...

ethtool的资料

ethtoolethtool(8) — Linux manual pageethtool(8) - Linux man pageUsing ethtool in LinuxLooking at your Linux system’s network interface with ethtoolHow to Change Speed & Duplex of Ethernet Card in Linux with ethtool CommandNVIDIA EthtoolRed Hat Enterp…...

SpringBoot过滤器(Filter)的使用:Filter接口、FilterRegistrationBean类配置、@WebFilter注释

1、过滤器(Filter)的介绍 Spring Boot 的过滤器用于对数据进行过滤处理。通过 Spring Boot 的过滤器,程序开发人员不仅可以对用户通过 URL 地址发送的请求进行过滤处理(例如:过滤一些错误的请求或者请求中的敏感词等),而且可以对服务器返回的数据进行过滤处理(例如:压…...

“此电脑”中删除WPS云盘方法(百度网盘通用)

&#x1f4e3;此方法适用于卸载WPS云盘后&#xff0c;WPS云盘图标依然在此电脑中显示的问题。 原理&#xff1a;通过注册来进行删除 步骤&#xff1a; WIN键R,打开运行窗口&#xff0c;输入regedit命令&#xff0c;来打开【注册表编辑器】&#xff1b; 从左侧&#xff0c;依…...

Manus AI:开启Agent元年的ChatGPT时刻(附赠资料)

1. Manus AI&#xff1a;全球首个通用Agent Manus AI 是全球首个通用人工智能代理&#xff0c;连接思想与行动&#xff0c;不仅思考&#xff0c;还能交付成果。Manus 擅长处理工作和生活中的各种任务&#xff0c;帮助用户完成一切。其核心理念是“less structure, more intell…...

ChromeDriver下载 最新版本 134.0.6998.35

平时为了下个驱动&#xff0c;到处找挺麻烦&#xff0c;收集了很多无偿分享给需要的人&#xff0c;仅供学习和交流。 ChromeDriver及浏览器134.0.6998.35 ChromeDriver及浏览器133.0.6943.141 ChromeDriver 102.0.5005.61 ChromeDriver 105.0.5195.102 ChromeDriver 108.0…...

Sass进阶之路:@forward 的可见性控制与变量覆盖

文章目录 前言1. 转发导入2. 添加前缀3. 控制可见性4. 转发时修改默认值总结 前言 在上一篇中&#xff0c;我们深入探讨了 use 的使用&#xff0c; 也介绍了 use 在使用深层模块中的变量时具有一定的缺点。所以在本文中&#xff0c;我们将深入解析 forward 的核心用法。 1. 转…...

MySQL作业一

一、创建数据库 #创建数据库 mysql> create database db_ck; Query OK, 1 row affected (0.01 sec)mysql> show databases like "db_%"; ----------------- | Database (db_%) | ----------------- | db_ck | | db_system | ----------------…...

虚拟机总结| 关于虚拟机的一些配置总结

前言 每次安装新的虚拟机都需要重新在网上搜索如何配置网络&#xff0c;我需要写一个自己的部署步骤&#xff0c;增加工作效率&#xff0c;不用每次配置的时候再去网上去翻找。 1.只需要联网功能记录(不固定IP) 1.1 修改ifcfg-ens33 vi etc/sysconfig/network-scripts/ifcfg…...

leetcode-sql数据库面试题冲刺(高频SQL五十题)

题目&#xff1a; 577.员工奖金 表&#xff1a;Employee -------------------- | Column Name | Type | -------------------- | empId | int | | name | varchar | | supervisor | int | | salary | int | -------------------- empId 是该表中具有唯一值的列。 该表的每一行…...

OpenManus:解锁测试工程师的效率密码——实践与应用指南

随着软件行业的快速发展&#xff0c;测试工程师面临的挑战也日益增多&#xff1a;如何在有限的时间内保证产品质量、如何高效生成测试数据、如何快速定位问题根源&#xff1f;这些问题直接影响到产品上线的节奏和用户体验。而在这一背景下&#xff0c;开源项目 OpenManus 的出现…...

Mybatis中的设计模式

1. 工厂模式&#xff08;Factory Pattern&#xff09; 概念&#xff1a;工厂模式是一种创建对象的设计模式&#xff0c;它将对象的创建和使用分离&#xff0c;通过一个工厂类来负责创建对象。MyBatis 中的应用&#xff1a;MyBatis 使用 SqlSessionFactory 来创建 SqlSession 对…...

[PWNME 2025] PWN 复现

这种比赛得0也不容易&#xff0c;前边暖声还是能作的。 GOT 指针前溢出&#xff0c;可以溢出到GOT表&#xff0c;然后把后门写上就行 Einstein 这个拿到WP也没复现成&#xff0c;最后自己改了一下。 int __cdecl handle() {int offset; // [rsp8h] [rbp-38h] BYREFunsigne…...

【笔记】记一次easyExcel中注解ExcelProperty映射字段赋值无效问题

背景 最近在开发一个导入excel文件解析数据并入库的功能&#xff0c;导入过程中出现一个BUG&#xff1a;后端映射实体字段pType没有被赋值&#xff0c;但是导入的excel源文件是有数据。 定位问题 经过debug源码发现最终创建对象并赋值使用的是net.sf.cglib.beans.BeanMap类中…...

肖恩的n次根

1.肖恩的n次根 - 蓝桥云课 问题描述 喜欢研究数学问题的肖恩注意到&#xff0c;在编程语言中通常内置函数只有开平方根和开立方根&#xff0c;但是肖思想知道开高次方根&#xff08;大于3次方称为高次方&#xff09;&#xff0c;应该怎么做。请你设计一个程序来帮帮肖恩。 输…...

《AI浪潮下的创新枢纽:火山引擎大模型应用实验室平台》

《AI浪潮下的创新枢纽&#xff1a;火山引擎大模型应用实验室平台》 引言&#xff1a;AI 时代的新引擎 在科技飞速发展的当下&#xff0c;人工智能&#xff08;AI&#xff09;已不再是遥不可及的概念&#xff0c;它如同一股汹涌的浪潮&#xff0c;席卷了我们生活的每一个角落。…...

生成式AI系列(二) LLM生成质量改善的方法——RAG检索增强生成

一、引子 我们需要通过一些手段来提升LLM生成内容质量&#xff0c;主要的有下面三项&#xff0c;本文将主要介绍RAG。 1. 提示工程&#xff08;Prompt Engineering&#xff09; 通过精心设计的提示&#xff08;Prompt&#xff09;来提升输出的质量 2. 模型微调&#xff08;Fi…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展&#xff1a;显示创建时间8. 功能扩展&#xff1a;记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

vue3 定时器-定义全局方法 vue+ts

1.创建ts文件 路径&#xff1a;src/utils/timer.ts 完整代码&#xff1a; import { onUnmounted } from vuetype TimerCallback (...args: any[]) > voidexport function useGlobalTimer() {const timers: Map<number, NodeJS.Timeout> new Map()// 创建定时器con…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...