docker笔记(一):安装、常用命令

一、docker概述

1.1docker为什么会出现

各种环境配置十分繁琐,每一个机器都需要配置环境,难免出现各种问题。

发布一个项目jar需要配置(MySQL、redis、jdk、…),项目不能都带上环境安装打包:

传统:开发jar,运维来做 现在:开发打包部署上线,一套流程做完

Docker针对以上问题,提出了解决方案

1.2docker可以做什么?

虚拟机技术:(通过 软件 模拟的具有完整 硬件 系统功能的、运行在一个完全 隔离 环境中的完整 计算机系统)

缺点:资源占用多、冗余步骤多、启动慢

容器化技术:(容器化技术不是模拟的一个完整的操作系统)

Docker和虚拟机技术的区别:

  • 传统的虚拟机,可以虚拟出一条硬件,运行一个完整的操作系统,在这个操作系统上安装和运行所需的软件

  • 容器内的应用可以直接运行在宿主 主机的内核中,容器没有自己的内核,也不用虚拟硬件 (轻便)

  • 每个容器是相互隔离的,每个容器内都有属于自己的文件系统,之间互不影响。

1.3docker的优点

  1. 应用于更快速的交付和部署

    • 传统:通过大量的帮助文档,安装程序

    • Docker:打包镜像发布测试,一键运行

  2. 更便捷的升级和扩缩容

    • 通过使用Docker,部署应用 如同搭积木一样!

  3. 更简单的系统运维

    • 使用容器化之后,开发和测试环境是高度一致的

  4. 更高效的计算资源利用

    • Docker是内核级别的虚拟化,可以在一个物理机上运行很多的容器,让服务器的性能可以压榨到极致

1.4docker官网

  • 官网:Docker官网 http://www.docker.com

  • 仓库:

    • DockerHub官网 http://hub.docker.com

1.5docker三要素

镜像(image):模板(类),通过一个镜像可以创建多个容器(对象) 容器(container):独立运行一个或一组应用,通过镜像创建 仓库(repository):存放镜像的地方,分为公有仓库和私有仓库

1.6docker架构图

1.6.1 基本工作流程图

image.png

1.6.2 架构

Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。运行的基本流程为:

  1. 用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

  2. Docker Daemon作为 Docker架构中的主体部分,首先提供 Docker Server的功能使其可以接受 Docker Client 的请求。

  3. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。

  4. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry中下载镜像,并通过镜像管理驱动 Graph driver将下载镜像以Graph的形式存储

  5. 当需要为 Docker创建网络环境时,通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境。

  6. 当需要限制 Docker容器运行资源或执行用户指令等操作时,则通过 Exec driver 来完成。

  7. Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

img

二、 docker安装

  1. 查看环境,是否centos7及以上

  2. 卸载旧版本

    • yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine

  3. 安装所需的软件包:yum install -y yum-utils

  4. 设置镜像仓库(阿里云)

    yum-config-manager \--add-repo \https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

  5. 安装docker相关的内容

    # 更新yum软件包索引
    yum makecache fast
    ​
    # 安装docker docker-ce 社区
    yum install docker-ce docker-ce-cli containerd.io
  6. 启动docker:systemctl start docker

  7. 使用docker version查看是否安装成功

  8. 启动hello-world镜像:docker run hello-world

  9. 卸载docker

    # 卸载依赖
    yum remove docker-ce docker-ce-cli containerd.io
    ​
    # 删除资源
    rm -rf /var/lib/docker
    ​
    # /var/lib/docker docker的默认工作路径
  10. 设置docker镜像加速器:参考

三、 docker常用命令

3.1 帮助命令

  • 启动docker:systemctl start docker

  • 停止docker:systemctl stop docker

  • 重启docker:systemctl restart docker

  • 查看docker状态:systemctl status docker

  • 开机启动:systemctl enable docker

  • 查看docker概要信息:docker info

  • 查看docker总体帮助文档:docker --help

  • 查看docker命令帮助文档:docker 具体命令 --help

3.2 镜像命令

  • docker images #查看所有本地的主机上的镜像

  • docker search xxx #搜索镜像

  • docker pull xxx #下载镜像

  • docker rmi xxx #删除镜像

    • 组合使用 ,删除全部:docker rmi -f $(docker images -qa)

  • docker system df #查看镜像、容器、数据卷所占用的空间

  • QA:

    • docker虚悬镜像是什么?

      • repository、tag都是<none>的镜像

3.3 容器命令

说明:有了镜像才可以创建容器,Linux,下载一个centos/ubuntu镜像进行测试

docker pull centos/ubuntu
  • 新建容器并启动

    docker run [可选参数] image
    #参数说明
    --name="Name" 容器名字,用来区分容器
    -d  后台方式运行
    -i  使用交互方式运行,通常与-t同时使用
    -t  为容器重新分配一个伪输入终端,通常与-i同时使用
    -p   指定容器的端口 -p 8080:8080-p 主机端口:容器端口
    ​
    -P  随机指定端口
    ​
    #测试,启动并进入容器
    [root@iZ8vbisqeqec8qgypcxvyqZ /]# docker run -it centos /bin/bash
    [root@dbb48fe6c0c6 /]# ls
    bin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
  • 查询所有的运行的容器

    docker ps 命令 #列出当前正在运行的容器
    -a # 列出当前正在运行的容器+历史运行过的容器
    -l #显示最近创建的容器
    -n 2 #显示最近创建的2个容器
    -q #静默模式,只显示容器的编号

  • 退出容器

    exit #直接容器停止并退出
    Ctrl+P+Q #容器不停止退出

  • 启动和停止容器

    docker start 容器id/name  #启动容器
    docker restart 容器id/name    #重启容器
    docker stop 容器id/name   #停止当前正在运行的容器
    docker kill 容器id/name   #强制停止当前容器

  • 删除容器

    docker rm 容器id/name #删除指定的容器,不能删除正在运行的容器;-f选项强制删除
    docker rm -f $(docker ps -aq)   #删除所有的容器

  • 查看日志

    docker logs -f -t --tail 容器id

  • 查看容器中的进程信息

    #使用top命令
    docker top 容器id

  • 查看镜像元数据

    docker inspect 容器id

  • 进入当前正在运行的容器

    #方式一  是在容器中打开新的终端,并且可以启动新的进程,用exit退出不会导致容器的停止
    docker exec -it 容器id  /bin/bash
    ​
    #方式二  重新进入容器启动命令的终端,不会启动新的进程,用exit退出,会导致容器停止
    docker attach 容器id 
    ​

  • 从容器内拷贝文件到主机上

    docker cp 容器id:容器内文件路径 容器外文件路径

  • 导出容器

  • docker export 容器id > 文件名.tar #导出容器的内容为tar包
    cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号 #从tar包中的内容创建一个新的文件系统再导入为镜像

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

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

相关文章

第十四届蓝桥杯物联网试题(省赛)

这个题还是有点难度的&#xff0c;刚好能做完&#xff0c;还遇到一个意料之外的BUG,这次算是失败了&#xff0c;因为那个BUG让我以为是板子坏了其实是我LORA没初始化 储存信息用结构体存储 第一次写结构体能一次实验成功也挺开心的 值得赞扬的是我这样排版的好处是所有变量都在…

Godot 4 教程《勇者传说》依赖注入 学习笔记(1):相机使用

文章目录 相关地址扩大场景添加相机相机拖动相机平滑相机限制不进行限制进行限制左边轴移动&#xff0c;得到坐标填入坐标限制平滑 相关地址 十分钟制作横版动作游戏&#xff5c;Godot 4 教程《勇者传说》#0 人物素材 环境素材 Gclove2000/GodotNet_LegendOfPaladin 扩大场景 …

【JAVASE】带你了解面向对象三大特性之一(继承)

✅作者简介&#xff1a;大家好&#xff0c;我是橘橙黄又青&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G-CSDN博客 1.继承 1.1 为什么需要继承 Java 中使用类对现实世界中实体来…

【Unity每日一记】如何让Sprite精灵图集的背景图层变成透明,方便切割

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

Web CSS笔记3

一、边框弧度 使用它你就可以制作盒子边框圆角 border-radius&#xff1a;1个值四个圆角值相同2个值 第一个值为左上角与右下角&#xff0c;第二个值为右上角与左下角3个值第一个值为左上角, 第二个值为右上角和左下角&#xff0c;第三个值为右下角4个值 左上角&#xff0c;右…

2023年度总结:允许迷茫,破除迷茫;专注自身,把握当下

0、前言 &#x1f4dc;为什么24年已经过了几个月&#xff0c;才提笔写这年度总结呢&#xff1f;毫不羞愧直问我的内心&#xff0c;其实就是懒罢了。直到前几天朋友看到了我去年写的总结&#xff0c;我自己点进那篇总结&#xff0c;完完整整的看了一遍&#xff0c;又翻看我23年…

嵌入式学习48-单片机1

51单片机—————8位单片机 裸机驱动 无系统 linux驱动 有系统 驱动-----反映硬件变化 MCU 微控器 MPU CPU GPU 图像处理 IDE 集成开发环境 peripheral 外设 SOC&#xff1a; system on chip P0&#xff1a;8bit——8个引脚 位运算 & …

Halcon的HWindowControl控件在C#WinForm中的使用介绍(包括绘制ROI)

Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍&#xff08;包括绘制ROI&#xff09; 文章目录 Halcon的HSmartWindowControl控件在C#WinForm中的使用介绍&#xff08;包括绘制ROI&#xff09;一、 引入hSmartWindowControl控件二、 编写打开图像功能三、 编写绘制RO…

民治街道关工委举办清明祭先烈活动

2024年清明节来临之际&#xff0c;春光明媚&#xff0c;微风轻拂。在这样一个充满生机与希望的季节里&#xff0c;一场庄严肃穆的清明祭先烈活动在中国文化名人大营救纪念馆隆重举行。此次活动由深圳市龙华区民治街道关工委主办&#xff0c;民乐社区关工委与丹堤实验学校共同承…

LangChain入门:11.Pydantic(JSON)解析器实战

摘要 在数字化营销的浪潮中&#xff0c;自动化内容生成成为了提升效率和用户参与度的利器。本文将详细介绍如何利用LangChain的自然语言处理能力和Pydantic的数据验证特性&#xff0c;构建一个自动化的花店文案生成器。通过这个工具&#xff0c;您可以快速为各种花卉生成吸引人…

【加密周报】比特币“强烈看涨”信号来了!巨鲸们正疯狂囤积稳定币!SEC呼吁公众对以太币ETF提供意见!

在过去一周里&#xff0c;比特币价格经历了一段下跌&#xff0c;并在随后出现了一些反弹迹象。与此同时&#xff0c;链上数据显示&#xff0c;巨鲸们在囤积稳定币&#xff0c;预示着“强烈的看涨情绪”。以太坊方面&#xff0c;美国证券交易委员会&#xff08;SEC&#xff09;已…

数据如何才能供得出、流得动、用得好、还安全

众所周知&#xff0c;数据要素已经列入基本生产要素&#xff0c;同时成立国家数据局进行工作统筹。目前数据要素如何发挥其价值&#xff0c;全国掀起了一浪一浪的热潮。 随着国外大语言模型的袭来&#xff0c;国内在大语言模型领域的应用也大放异彩&#xff0c;与此同时&#x…