Docker 入门介绍及简单使用

Docker 的简单介绍

 中文官网:Docker中文网 官网

英文官网:Docker: Accelerated Container Application Development

Docker 是一个开源的应用容器引擎,它允许开发者打包应用及其依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 操作系统上,也可以实现虚拟化。通过 Docker,开发人员可以构建、部署和运行应用程序,而无需关心底层基础设施的差异。

Docker 主要基于以下核心概念:

  1. 容器(Containers):容器是 Docker 的基本运行单元,它将应用程序及其所有依赖(如库、环境变量、配置文件等)打包在一起,形成一个可移植的、轻量级的、自包含的执行环境。每个容器都在其自己的进程中运行,并与其他容器共享主机操作系统内核,但各自拥有独立的文件系统、网络配置、资源限制等。

  2. 镜像(Images):镜像是创建容器的蓝图,是一个只读模板。它包含了运行应用程序所需的所有内容,包括代码、运行时、库、环境变量和配置文件等。镜像通过分层结构构建,每一层代表一次修改或添加,这种设计使得镜像复用和共享非常高效。用户可以从基础镜像开始,通过添加自定义层来构建新的镜像。

  3. 注册表(Registry):Docker 注册表是存放和分发 Docker 镜像的地方,最知名的公共注册表是 Docker Hub,用户可以在上面查找、下载或上传镜像。企业通常会使用私有注册表(如 Harbor、Nexus)来管理内部的镜像。

  4. Dockerfile:Dockerfile 是一个文本文件,用于定义如何构建一个 Docker 镜像。它包含了一系列指令,如指定基础镜像、复制文件、运行命令等,Docker 会按照这些指令逐行执行以生成最终的镜像。

Docker 下载与安装

Docker 可以在多种主流操作系统上安装,包括 Linux、macOS 和 Windows

下载地址:Get Started | Docker

以下是在 Linux 环境下安装 Docker 的大致步骤:

Linux 环境

安装参考:Install Docker Desktop on Linux | Docker Docs

前提条件

  • 确保系统内核版本高于 3.10,因为 Docker 需要某些内核特性支持。可以通过 uname -r 命令检查内核版本。

安装步骤(以 CentOS/RHEL 为例):

  1. 卸载旧版本(如果存在):

    1sudo yum remove docker \
    2             docker-client \
    3             docker-client-latest \
    4             docker-common \
    5             docker-latest \
    6             docker-latest-logrotate \
    7             docker-logrotate \
    8             docker-engine
  2. 安装必要工具

    1sudo yum install -y yum-utils
  3. 设置 Docker 软件源: 使用官方或第三方(如阿里云)的镜像仓库以提高下载速度。这里以阿里云为例:

    1sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  4. 安装 Docker Engine

    1sudo yum install -y docker-ce docker-ce-cli containerd.io
  5. 启动 Docker 服务

    1sudo systemctl start docker
  6. 设置 Docker 开机自启动

    1sudo systemctl enable docker
  7. 验证安装

    1docker --version
macOS 和 Windows

对于 macOS 和 Windows 用户,可以直接访问 Docker 官方网站下载并安装适用于各自操作系统的 Docker Desktop 应用程序。安装程序会自动处理依赖项和配置。

macOS下载参考:Install Docker Desktop on Mac | Docker Docs

Windows下载参考:Install Docker Desktop on Windows | Docker Docs

Docker 基本使用

基本命令

  • 镜像操作

    • 搜索镜像docker search <image-name>
    • 拉取镜像docker pull <image-name[:tag]>
    • 查看本地镜像docker images
    • 删除镜像docker rmi <image-id|image-name[:tag]>
  • 容器操作

    • 运行容器docker run [options] <image-name[:tag]> [command]
    • 列出容器
      • 正在运行的容器:docker ps
      • 所有容器(包括已停止的):docker ps -a
    • 启动容器docker start <container-id|container-name>
    • 停止容器docker stop <container-id|container-name>
    • 重启容器docker restart <container-id|container-name>
    • 进入容器docker exec -it <container-id|container-name> bash
    • 删除容器docker rm <container-id|container-name>
  • 其他常用命令

    • 查看容器日志docker logs <container-id|container-name>
    • 导出容器docker export <container-id> > output.tar
    • 导入容器快照cat input.tar | docker import - <image-name[:tag]>
    • 构建镜像docker build -t <image-name[:tag]> [context-dir]

示例

  • 运行一个交互式 Ubuntu 容器

    1docker run -it ubuntu:latest bash
  • 运行一个后台模式的 Nginx 容器,并映射端口

    1docker run -d --name my-nginx -p 8080:80 nginx:latest
  • 从容器中拷贝文件到主机

    1docker cp <container-id>:<src-path> <host-path>

常见问题及解决方法

以上就是对 Docker 的简单介绍,在实际使用中遇到问题时,应结合错误提示和日志信息进行细致排查并在网上搜索问题解决方案,你遇到的问题也是别人踩过的坑

  1. 无法连接到 Docker daemon:标题三

    • 原因:通常由于权限问题或 Docker 服务未启动。
    • 解决:使用 sudo 或将当前用户加入 docker 组(需重新登录生效),确保 Docker 服务已启动(systemctl status docker 或 service docker status)。
  2. 拉取镜像速度慢

    • 原因:默认使用的 Docker Hub 镜像仓库可能因网络问题导致下载速度慢。
    • 解决:配置使用国内镜像加速服务,如阿里云、腾讯云、DaoCloud 提供的镜像加速器。
  3. 容器内应用无法访问网络

    • 原因:网络配置问题,如未正确映射端口、网络驱动问题、防火墙限制等。
    • 解决
      • 检查 docker run 命令中是否正确使用 -p 参数映射了宿主机与容器端口。
      • 检查容器的网络驱动是否正常(docker network lsdocker inspect <container-id>)。
      • 检查主机防火墙设置,确保对应端口开放。
  4. 容器内部存储数据丢失

    • 原因:容器默认使用的是临时存储,当容器被删除时,其中的数据也会丢失。
    • 解决
      • 使用 数据卷(Data Volumes) 保存持久化数据,数据卷独立于容器生命周期,不会随容器删除而丢失。
      • 在 docker run 命令中使用 -v 参数挂载数据卷,或创建命名数据卷。
  5. Dockerfile 构建失败

    • 原因:Dockerfile 中的指令错误、依赖软件包不存在、网络问题等。
    • 解决
      • 检查 Dockerfile 中的语法和指令顺序。
      • 确保基础镜像、依赖包名称和版本正确无误。
      • 如果是从网络下载依赖,检查网络连接和代理设置。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

齐护K210系列教程(八)_LCD显示图片

LCD显示图片 文章目录 LCD显示图片1&#xff0c;显示单张图片2&#xff0c;通过按键切换显示SD卡内的图片3&#xff0c;通过传感器切换图片4&#xff0c;画中画显示&#xff0c;并缩放5&#xff0c;课程资源 联系我们 AIstart 显示的图片的默认分辨率为&#xff1a;320*240 &am…

代码随想录算法训练营DAY36|C++贪心算法Part.5|435.无重叠区间、763.划分字母区间、56. 合并区间

文章目录 435.无重叠区间按右边界排序CPP代码 按左边界排序如何判断相邻区间是否重叠如何判断一下一个区间与当前相邻区间是否重叠总结CPP代码 763.划分字母区间思路伪代码实现CPP代码 56. 合并区间思路CPP代码 435.无重叠区间 力扣题目链接 文章链接&#xff1a;435.无重叠区间…

开发简易复用 SDK(项目加分项)

文章目录 开发 SDK新建项目修改pom文件删除启动类创建配置类复制之前的客户端新建spring.factories打包 开发 SDK 为什么要开发SDK。 减少代码的冗余提高代码的复用 如果实际项目中需要使用到该SDK&#xff0c;在pom.xml中注入就可以了。 类似于maven一样&#xff0c;把需要…

索引的最左匹配原则

索引的最左匹配原则 我们先创建一张测试表&#xff0c;表的两个字段用来创建联合索引 CREATE TABLE test(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,col1 INT,col2 INT,col3 INT );CREATE INDEX idx_c1c2 ON test(col1, col2);现在我们就可以分析查询sql脚本了 1.使用联合索…

jasypt组件死锁bug案例分享

事故描述 1、上午9.55发布了一个Apollo动态配置参数&#xff1b; 2、片刻后&#xff0c;服务器接口开始出现大量的超时告警&#xff0c;似乎是某资源被耗尽不足分配&#xff1b; 3、正值业务请求高峰的上午十点&#xff08;平台上午10点会有一些活动会拉一波用户流量&#x…

Redis事务全解析:从MULTI到EXEC的操作指南!

【更多精彩内容,欢迎关注小米的微信公众号“软件求生”】 亲爱的粉丝朋友们,大家好!今天我们要讨论的主题是Redis的事务。Redis作为一款优秀的NoSQL数据库,凭借其高性能和灵活性广受欢迎。事务是Redis的一项关键功能,它为我们提供了一种在数据操作中确保一致性的机制。接…

【目标检测】FPN特征金字塔完整流程详解

学习视频&#xff1a;1.1.2 FPN结构详解 对比 可以看到FPN是自上而下、自下而上并且可以进行多尺度特征融合的的层级结构。 具体结构 1x1 conv: 对通道数进行调整&#xff0c;不同大小的特征图通道数不同&#xff0c;越高层次的特征图通道数越大&#xff0c;论文中使用256个1…

Linux-线程互斥和死锁

目录 一.线程互斥 1.1 进程线程间的互斥相关背景概念 1.2 互斥量mutex 二.互斥量的接口 2.1 初始化互斥量 2.2 销毁互斥量 2.3 互斥量加锁和解锁 2.4 改进后售票代码 三.死锁 3.1.什么是死锁&#xff1f; 3.2.死锁四个必要条件 3.3 避免死锁 一.线程互斥 1.1 进程…

【01-机器学习入门:理解Scikit-learn与Python的关系】

文章目录 前言Python与机器学习Scikit-learn简介Scikit-learn与Python的关系使用Scikit-learn进行机器学习结语前言 在当今的数据科学和人工智能领域,机器学习已经成为了一个不可或缺的组成部分。而对于那些刚刚踏入这一领域的新手来说,理解机器学习的基本概念和找到合适的工…

实施阶段(2024年4月)

【活动二】编程解决问题&#xff0c;二分查找法统计查字典次数。 任务要求&#xff1a;假设字典为1000页&#xff0c;若用二分法来翻到用户输入的具体指定的页数&#xff0c;则需要的最大查找次数为&#xff1f; 设计算法&#xff1a; 取总页码数据中间值&#xff0c;将待查数…

深入理解Linux文件系统和日志分析

目录 一.inode与block 1.inode与block概述 1.1.文件数据包括元信息与实际数据 1.2.文件存储在硬盘上&#xff0c;硬盘最小存储单位是“扇区”&#xff0c;每个扇区存储512字节 1.3.block&#xff08;块&#xff09; 1.4.inode&#xff08;索引节点&#xff09; 2.inode内…

统一SQL 支持Oracle CHAR和VARCHAR2 (size BYTE|CHAR)转换

统一SQL介绍 https://www.light-pg.com/docs/LTSQL/current/index.html 源和目标 源数据库&#xff1a;Oracle 目标数据库&#xff1a;Postgresql&#xff0c;TDSQL-MySQL&#xff0c;达梦8&#xff0c;LightDB-Oracle 操作目标 在Oracle中的CHAR和VARCHAR2数据类型&…

6.2 整合MongoDB

6.2 整合MongoDB 1. MongoDB简介2. MongoDB安装2.1 下载2.2 配置MongoDB2.3 MongoDB的启动和关闭1. 启动MongoDB2. 关闭MogoDB 2.4 安全管理 3. 整合SpringBoot3.1 依赖3.2 MongoTemplate使用3.3 测试1. 新增2. 查询3. 删除 *************************************************…

sudo的设置

sudo指令就是提高你的用户权限&#xff0c;用来完成root可以完成的工作&#xff0c;但是有一个前提&#xff0c;就是被root添加到信任名单中&#xff0c;接下来我们要讲解如何在root中添加用户到信任名单中。 在root中输入指令&#xff1a; 即可到达添加信用列表的位置&#x…

读天才与算法:人脑与AI的数学思维笔记08_生物的创造力

1. 生物的创造力 1.1. 在进化树中是否有其他的物种已经具有与我们人类相当的创造力水平 1.2. 20世纪50年代中期&#xff0c;动物学家德斯蒙德莫里斯&#xff08;Desmond Morris&#xff09;在伦敦动物园做了这样一个试验 1.2.1. 动物学家给…

基于卷积神经网络的垃圾图像分类系统研究与实现

1.摘要 垃圾分类作为资源回收利用的重要环节之一, 可以有效地提高资源回收利用效率, 进一步减轻环境污染带来的危害. 随着现代工业逐步智能化, 传统的图像分类算法已经不能满足垃圾分拣设备的要求. 本文提出一种基于卷积神经网络的垃圾图像分类模型 (Garbage Classification Ne…

RF高频腔设计(7)

3.11 高阶模 之前我们说过&#xff0c;由于束流负载或者其它的原因会在RF高频腔中激发出很多模式&#xff0c;这些模式可能会对束流的稳定性造成不利的影响&#xff0c;尤其是腔的 R / Q ∗ Q L R/Q*Q_L R/Q∗QL​很高时。 为了解决这个问题&#xff0c;需要使用HOM阻尼器来抑…

数字化化转型中,人的重要性仍然不容忽视!

今日&#xff0c;蚓链多个数字化营销项目进行了复盘&#xff0c;最后数据显示&#xff1a;营销数据表现向上且居于高端的企业不仅仅是营销机制设置的科学、贴合市场&#xff0c;数据好的更主要原因还是体现在“人”&#xff01;是团队的构成科学合理&#xff0c;拿到好结果的大…

AWVS的使用

AWVS的使用 1、使用docker拉取AWVS的镜像 docker pull secfa/docker-awvs 2.使用AWVS docker run -it -d -p 13443:3443 --cap-add LINUX_IMMUTABLE secfa/docker-awvs 3.访问 4.输入账号密码 https://hub.docker.com/r/secfa/docker-awvs 找到账号密码 username:adminadmin.…

1W 1.5KVDC 3KVDC 隔离宽范围输入,单、双输出 DC/DC 电源模块——TP2L-1W 系列

TP2L-1W系列是一款高性能、超小型的电源模块&#xff0c;宽范围2&#xff1a;1,4:1输入&#xff0c;输出有稳压和连续短路保护功能&#xff0c;隔离电压为1.5KVDC&#xff0c;3KVDC工作温度范围为–40℃到85℃。特别适合对输出电压的精度有严格要求的地方&#xff0c;外部遥控功…