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 中的语法和指令顺序。
      • 确保基础镜像、依赖包名称和版本正确无误。
      • 如果是从网络下载依赖,检查网络连接和代理设置。

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

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

相关文章

C语言单向链表的经典算法

1.分割链表 2.移除链表元素 3.反转链表 4.合并两个有序链表 5.链表的中间结点 6.环形链表的约瑟夫问题 1.分割链表: 1.思路&#xff1a;创建新链表&#xff0c;小链表和大链表。如图 代码如下 /*** Definition for singly-linked list.* struct ListNode {* int val…

【读论文】【泛读】三篇生成式自动驾驶场景生成: Bevstreet, DisCoScene, BerfScene

文章目录 1. Street-View Image Generation from a Bird’s-Eye View Layout1.1 Problem introduction1.2 Why1.3 How1.4 My takeaway 2. DisCoScene: Spatially Disentangled Generative Radiance Fields for Controllable 3D-aware Scene Synthesis2.1 What2.2 Why2.3 How2.4…

如何在PPT中获得网页般的互动效果

如何在PPT中获得网页般的互动效果 效果可以看视频 PPT中插入网页有互动效果 当然了&#xff0c;获得网页般的互动效果&#xff0c;最简单的方法就是在 PPT 中插入网页呀。 那么如何插入呢&#xff1f; 接下来为你讲解如何获得&#xff08;此方法在 PowerPoint中行得通&#…

Unity 点击次数统计功能

介绍 &#x1f4a1;.调用方便&#xff0c;发生点击事件后直接通过"xxx".CacheClick缓存 &#x1f4a1;. 在允许的时间间隔内再次点击会累计点击次数&#xff0c;直到超出后触发事件 传送门&#x1f448;

记录一下hive跑spark的insert,update语句报类找不到的问题

我hive能正常启动&#xff0c;建表没问题&#xff0c;我建了一个student表&#xff0c;没问题&#xff0c;但执行了下面一条insert语句后报如下错误&#xff1a; hive (default)> insert into table student values(1,abc); Query ID atguigu_20240417184003_f9d459d7-199…

【GD32】_时钟架构及系统时钟频率配置

文章目录 一、有关时钟源二、系统时钟架构三、时钟树分析四、修改参数步骤1、设置外部晶振2、选择外部时钟源。3、 设置系统主频率大小4、修改PLL分频倍频系数 学习系统时钟架构和时钟树&#xff0c;验证及学习笔记如下&#xff0c;如有错误&#xff0c;欢迎指正。主要记录了总…

基于springboot的扶贫助农系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

用海外云手机高效率运营TikTok!

很多做国外社媒运营的公司&#xff0c;想要快速引流&#xff0c;往往一个账号是不够的&#xff0c;多数都是矩阵养号的方式&#xff0c;运营多个TikToK、Facebook、Instagram等账号&#xff0c;慢慢沉淀流量变现&#xff0c;而他们都在用海外云手机这款工具&#xff01; 海外云…

二级综合医院云HIS系统源码,B/S架构,采用JAVA编程,集成相关医保接口

二级医院云HIS系统源码 云HIS系统是一款满足基层医院各类业务需要的健康云产品。该产品能帮助基层医院完成日常各类业务&#xff0c;提供病患预约挂号支持、病患问诊、电子病历、开药发药、会员管理、统计查询、医生工作站和护士工作站等一系列常规功能&#xff0c;还能与公卫…

【muzzik 分享】关于 MKFramework 的设计想法

MKFramework是我个人维护持续了几年的项目&#xff08;虽然公开只有一年左右&#xff09;&#xff0c;最开始由于自己从事QP类游戏开发&#xff0c;我很喜欢MVVM&#xff0c;于是想把他做成 MVVM 框架&#xff0c;在论坛第一个 MVVM 框架出来的时候&#xff0c;我的框架已经快完…

PySpark预计算ClickHouse Bitmap实践

1. 背景 ClickHouse全称是Click Stream&#xff0c;Data WareHouse&#xff0c;是一款高性能的OLAP数据库&#xff0c;既使用了ROLAP模型&#xff0c;又拥有着比肩MOLAP的性能。我们可以用ClickHouse用来做分析平台快速出数。其中的bitmap结构方便我们对人群进行交并。Bitmap位…

KDD 2023 | 时空数据(Spatial-Temporal)论文总结

2023 KDD论文接收情况&#xff1a;Research track&#xff08;研究赛道&#xff09;接收率&#xff1a;22.1%&#xff08;313/1416&#xff09;&#xff0c;ADS Track&#xff08;应用数据科学赛道&#xff09;接收率&#xff1a;25.4%&#xff08;184/725&#xff09; &#…