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包中的内容创建一个新的文件系统再导入为镜像

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

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

相关文章

PostgrerSQL基本使用与数据备份

前言 上篇了解了 PostgrerSQL 数据库的部署PostgreSQL关系型数据库介绍与部署-CSDN博客&#xff0c;本篇将继续就其基本操作、备份与还原内容做相关介绍。 目录 一、数据库的操作 1. 本机登录 2. 开启远程登录 2.1 开放远程端口 2.2 编辑配置文件 2.3 修改配置密码 2.…

前端三剑客 —— JavaScript (第一天)

目录 回顾内容 1.弹性布局 2.网格布局 JavaScript 概述 发展 浏览器 什么是Javascript JavaScript 能干什么 JavaScript需要的环境 JavaScript初体验 基本数据 JS书写方式 行内JS 页面JS 外部JS 1&#xff09;创建外部JS文件 2&#xff09;编写页面 对话框 警…

【踩坑日记】因不同系统换行符不同导致的文本读取结果不同的问题

文章目录 1 问题现象描述2 解决过程&#xff08;点击直接跳到解决方法&#xff09;3 原因解释4 如何避免踩坑4.1 格式转换4.2 格式查看 1 问题现象描述 起因是群友问了这么一个问题 确实很奇怪&#xff0c;按理说第二个printf不会完全不输出&#xff0c;于是想到&#xff0c;…

C++数据结构与算法——回溯算法组合问题

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

SD-WAN如何解决更有性价比地跨境网络问题

云桥通SD-WAN利用智能路由和负载均衡技术&#xff0c;优化数据传输路径&#xff0c;提高网络性能和可靠性。这意味着数据在跨国传输时可以更快到达目的地&#xff0c;减少延迟和丢包率。跨境SD-WAN提高了网络连接速度和质量&#xff0c;使用户能够更快地访问跨国业务所需的资源…

索引的概念

索引的概念    1.索引是一种可选的与表相关的数据库对象&#xff0c;用于提高数据的查询效率。    2.索引是一种有序的数据结构。    3.如果一个表没有创建索引&#xff0c;则对该表进行查询时需要进行全表扫描&#xff1b;如果创建了索引&#xff0c;则在有条件查询时…

应用性能分析工具CPU Profiler

简介 本文档介绍应用性能分析工具CPU Profiler的使用方法&#xff0c;该工具为开发者提供性能采样分析手段&#xff0c;可在不插桩情况下获取调用栈上各层函数的执行时间&#xff0c;并展示在时间轴上。 开发者可通过该工具查看TS/JS代码及NAPI代码执行过程中的时序及耗时情况…

福州装修答疑 | 飘窗能不能砸掉?福州中宅装饰,福州装修

装修中的飘窗是一种常见的装饰元素&#xff0c;它不仅可以增加室内的采光和通风效果&#xff0c;还能为居室增添一份雅致和温馨。然而&#xff0c;很多业主在装修中都会遇到一个共同的问题&#xff1a;装修中的飘窗到底能不能砸&#xff1f;什么情况下可以砸&#xff1f;什么情…

IO流【带有缓冲区的字节输入、输出流;字符输入、输出流 转换流】

day35 学习注意事项 按照流的发展历史去学习注意流与流之间的继承关系举一反三 IO流 继day36 字节流继承图 字节流 应用场景&#xff1a;操作二进制数据&#xff08;音频、视频、图片&#xff09; abstract class InputStream – 字节输入流的基类&#xff08;抽象类&#xff0…

基于R、Python的Copula变量相关性分析及AI大模型应用

在工程、水文和金融等各学科的研究中&#xff0c;总是会遇到很多变量&#xff0c;研究这些相互纠缠的变量间的相关关系是各学科的研究的重点。虽然皮尔逊相关、秩相关等相关系数提供了变量间相关关系的粗略结果&#xff0c;但这些系数都存在着无法克服的困难。例如&#xff0c;…

Anaconda环境命令样例

启动命令行Anaconda Powershell Prompt 查看环境列表 (base) PS C:\Users\Administrator> conda env list # conda environments: # base * G:\ProgramData\anaconda3 MoneyprinterTurbo G:\ProgramData\anaconda3\envs\MoneyprinterTurbo pytorc…

C++ 标准库类型stackqueue

C/C总述&#xff1a;Study C/C-CSDN博客 栈与队列详解&#xff08;数据结构&#xff09;&#xff1a;栈与队列_禊月初三-CSDN博客 stack&#xff08;栈&#xff09; stack的常用函数 函数说明功能说明stack()构造空栈push(T& val)将元素val压入栈中size()返回栈中元素个…

数据结构之二叉树由浅入深最终章!

题外话 我说清明节想放松一下没更新大家信吗? 博客毕竟是文字不是视频,大家如果有不明白的地方,可以使用数形结合的方式,画图一边通过图片,一边通过对照代码进行推导一下,有什么问题都可以私信我或者写在评论区 正题 第一题 寻找二叉树中p,q最近公共祖先 第一题思路 先…

【C++】红黑树讲解及实现

前言&#xff1a; AVL树与红黑树相似&#xff0c;都是一种平衡二叉搜索树&#xff0c;但是AVL树的平衡要求太严格&#xff0c;如果要对AVL树做一些结构修改的操作性能会非常低下&#xff0c;比如&#xff1a;插入时要维护其绝对平衡&#xff0c;旋转的次数比较多&#xff0c;更…

【Claude 3】This organization has been disabled.此组织已被禁用。(Claude无法对话的原因和解决办法)

Claude对话提示 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 This organization has been disabled.此组织已被禁用。 问题截图 问题原因 出现该页面&#xff0c;表示您的账户已经无法使用&#xff0c;可能…

顺序表相关习题

&#x1f308; 个人主页&#xff1a;白子寰 &#x1f525; 分类专栏&#xff1a;python从入门到精通&#xff0c;魔法指针&#xff0c;进阶C&#xff0c;C语言&#xff0c;C语言题集&#xff0c;C语言实现游戏&#x1f448; 希望得到您的订阅和支持~ &#x1f4a1; 坚持创作博文…

Jenkins (三) - 拉取编译

Jenkins (三) - 拉取编译 通过Jenkins平台 git 拉取github上项目&#xff0c;通过maven编译并打包。 Jenkins 安装 git 插件 Manager Jenkins -> Plugins -> Available plugins -> Git 打包编译检验 FressStyle 风格编译 New Item输入 item name Spring-Cloud-1…

回溯法(一)——全排列 全组合 子集问题

全排列问题 数字序列 [ l , r ] [l,r] [l,r]​区间内元素的全排列问题 extern int ans[],l,r,num;//num&#xff1a;方案数 extern bool flag[]; void dfs(int cl){//cl:current left&#xff0c;即为当前递归轮的首元素if(cl r 1){//数组已越界&#xff0c;本轮递归结束for…

IDEA2023创建SpringMVC项目

✅作者简介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;热爱Java后端开发者&#xff0c;一个想要与大家共同进步的男人&#x1f609;&#x1f609; &#x1f34e;个人主页&#xff1a;Leo的博客 &#x1f49e;当前专栏&#xff1a; 开发环境篇 ✨特色专栏&#xff1a; M…

SpringBoot整合Spring Data JPA

✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉🍎个人主页:Leo的博客💞当前专栏: 循序渐进学SpringBoot ✨特色专栏: MySQL学习 🥭本文内容: SpringBoot整合Spring Data JPA 📚个人知识库: Leo知识库,欢迎大家访问 1.…