Docker配置与使用详解
一、引言
随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详细介绍Docker的配置与使用,包括Docker的安装、镜像管理、容器操作以及Docker Compose的使用等,并附有详细的代码示例。
二、Docker安装
Docker的安装过程因操作系统而异,但大多数操作系统都提供了官方支持的Docker安装包。以下以Ubuntu系统为例,介绍Docker的安装步骤:
1. 更新软件包列表
sudo apt-get update
2. 安装Docker所需的依赖项
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
3. 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4. 添加Docker官方软件源
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
5. 更新软件包列表并安装Docker CE(社区版)
sudo apt-get update
sudo apt-get install docker-ce
6. 启动Docker服务并设置为开机自启
sudo systemctl start docker
sudo systemctl enable docker
7. 验证Docker安装是否成功
sudo docker run hello-world
如果以上命令能正确输出Docker的信息,说明Docker安装成功。
三、Docker镜像管理
Docker镜像是Docker容器的基础,它包含了应用程序及其依赖项的所有文件。Docker提供了丰富的镜像管理工具,如Docker Hub、阿里云容器镜像服务等。以下介绍Docker镜像的拉取、查看、搜索和删除等基本操作。
1. 拉取镜像
使用docker pull
命令可以从Docker Hub或其他镜像仓库拉取镜像。例如,拉取Ubuntu 20.04的镜像:
sudo docker pull ubuntu:20.04
2. 查看镜像
使用docker images
命令可以查看本地所有的镜像:
sudo docker images
3. 搜索镜像
使用docker search
命令可以在Docker Hub上搜索镜像。例如,搜索名为nginx的镜像:
sudo docker search nginx
4. 删除镜像
使用docker rmi
命令可以删除本地镜像。例如,删除名为ubuntu:20.04的镜像:
sudo docker rmi ubuntu:20.04
四、Docker容器操作
Docker容器是Docker镜像的实例化对象,它包含了应用程序的运行环境。以下介绍Docker容器的创建、启动、停止、进入和删除等基本操作。
1. 创建并启动容器
使用docker run
命令可以创建并启动容器。例如,基于ubuntu:20.04镜像创建一个名为mycontainer的容器,并在其中执行bash命令:
sudo docker run -it --name mycontainer ubuntu:20.04 bash
其中,-it
表示以交互模式运行容器,--name
用于指定容器名称。
2. 查看容器
使用docker ps
命令可以查看正在运行的容器:
sudo docker ps
使用docker ps -a
命令可以查看所有容器(包括已停止的容器):
sudo docker ps -a
3. 停止容器
使用docker stop
命令可以停止正在运行的容器。例如,停止名为mycontainer的容器:
sudo docker stop mycontainer
4. 进入容器
使用docker exec
命令可以在正在运行的容器中执行命令。例如,进入名为mycontainer的容器并执行bash命令:
sudo docker exec -it mycontainer bash
另外,还可以使用docker attach
命令进入容器的终端,但这种方式会阻塞其他命令的执行。
5. 删除容器
使用docker rm
命令可以删除容器。例如,删除名为mycontainer的容器:
sudo docker rm mycontainer
注意:在删除容器之前,需要先停止该容器。
五、Docker Compose使用
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。它使用YAML文件来配置应用程序的服务、网络和卷等。以下介绍Docker Compose的基本使用步骤。
1. 安装Docker Compose
Docker Compose的安装过程与Docker类似,但它是作为一个独立的工具安装的。在Linux系统上,可以通过下载二进制文件并设置可执行权限来完成安装。以下是在Linux上安装Docker Compose的示例步骤:
首先,下载Docker Compose的二进制文件,比如docker-compose
的当前稳定版本(版本号需要替换为最新的):
sudo curl -L "https://github.com/docker/compose/releases/download/vX.Y.Z/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
然后,设置可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
接下来,测试安装是否成功:
docker-compose --version
如果返回了Docker Compose的版本号,则表示安装成功。
2. 创建Docker Compose配置文件
Docker Compose使用YAML文件来定义服务、网络和卷等。以下是一个简单的docker-compose.yml
文件示例,它定义了一个名为web的web应用程序服务和一个名为db的数据库服务:
version: '3'
services:web:build: ./webports:- "5000:5000"depends_on:- dbenvironment:DB_HOST: dbDB_USER: exampleDB_PASS: exampleDB_NAME: exampledbdb:image: postgresenvironment:POSTGRES_PASSWORD: example
在这个例子中,web
服务基于当前目录下的./web
目录中的Dockerfile构建,并将容器的5000端口映射到宿主机的5000端口。web
服务依赖于db
服务,并使用环境变量来配置数据库连接信息。db
服务则基于官方的PostgreSQL镜像创建。
3. 使用Docker Compose启动服务
在包含docker-compose.yml
文件的目录下运行以下命令来启动服务:
docker-compose up -d
-d
选项表示在后台运行服务。你可以使用docker-compose ps
命令来查看正在运行的服务。
4. 停止和删除服务
要停止服务,可以使用以下命令:
docker-compose stop
要删除服务以及它们使用的网络、卷等,可以使用以下命令:
docker-compose down
5. 其他Docker Compose命令
Docker Compose提供了许多其他命令,如docker-compose logs
(查看服务日志)、docker-compose restart
(重启服务)等。你可以通过docker-compose --help
命令查看所有可用的命令和选项。
六、总结
本文详细介绍了Docker的配置与使用,包括Docker的安装、镜像管理、容器操作以及Docker Compose的使用。通过具体的代码示例,展示了如何执行各种Docker操作,并解释了它们的作用和用法。希望本文能帮助读者更好地理解和使用Docker技术。随着云计算和微服务的不断发展,Docker将继续发挥重要作用,为开发者和运维人员提供更高效、更灵活的解决方案。
相关文章:
Docker配置与使用详解
一、引言 随着云计算和微服务的兴起,Docker作为一种轻量级的容器化技术,越来越受到开发者和运维人员的青睐。Docker通过容器化的方式,将应用程序及其依赖项打包成一个可移植的镜像,从而实现了应用程序的快速部署和扩展。本文将详…...
触控MCU芯片(1):英飞凌PSoC第6代第7代
前言: 说到触摸MCU芯片,这个历史也是很久了,比如日常经常接触到的洗衣机、电冰箱、小家电,隔着一层玻璃,轻轻一按就能识别按键,感觉比过去纯机械式的按键更高级更美观,不仅白电,现在很多汽车也都在进行触摸按键的改版,不再使用笨重的机械按键,比如空调调温按键、档位…...
git pull报错:unable to pull from remote repository due to conflicting tag(s)
背景 我在vscode里正常拉取代码,突然就报了如题所示的错误。 原因 因为vscode的拉取按钮执行的实际命令是:git pull --tags origin branch-name,该命令的实际含义是从远程仓库拉取指定的分支和该远程仓库上的所有标签。 在拉取标签时本地的…...
Python将字符串用特定字符分割并前面加序号
Python将字符串用特定字符分割并前面加序号 Python将字符串用特定字符分割并前面加序号,今天项目中就遇到,看着不难,得花点时间搞出来急用啊,在网上找了一圈,没发现有完整流程的文章。所以就搞出来并写了这个文章。仅…...
【第16章】Vue实战篇之跨域解决
文章目录 前言一、浏览器跨域二、配置代理1.公共请求2.代理配置 总结 前言 前后端项目分离衍生出浏览器跨域问题,开发之前我们通过配置代理解决这个问题。 一、浏览器跨域 浏览器的跨域问题主要是由于浏览器的同源策略导致的。同源策略是浏览器的一个安全功能&…...
【PB案例学习笔记】-22制作一个语音朗读金额小应用
写在前面 这是PB案例学习笔记系列文章的第22篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…...
glmark2代码阅读总结
glmark2代码阅读总结 一、总体 用输入参数生成testbench项用scene和benchmark管理进行复用通过类的重载,创建出不同的分支和具体的实现点,如scene和mainloop类用例执行又规划,每个scene都统一有setup,等使用scene的继承关系&…...
第 6 章 监控系统 | 监控套路 - 总结
前面,我们使用 Prometheus + Grafana + Node Exporter 实现虚拟机监控及告警。 那么,😇 监控的套路究竟是什么呢? 第 1 步:暴露 metrics,通过某个 exporter 将 metrics 暴露出来第 2 步:配置 Prometheus 抓取上面暴露的 metrics 数据第 3 步:加速 metrics 显示,配置…...
VsCode中C文件调用其他C文件函数失败
之前一直使用CodeBlocks,最近使用vscode多,感觉它比较方便,但在调用其他C文件的时候发现报错以下内容基于单C文件运行成功,否则请移步 博文:VSCode上搭建C/C开发环境 报错信息 没有使用CodeRunner插件,弹…...
css中content属性你了解多少?
在CSS中,content属性通常与伪元素(如 ::before 和 ::after)一起使用,用于在元素的内容之前或之后插入生成的内容。这个属性不接受常规的HTML内容,而是接受一些特定的值,如字符串、属性值、计数器值等。 以…...
JVM-GC-G1垃圾回收器
JVM-GC-G1垃圾回收器 基本概念 card table card table概念是为了解决新生代对象进入老年代时,在进行新生代扫描的时候会遍历老年代对象的问题。将内存分为多个card,如果在一个老年代card中存在引用新生代对象的对象,则将该区域标记及为dirty card。 CS…...
【Ubuntu通用压力测试】Ubuntu16.04 CPU压力测试
使用 stress 对CPU进行压力测试 我也是一个ubuntu初学者,分享是Linux的优良美德。写的不好请大佬不要喷,多谢支持。 sudo apt-get update 日常先更新再安装东西不容易出错 sudo apt-get upgrade -y 继续升级一波 sudo apt-get install -y linux-tools…...
Artix Linux 默认不使用 systemd
开发者选择不使用systemd,而倾向于使用OpenRC或runit作为其初始化系统的原因。 哲学和设计原则:Systemd是一个功能丰富的初始化系统和系统管理器,它集成了许多功能,但这也导致它的设计哲学与一些用户或开发者的偏好不符。有些用户…...
JVM-GC-CMS垃圾回收器
JVM-CMS垃圾回收器 CMS垃圾回收的步骤 1. 初始标记(InitialMarking) 这是一个STW的过程,并行标记,只是标记GC Roots能直接关联到的对象。由于GC Root直接关联的对象少,因此STW时间比较短。 2. 并发标记 非STW的过程&…...
【玩转google云】实战:如何在GKE上使用Helm安装和配置3节点的RabbitMQ集群
需求 因项目需要需要在Google Kubernetes Engine (GKE) 中使用Helm安装一个3节点的RabbitMQ集群,配置用户名和密码,开通公网访问的Web管理界面,指定namespace为mq,并使用5G的硬盘存储MQ的数据。 前提条件 GKE集群:确保你有一个运行中的GKE集群。Helm工具:确保已安装Hel…...
【神经网络】深度神经网络
深度神经网络(Deep Neural Network,简称DNN)是一种模仿人脑神经网络结构和工作原理的机器学习模型。它通过层级化的特征学习和权重调节,能够实现复杂任务的高性能解决方案。深度神经网络由多个神经元层组成,每个神经元…...
机器学习算法 —— K近邻(KNN分类)
🌟欢迎来到 我的博客 —— 探索技术的无限可能! 🌟博客的简介(文章目录) 目录 KNN的介绍和应用KNN的介绍1) KNN建立过程2) 类别的判定KNN的优点KNN的缺点KNN的应用实战KNN分类数据集 —— KNN分类库函数导入数据导入模型训练&可视化原理简析莺尾花数据集 —— KNN分…...
Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码
Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码 可封装APP,适合做猫狗宠物类的发信息发布,当然懂的修改一下,做其他信息发布也是可以的。 Thinkphp5内核流浪猫流浪狗宠物领养平台H5源码...
c++ 智能指针使用注意事项及解决方案
c11智能指针 shared_ptr介绍注意事项示例解决方案 weak_ptr特点示例 unique_ptr特点示例 shared_ptr 介绍 shared_ptr 是一种智能指针,用于自动管理动态分配的对象的生命周期。它通过引用计数机制来确保当最后一个 shared_ptr 指向一个对象时,该对象会…...
SQLite Delete 语句
SQLite Delete 语句 SQLite 的 DELETE 语句用于从表中删除数据。它是 SQL 数据库管理中非常基础且重要的操作之一。在使用 DELETE 语句时,可以删除表中的特定行,也可以删除整个表的数据。本文将详细介绍 SQLite 中的 DELETE 语句,包括其语法、用法以及如何安全地执行删除操…...
vue3的基本使用方法
【 vue3实例 】 【 0 】对象、方法和属性 对象(Object): 对象是编程中的一个数据结构,它可以包含多种数据类型,包括数字、字符串、布尔值、数组、其他对象等。对象通常由一系列属性和方法组成。在面向对象编程&…...
Java数据结构与算法(盛水的容器贪心算法)
前言 . - 力扣(LeetCode) 贪心算法(Greedy Algorithm)是一种在每一步选择中都采取当前状态下最优或最佳的选择,以期望通过一系列的局部最优选择达到全局最优解的算法。贪心算法的核心思想是贪心选择性质和最优子结构性质。 贪心算法的基本步骤 建立模型:将问题分解为一…...
MYSQL 数字(Aggregate)函数
目录 1、AVG() 2、MAX() 3、MIN() 4、SUM() 5、COUNT() 6、LIMIT() 1、AVG() 解释:返回数值列(字段)的平均值。 语法格式:SELECT AVG(column_name) FROM table_name 中文注释:select AVG(数值列/字段) from 表名 ; 用法࿱…...
【TensorFlow深度学习】如何处理不平衡数据集与欠采样、过采样技术
如何处理不平衡数据集与欠采样、过采样技术 如何处理不平衡数据集与欠采样、过采样技术:实现均衡学习的艺术1. 不平衡数据集的识别与评估2. 欠采样技术:减少多数类样本3. 过采样技术:增加少数类样本4. 集成采样策略:SMOTE +ENN 或 SMOTE +Tomek Links5. 评估与选择最佳策略…...
【考研数学】如何保证进度不掉队?暑假强化保姆级规划
数一125学长前来解答!一句话,跟对老师,抓基础,有计划的进行复习才是关键! 数学基础非常重要,包括高等数学、线性代数和概率论等基础知识点。要确保对这些基础知识有扎实的掌握。 按照教材的顺序ÿ…...
Vue3【二十一】Vue 路由模式(createWebHashHistory /createWebHistory )和RouterLink写法
Vue3【二十一】Vue 路由模式(createWebHashHistory /createWebHistory )和RouterLink写法 Vue3【二十一】Vue 路由模式和普通组件目录结构 createWebHistory history模式:url不带#号,需要后端做url适配 适合销售项目 利于seo crea…...
【交易策略】#22-24 残差资金流强度因子
【交易策略】#22-24 残差资金流强度因子...
CentOS 7.9检测硬盘坏区、实物定位(三)
系列文章目录 CentOS 7.9上创建JBOD(一) CentOS 7.9上创建的JBOD阵列恢复(二) 文章目录 系列文章目录前言一、在系统中找到硬盘对应的盘符二、使用命令定位实物1.badblocks检测坏块2.对2T以上的硬盘检测(对本篇非必要…...
redis持久化方式—RDB
RDB快照 与AOF记录写操作命令不同,RDB直接记录内存中的二进制数据,reids恢复数据时,直接将RDB文件加载到内存中就可以了,听起来是不是RDB完虐AOF?那么看完本文,会让你的态度转变,因为RDB的缺点…...
java8实战1(让方法参数具备行为能力)
客户需求是查出颜色为green的苹果 客户需求变成查出颜色为red的苹果 假设现在客户需求又变了,找出黄色的呢?你想查什么颜色直接做为参数输入 让调用者输入颜色参数 问题是现在客户想把重量做为条件,来筛选苹果集合 这就为难了,客户需求随时会变 观察以上例子,发现有个共同…...
百度上海分公司/青岛建站seo公司
C语言学习笔记1)VC6.0学习笔记进入方法:1、建立一个工程文件——新建——(选择)工程——(选择)Win32 Console Application——位置(选择存贮的位置)——工程名称(要用字母、英文、或拼音都可以)——一路确定到完成2、建立一个文件文件——新建——(选择)文件——(选…...
新手建站教程视频/网络网站推广选择乐云seo
一、抽象工厂模式简介(Bref Introduction) 抽象工厂模式(Abstract Factory Pattern),提供一个创建一系列相关或者相互依赖对象的接口,而无需制定他们的具体类。优点是:易于交换产品系列…...
网站建设税费/sem推广代运营
索引类型 phoenix的索引大致分为两类global index和local index,好像和星环有点类似,其实这是hbase二级索引解决方案里面广为人知的两种方案,侧重点不同,使用场景也不一样。 global index,global是默认的索引格式。官…...
汪清县 党风廉政建设网站/nba最新消息交易
高度之间的关系可以改写成一个递推式:Hi1 2Hi - Hi-1 2。Hn和Hi之间是正相关的。 思路见注释。(一开始是那么想的,其实不用矩阵快速幂,二分H2也可以。 /********************************************************* * …...
好的培训网站模板/郑州seo网站管理
我想告诉你Android开发你还在用JAVA吗?现在开始使用新的编程语言了,自从Kotlin成为谷歌官方语言后,你有没有心动呢? 我想告诉你一个名为Kotlin的新编程语言并且阐述为什么你应该考虑下一个项目中使用它。我以前非常喜欢使用JAVA,但…...
wordpress点击页面跳转/品牌网络营销策划方案
本文作者范欣欣,其就职于网易杭州研究院后台技术中心数据库技术组,从事HBase开发、运维,对HBase相关技术有浓厚的兴趣。 任何系统都会有各种各样的问题,有些是系统本身设计问题,有些却是使用姿势问题。HBase也一样&…...