Docker速通合集

Docker介绍

Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows服务器上。容器是完全使用沙箱机制(程序受控的环境),相互之间不会有任何接口(类似iPhone的app)而且更轻量级。
docker核心:容器 镜像 仓库
当我们利用docker安装应用时,docker会自动搜索并下载应用镜像(image).镜像不仅包含应用本身,还包含应用运行所需要的环境,配置,系统函数库。docker会在运行镜像时创建一个隔离环境,称为容器(container)
容器Container:
容器是镜像创建的运行实例,它是一个轻量级的、可执行的独立软件包,包含了运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。
容器化技术使得软件可以在几乎任何地方以相同的方式运行,解决了“在我的机器上可以运行”的问题。

镜像Image:
镜像是构建容器的模板,它是一个只读的模板,用于创建Docker容器。
镜像通常是通过一个Dockerfile定义的,Dockerfile包含了构建镜像所需的指令
仓库Registry:
Docker仓库用于存储和分发Docker镜像
公共的Docker Hub是最大的Docker镜像仓库,用户可以在那里找到、分享和运行高质量的Docker镜像。
Docker的主要特点:
可移植性:Docker容器可以在任何支持Docker的操作系统上运行,应用部署和迁移变得非常简单。
隔离性:容器之间是相互隔离的,一个容器的崩溃不会影响其他容器。
轻量级:容器不需要像虚拟机那样启动一个完整的操作系统,因此它们可以快速启动,并且占用更少的系统资源。
安全性:容器运行在自己的隔离环境中,并且可以限制对系统资源的访问,从而提供了额外的安全层。

Docker的工作流程:
编写Dockerfile:定义应用的依赖、环境变量、配置等。
构建镜像:通过Dockerfile构建应用镜像。
运行容器:从镜像启动一个或多个容器实例。
管理容器:启动、停止、监控和删除容器。
共享镜像:将构建好的镜像推送到Docker仓库,以便在其他机器上使用

使用Docker的优势:
快速部署和扩展:容器可以在秒内启动,这对于需要快速扩展服务的应用场景非常有用。
持续集成和持续部署(CI/CD):Docker可以简化从开发到生产环境的部署流程。
微服务架构:Docker容器非常适合微服务架构,因为它允许将应用分解为多个独立的服务。

Docker的yum库
Docker的yum源是一个软件仓库,它允许用户通过yum包管理器在基于Red Hat的Linux发行版(如CentOS、Fedora)上轻松地安装、更新和卸载Docker及其相关组件。Yum(Yellowdog Updater, Modified)是一个用于RPM-based Linux系统的自动化更新和软件包安装的工具。

安装yum工具

yum install -y yum-utils

配置Docker的yum源(更新为阿里云yum源)

sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.reposudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

更新yum,建立缓存

sudo yum makecache fast

安装Docker

安装命令:

yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin


启动和校验:

docker -v        #查看Docker版本
systemctl start docker        # 启动Docker
docker images        #列出运行在本地Docker主机上的所有镜像
systemctl stop docker        # 停止Docker
systemctl restart docker        # 重启
systemctl enable docker        # 设置开机自启
docker ps        # 执行docker ps命令,如果不报错,说明安装启动成功


配置镜像加速:

mkdir -p /etc/docker        # 创建目录
# 复制内容,注意把其中的镜像加速地址改成你自己的
tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["http://hub-mirror.c.163.com","https://mirrors.tuna.tsinghua.edu.cn","http://mirrors.sohu.com","https://ustc-edu-cn.mirror.aliyuncs.com","https://ccr.ccs.tencentyun.com","https://docker.m.daocloud.io","https://docker.awsl9527.cn"]
}
EOF
systemctl daemon-reload                # 重新加载配置
systemctl restart docker                # 重启docker

Docker常用命令

帮助命令

docker version		#显示docker版本信息
docker info			#显示docker系统信息,包含镜像和容器数量
docker [conmand]  --help	#帮助命令

镜像命令

docker images		#查看所有本地主机上的镜像 相当于docker image ls
docker iamges -aq	#查看所有镜像id
docker search		#搜索镜像
docker pull			#下载镜像
docker pull image[:tag]	#下载指定版本镜像,tag不写默认是latest版本
docker rmi			#删除镜像
docker rmi -f imageid	#删除指定镜像
docker commit		#镜像提交
docker save			#保存镜像
docker load			#加载镜像
docker push			#上传镜像
docker build		#构建镜像
docker tag
docker login		#登录dockerhub
docker loout		#登出

容器命令

docker run		#运行容器(如果镜像不存在会自动拉取镜像并运行)
--name: #为容器指定一个名称;
-d: #后台运行容器,并返回容器ID,也即启动守护式容器;
-p: #端口映射,-p标志用于指定端口映射,它允许你将容器内的端口映射到镜像端口#映射有以下格式
#      -p ip:主机端口:容器端口 
#      -p 主机端口:容器端口(常用)
#      -p 容器端口
#      容器端口      
-P: #随机端口映射;
-w: #指定命令执行时,所在的路径
#例:docker run -d --name nignx -p 80:80 nginx
#后台运行最新版本nginx ,容器名字定义为nginx,镜像,容器端口都是80docker stop		#停止容器
docker kill		#强停容器
docker ps		#查看运行中的容器
docker ps -a	#查看所有容器
docker rm 		#删除容器(只能删除已经停止的容器)
docker rm -f	#删除容器(可以删除运行中的容器)
docker start	#启动容器
docker restart	#重启容器
docker stats	#查看容器状态(cpu情况等)
docker logs		#查看容器日志
docker logs -f	#查看日志,持续输出日志
docker logs --tail number	#查看number条数量的日志
docker top		#查看容器进程信息
docker exec -it container bash		#进入容器内部
docker attach container			#进入容器正在执行的终端
docker cp container:容器文件路径 主机路径		#从容器内复制文件到主机
docker inspect			#查看容器详情
docker network			#自定义网络

数据卷(volume)是一个虚拟目录,容器目录与宿主机目录之间映射的桥梁。
宿主机文件系统目录 /var/lib/docker/volumes

数据卷相关命令

docker volume --help			#查看帮助信息
docker volume create		#创建数据卷
docker volume ls			#查看所有数据卷
docker volume rm			#删除指定数据卷
docker volume inspect 卷名		#查看某个数据卷的详情
docker volume prune			#清除数据卷(未使用的数据卷)
docker -v 本地目录:容器目录	#具名挂载,完成本地目录挂载
#例 docker -v /mysql:/var/lib/mysql		挂在到mysql目录下(目录挂载) **目录挂载必须以"/"或者"./"开头**
#	docker -v mysql:/var/lib/mysql		会被识别为数据卷挂载,数据卷为mysql(卷映射)

Dockerfile制作镜像

FROM指定镜像基础环境
RUN运行自定义命令
CMD

容器启动命令或参数

LABEL自定义标签
EXPOSE指定暴露端口
ENV环境变量
ADD添加文件到镜像
COPY复制文件到镜像
ENTRYPOINT容器固定启动命令
VOLUME数据卷
USER指定用户和用户组
WORKDIR指定默认工作目录
ARG指定构建参数

#简单Dockerfile例子
FROM    openjdk:17
LABEL   author=Olivia
COPY    app.jar    /app.jar
EXPOSE  8080
ENTRYPOINT    ["java","-jar","/app.jar"]
docker build -f Dockerfile -t myjavaapp:v1.0 .        #构建镜像,最后的.不可缺少

DockerCompose

用来批量管理容器的工具

docker-compose.yaml-------用来定义一组相关联的应用容器

顶级元素

name

services             

networks

volumes

configs

sercets

常用命令:

docker compose -f yaml文件名 up -d        #创建和运行容器 默认会查找compose.yaml文件,也可以指定具体文件名
docker compose -f yaml文件名 down         #停止并删除所有由up子命令启动的服务

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/100505.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/100505.shtml

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

相关文章

2025 年 PHP 常见面试题整理以及对应答案和代码示例

2025 年 PHP 常见面试题整理以及对应答案和代码示例 PHP 面试通常会考察基础知识&#xff08;数组、OOP、错误处理&#xff09;和现代特性&#xff08;类型、属性、枚举&#xff09;。关键是要展示你能写出简洁、可预测的代码&#xff0c;同时了解 PHP 8 的新变化。 我整理了…

系统性掌握 LangChain 的核心概念体系

二阶段&#xff1a;系统性掌握 LangChain 的核心概念体系 需要意识到&#xff1a;零散学习概念 ≠ 构建能力。 我们需要的不是“知道这些词”&#xff0c;而是“理解它们如何构成一个系统”。&#x1f3af; 目标在 4 周内&#xff0c;通过刻意练习和渐进式学习&#xff0c;系统…

【C++实战⑩】C++ 引用:解锁高效编程的密钥

目录一、引用的概念与定义1.1 引用的本质与语法规则1.2 引用与指针的区别与联系1.3 引用的初始化与使用注意事项二、引用作为函数参数实战2.1 引用参数的传递特点与优势2.2 引用参数实现函数修改外部数据2.3 引用参数与值参数、指针参数的对比三、引用作为函数返回值实战3.1 引…

微信支付回调成功通知到本地

微信支付回调成功通知到本地最近在本地调试微信支付需要用到支付成功回调&#xff0c;借助工具frp把微信支付成功回调通知到本地进行调试具体如下&#xff1a; 安装frp1.安装文档&#xff1a;https://gofrp.org/zh-cn/docs/setup/服务端准备一台公网上能正常访问的服务器&#…

Java的jdk21与 Go语言对比

JDK 21 的发布&#xff0c;特别是虚拟线程&#xff08;Virtual Threads&#xff09; 的引入&#xff0c;确实让 Java 在高并发领域的表现有了质的飞跃&#xff0c;也让大家更频繁地将其与 Go 这类天生并发友好的语言进行比较。下面我将从几个关键维度对它们进行梳理和对比&…

问答精选 | 《CATIA MODSIM SmartCAE 带练营》第三期 —— 设计迭代全流程直播答疑汇总(上)

目录 前情提要 ⭐点击观看完整版直播回放⭐ 概念问题 Q1.MODSIM是什么&#xff1f; Q2.SmartCAE是CATIA升级以后的新功能嘛&#xff1f;在哪个模块&#xff1f; 软\硬件适配问题 Q1.我们公司用的是V5&#xff0c;能用SmartCAE吗&#xff1f; Q2.我们公司的V5是2018版&a…

【进阶OpenCV】 光流估计--描绘运动物体轨迹

目录 前言 一、光流估计的核心原理 二、光流估计的计算流程 1. 特征提取&#xff1a;找到 “好跟踪” 的点 2. 光流计算&#xff1a;匹配帧间特征点 三、完整实现步骤&#xff08;附代码&#xff09; 1. 环境准备 2. 步骤 1&#xff1a;处理视频第一帧 3. 步骤 2&#…

InnoDB ACID实现:数据库可靠性的核心秘密

这段内容出自 MySQL 官方文档第 17.2 节《InnoDB 与 ACID 模型》&#xff0c;深入解释了 InnoDB 是如何实现 ACID 特性 的。ACID 是数据库系统中最核心的设计原则&#xff0c;确保数据在各种异常情况下依然可靠、一致、安全。 我们来逐部分解析并通俗理解&#xff1a;&#x1f…

CoolUtils Total Excel Converter:全能的 Excel 文件转换工具

一、软件简介 CoolUtils Total Excel Converter 是一款功能强大的 Excel 文件转换工具&#xff0c;专为高效处理和转换 Excel 文件而设计。它支持将 Excel 文件&#xff08;包括 XLS 和 XLSX 格式&#xff09;转换为多种常见的文件格式&#xff0c;如 PDF、CSV、HTML、TXT 等&…

告别静态图谱!TextSSL如何用「稀疏学习」实现更智能的文档分类?

文章链接&#xff1a;https://mp.weixin.qq.com/s/danmd9lSQpmck4tVsM37bQ 今天分享一篇将图神经网络应用于文本分类的创新模型——TextSSL。在传统的文档理解中&#xff0c;模型往往难以同时捕捉文本的局部句法细节和全局语义关联。针对这一挑战&#xff0c;TextSSL提出了一种…

开源商城mall项目功能评估与优化建议

项目地址&#xff1a;https://github.com/macrozheng/mall 开源项目是大多数程序员用来练手的最好途径&#xff0c;但是技术面和技术深度同样重要。一个商城项目能够称之为商城不光有基础的商品后台管理、移动端、支付管理&#xff0c;要打造一个全链路的生态系统&#xff0c;…

我的页面开发

我的页面开发 后端data\me_page.js我的页面静态数据module.exports () > {return {superCard: {beanCount: 1555,tips: "下单得5倍吃货豆,兑专享红包",},cards: [{label: "常用功能",size: 30,items: [{iconUrl: "/imgs/me_page/coupang.png"…

Java Swagger2 能显示页面但看不到一个接口

反复检查之后&#xff0c;发现问题出在的代码如下&#xff1a; ApiModelProperty(value "材料链接地址", example "{ApiHost}/storage/test.pdf")private String url; 结论&#xff1a;example的值包括了 { 和 } &#xff0c;导致网页解析的JSON数据失败…

2025年- H143-Lc344. 反转字符串(字符串)--Java版

1.题目2.思路 方法一&#xff1a;比如有5个元素 s[0],s[1],s[2],s[3],s[4] 反转之后对应 s[4],s[3],s[2],s[1],s[0] 所以s[0]s[4], s[1]s[3] s[i]s[n-1-i] 方法2:双指针 left0,rights.length-1; 当left<right的时候&#xff0c;交换两个元素的位置&#xff0c;左指针左移&am…

微服务高可用流程讲解

如何理解从前端nginx到后端微服务高可用架构问题&#xff0c;下面从nginx、gateway、nacos、各个服务节点的角度讲解下应该如何进行高可用&#xff0c;比如nginx是前端向后端进行的负载均衡&#xff0c;也相当于均衡地向各个gateway网关进行请求&#xff0c;再由gateway网关拉取…

留个档,Unity,Animation控制相机,出现抖动的问题记录

起因是项目用了一段高度自定义的过程复杂的相机Animation&#xff0c;来控制虚拟相机位移旋转。 发现在不同的电脑上&#xff0c;出现了不同程度的抖动。 搜索过程中&#xff0c;发现关键词&#xff1a;World Origin Rebasing。 Unity 世界坐标使用 float&#xff08;单精度浮点…

组合对冲策略(外汇版)

在复杂多变的外汇市场中&#xff0c;投资者常常面临着汇率波动带来的风险。为了降低这种风险&#xff0c;对冲策略成为了一种有效的风险管理工具。以下将详细介绍三种组合对冲策略&#xff0c;它们分别是基于多货币正负相关对冲、区域性货币对冲以及全日元货币对冲的策略。①多…

GPT-5-Codex 正式发布:迈向真正的“自主编程”时代

在 Anthropic Claude 近期遭遇争议的同时&#xff0c;OpenAI 推出了其编程领域的王牌产品——GPT-5-Codex。这并非简单的模型升级&#xff0c;而是基于 GPT-5 专为“自主编程”&#xff08;Autonomous Programming&#xff09;场景深度优化的专用版本&#xff0c;标志着 AI 编程…

java面试:了解redis的集群么,怎么通过redis的集群来实现redis的高可用?

我们知道&#xff0c;为了帮助数据库缓解高并发的压力&#xff0c;我们会上reids缓存帮助数据库分摊&#xff0c;虽说常见场景的并发量还不足以让redis宕机&#xff0c;但假设出现了极高的并发场景&#xff0c;redis依旧是有宕机的可能的&#xff0c;毕竟单点部署的redis容易出…

氧气科技亮相GDMS全球数字营销峰会,分享AI搜索时代GEO新观

2025年9月16日&#xff0c;全球数字营销领域的年度盛会——GDMS&#xff08;Global Digital Marketing Summit&#xff09;在上海国家会展中心盛大举行。作为品牌数字化转型的风向标&#xff0c;本届峰会汇聚来自全球的CEO、CMO、CDO及营销领域高管&#xff0c;共同探讨AI驱动下…