Docker 入门介绍及简单使用

news2024/11/27 6:12:52

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.coloradmin.cn/o/1599742.html

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

相关文章

【Java开发指南 | 第八篇】Java变量、构造方法、创建对象

读者可订阅专栏&#xff1a;Java开发指南 |【CSDN秋说】 文章目录 Java变量构造方法创建对象 Java变量 在Java中&#xff0c;变量用于存储数据值。它们是程序中用于保存信息的一种基本方式。变量在程序执行过程中可以被赋予不同的值&#xff0c;并且这些值可以在程序的不同部分…

使用Python模仿文件行为

在Python中&#xff0c;你可以通过文件操作函数&#xff08;如open()函数&#xff09;以及模拟输入输出流的库&#xff08;如io模块&#xff09;来模拟文件行为。下面是一些示例&#xff0c;展示了如何使用这些工具在Python中模拟文件行为。 1、问题背景 在编写一个脚本时&…

轮胎行业EDI:Tigar 轮胎EDI项目案例

Tigar 轮胎是一家塞尔维亚轮胎制造公司&#xff0c;自2007年开始&#xff0c;被轮胎制造商米其林持有。 Tigar通过EDI来传输与供应商之间的业务单据&#xff0c;优化业务流程。本文将从EDI需求概览、如何基于知行之桥EDI系统实现与Tigar的EDI对接以及项目回顾这三个部分为大家展…

Docker部署MongoDB数据库

文章目录 官网地址docker 网络部署 MongoDB部署 mongo-expressdocker-compose.ymlMongoDB shell 官网地址 https://www.mongodb.com/zh-cn docker 网络 # 创建 mongo_network 网络 docker network create mongo_network # 查看网络 docker network list # 容器连接到 mongo_…

AI智能分析网关V4平台告警数据清理方法:自动清理与手动清理

TSINGSEE青犀智能分析网关V4属于高性能、低功耗的软硬一体AI边缘计算硬件设备&#xff0c;目前拥有3种型号&#xff08;8路/16路/32路&#xff09;&#xff0c;支持Caffe/DarkNet/TensorFlow/PyTorch/MXNet/ONNX/PaddlePaddle等主流深度学习框架。硬件内部署了近40种AI算法模型…

C语言中的结构体:从定义到传递

前言 结构体是C语言中一种重要的数据类型&#xff0c;它允许我们将不同类型的数据组合成一个整体&#xff0c;并以自定义的方式进行操作。通过结构体&#xff0c;我们可以更加灵活地管理和处理复杂的数据结构&#xff0c;从而提高程序的可读性和可维护性。本篇博客将从结构体的…

allure2教程-1-环境搭建

领取资料&#xff0c;咨询答疑&#xff0c;请➕wei: June__Go 自动化测试执行完成后我们需要展示给其他人看&#xff0c;这就要有自动化测试报告了。复杂的测试报告当然可以自己代码实现&#xff0c;但用pytest-html或allure基本也能满足我们生成测试报告的要求了。本小节介绍…

Rustdesk如何编译代码实现安装后,不会在右下角出现托盘图标

环境&#xff1a; Rustdesk1.1.9 问题描述&#xff1a; Rustdesk如何编译代码实现安装后&#xff0c;不会在右下角出现托盘图标 解决方案&#xff1a; 安装后只有自定义进程图标 详细方案&#xff0c;有需要私聊

Python及软件测试方面的总结的技巧

目录 一.Python &#xff08;一&#xff09;输入pip安装包时出现Fatal error in launcher错误 &#xff08;二&#xff09;如何使用清华镜像安装库 二.软件测试 一.Python &#xff08;一&#xff09;输入pip安装包时出现Fatal error in launcher错误 解决方法&#xff1a…

Linux之bpfjit(2)使用分析和mini-tcpdump实现

Linux之bpfjit(2)使用分析和mini-tcpdump实现 Author: Once Day Date: 2024年4月13日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章可以参考专栏&#xff1a;…

简约风好看的个人主页源码

效果图 PC端 移动端 源代码 index.html &#xfeff;<html lang"en"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…

全网短剧搜索源码+短剧API接口 短剧下载 热门短剧 全开源可二开

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 pc端h5手机端全网短剧搜索前端源码分享 内含7000短剧资源(不支持在线播放&#xff09; 搜索API接口&#xff1a;文件内查看 全部短剧API接口&#xff1a;文件内查看 每日更新API接…

48.HarmonyOS鸿蒙系统 App(ArkUI)常用组件的使用

48.HarmonyOS鸿蒙系统 App(ArkUI)常用组件的使用 按钮触发事件 toast信息提示 单选按钮 复选框 切换按钮&#xff0c;开关按钮 进度条 textbox,textinput,TextArea文本输入框 气泡提示 import prompt from ohos.prompt; import promptAction from ohos.promptAction; …

DC-7渗透测试复现

DC-7渗透测试复现 目的&#xff1a; 获取最高权限以及flag 过程&#xff1a; 信息打点--SSH- 命令执行反弹shell-计时任务提权 环境&#xff1a; 攻击机&#xff1a;kali(192.168.85.137) 靶机&#xff1a;DC_3(192.168.85.139) 复现&#xff1a; 一.信息收集 nmap -s…

阿里云安全证书到期了,有证书的情况下如何重新续期

文章目录 前言零、阿里云使用证书说明一、如何看安全证书是否到期&#xff08;以百度为例&#xff09;1.点击链接旁边的按钮2.点击【连接是安全的】3.点击【证书有效】 4. 查看证书二、更换操作1.Digicert 和Digicert pro的区别2.在你购买证书后创建证书3. 填下面的域名 4. 验证…

李沐-动手学深度学习-Pytorch神经网络基础总结

注&#xff1a;1. 沐神对应章节视频出处 2.代码使用Jupyter Notebook运行更方便 3.文章笔记出处 一、层和块 层&#xff1a;层&#xff08;1&#xff09;接受一组输入&#xff0c; &#xff08;2&#xff09;生成相应的输出&#xff0c; &#xff08;3&#xff09;由一组可调整…

js+网络摄像头实现人体肢体关键点动作捕获

最近有一个项目&#xff0c;客户需要用户人体姿势识别&#xff0c;进行表演考核用途&#xff0c;或者康复中心用户恢复护理考核&#xff0c;需要用摄像头进行人体四肢进行肢体关键点对比考核&#xff0c;资料还是太少了。只有个别大佬发了部分技术指导。感觉写的不错。 阿里云…

WPF中DataGrid主从数据(父子数据)展示

在wpf中可以使用DataGrid控件,进行主从数据展示,也称父子数据展示。下面展示纯原生控件编码实现功能(样式自己可以根据需求进行修改)。 效果如下: 点击图标,展开和收缩可以自由的切换,也可以自己重新写一个样式,比如+,-或者类似图标的样式,都是可以的。 1.首先创建一…

C# 两种方法截取活动窗口屏幕,实现窗体截图

方法1&#xff0c;截屏内容仅包括活动窗口界面&#xff0c;而方法2是从屏幕范围取图&#xff0c;截屏内容会包括屏幕上所有内容。例如有一些程序在桌面顶层显示半透明的悬浮窗&#xff0c;用方法2截屏就会包括这些内容&#xff0c;并不是单纯的活动窗口内容。 方法1&#xff0c…

【数据结构与算法】:10道链表经典OJ

目录 1. 移除链表元素2. 反转链表2.1反转指针法2.2 头插法 3. 合并两个有序链表4. 分隔链表5. 环形链表6. 链表的中间节点7. 链表中倒数第K个节点8. 相交链表9. 环形链表的约瑟夫问题10. 链表的回文结构 1. 移除链表元素 思路1&#xff1a;遍历原链表&#xff0c;将 val 所在的…