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将继续发挥重要作用,为开发者和运维人员提供更高效、更灵活的解决方案。

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

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

相关文章

数据结构(DS)C语言版:学习笔记(4):线性表

参考教材:数据结构C语言版(严蔚敏,吴伟民编著) 工具:XMind、幕布、公式编译器 正在备考,结合自身空闲时间,不定时更新,会在里面加入一些真题帮助理解数据结构 目录 2.1线性…

DP读书:半导体物理考试重点

半导体物理重点🥳🥳🥳 半导体中电子的状态和能带 半导体的单晶材料和其他固态晶体材料一样,是由大量原子周期性重复排列而成,而每个原子又包含原子核和许多电子。 半导体单晶材料中的带电子是指:半导体晶…

vue页面带滚动条,打开新页面页面不置顶的问题

第一个思路还是找router下的index.jsexport default new Router({mode: history, // 去掉url中的#scrollBehavior: () > ({ y: 0 }),routes: constantRoutes })如果不成功可以再试试在内容区设置document.body.scrollTop 设置为0如果有默认class名,通过路由监听修…

PHP入门教程3:数组和字符串操作

PHP入门教程3:数组和字符串操作 在前两篇文章中,我们学习了PHP的基础语法、控制结构和函数的使用。本文将重点介绍数组和字符串的高级操作,这些是PHP编程中非常常见且重要的内容。本文将包含以下几个部分: 数组的类型和操作多维…

C# 泛型分析

1、object类型是一切类型的父类。 2、通过继承,子类拥有父类的一切属性和行为,任何父类出现的地方,都可以用子类来代替。 但是上面object类型的方法又会带来另外一个问题:装箱和拆箱,会损耗程序的性能。 在泛型类型…

在CDH中重启YARN组件时,JobHistoryServer服务启动失败

问题描述 在CDH中重启YARN组件的JobHistoryServerJobHistoryServer服务时,遇到如下错误。 错误一: Stopping JobHistory 上午10点44:40.553分 INFO AbstractService Service org.apache.hadoop.mapreduce.v2.hs.JobHistoryServer failed in state INI…

eNSP由于Cloud网卡设置错误引起的STP环路机制问题

现象:SW1和SW2之间直连(vlan13)不可达,但是断开左边的Cloud云的虚拟之后可达(设置g0/0/1口为down) ,接口协议均up,配置正确。 查看生成树状态: 发现,SW2的g0/0/4接口为阻塞状态&…

[机器学习] Stable Diffusion初体验——基于深度学习通过神经网络的强大AI平台

文章目录 前言平台介绍 一.创建应用 Stable Diffusion WebUI初始化上传模型,VAE,lora 介绍sd模型,vae,lora模型进入应用文生图工作区调参区图生图 结语 前言 在这个信息爆炸的时代,AI技术正以前所未有的速度发展着。图…

微服务开发与实战Day07 - MQ高级篇

一、消息可靠性问题 首先,分析一下消息丢失的可能性有哪些。 消息从发送者发送消息,到消费者处理消息,需要经过的流程是这样的: 消息从生产者到消费者的每一步都可能导致消息丢失: 发送消息时丢失: 生产…

2024.6.17 刷题总结

2024.6.17 **每日一题** 522.最长特殊序列 Ⅱ,本题为前者的升级版,从两个字符串变成一个字符串序列了,所以我们需要依次枚举字符串来进行判断。先写一个判断两字符串是否相等的函数,然后枚举字符串逐个判断是否相等,若…

逆风破浪之中国半导体产业迈向全球舞台的坚实步伐

在科技飞速发展的今天,芯片技术已成为推动现代科技进步的核心动力。在这个全球芯片市场的激烈竞争中,中国作为“后来者”,不仅没有被淘汰,反而凭借惊人的发展潜力和创新能力,逐步崭露头角,成为全球芯片行业…

引调水设计乙级资质中技术负责人安排哪个专业?

引调水设计乙级资质中的技术负责人一般应具备与水利工程特别是引调水工程相关的专业背景。技术负责人通常需要满足以下条件: 大专以上学历;至少10年的设计工作经验;具有中级以上专业技术职称;在引调水工程方面具有至少2项项目设计…

Leetcode275 H指数II

题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以…

第二证券:新股“肉签”不断,今日两只申购!光伏巨头小伙伴来了

本周(6月17日—6月21日),A股商场将迎来两只新股,分别为沪市主板的永臻股份和创业板的爱迪特,均将于本周一进行申购。 资料显现,永臻股份是国内领先的铝合金光伏结构件制造商,公司发行价为23.35…

俄罗斯方块小游戏(附源码)

游戏展示 一.导包 import turtle import random 二.定义一个Block类 定义一个Block类,用于表示游戏中的方块,包含颜色和形状。 class Block:def __init__(self, color, tiles):self.color colorself.tiles tiles三.定义了7个不同的Block对象 定义了7…

docker通过容器id查看运行命令;Portainer监控管理docker容器

1、docker通过容器id查看运行命令 参考:https://blog.csdn.net/a772304419/article/details/138732138 docker inspect 运行镜像id“Cmd”: [ “–model”, “/qwen-7b”, “–port”, “10860”, “–max-model-len”, “4096”, “–trust-remote-code”, “–t…

C# Winform内嵌窗体(在主窗体上显示子窗体)

在开发Winform项目中,经常会要切换不同的窗体。通常程序都有一个主窗体,在切换窗体时往往需要关闭其他子窗体,这个实例就来介绍MDI主窗体内嵌子窗体的实现方法。 MDI主窗体要设置一个比较重要的属性,IsMdiContainertrue。子窗体的…

论文阅读——ApeGNN- Node-Wise Adaptive Aggregation in GNNs for Recommendation

ApeGNN: Node-Wise Adaptive Aggregation in GNNs for Recommendation ApeGNN:GNN 中的节点自适应聚合以进行推荐 Abstract 近年来,图神经网络(GNN)在推荐方面取得了长足的进步。基于 GNN 的推荐系统的核心机制是迭代聚合用户-…

ThinkPHP 的老漏洞仍然被攻击者钟情

研究人员发现安全领域出现了令人不安的趋势:攻击者不仅对新披露的漏洞十分感兴趣,对已知的漏洞也丝毫不放过,尽管有些漏洞已经存在了好些年头,攻击者仍然能够通过老漏洞成功完成攻击。 典型的例子就是 ThinkPHP 远程代码执行漏洞…

轨迹优化 | 图解欧氏距离场与梯度场算法(附ROS C++/Python实现)

目录 0 专栏介绍1 什么是距离场?2 欧氏距离场计算原理3 双线性插值与欧式梯度场4 仿真实现4.1 ROS C实现4.2 Python实现 0 专栏介绍 🔥课程设计、毕业设计、创新竞赛、学术研究必备!本专栏涉及更高阶的运动规划算法实战:曲线生成…