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

news2024/11/20 0:39:16

一、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.coloradmin.cn/o/1572953.html

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

相关文章

Redis实战篇-集群环境下的并发问题

实战篇Redis 3.7 集群环境下的并发问题 通过加锁可以解决在单机情况下的一人一单安全问题&#xff0c;但是在集群模式下就不行了。 1、我们将服务启动两份&#xff0c;端口分别为8081和8082&#xff1a; 2、然后修改nginx的conf目录下的nginx.conf文件&#xff0c;配置反向代…

前端:注册页面(后端php实现)

效果 代码 Regist.php <!-- 内部员工注册 --> <?php require_once get_db_conn.php; $conn db_connect();?> <?php //设置变量的默认值 if (!isset($_POST[UserID])) {$_POST[UserID] ; } if (!isset($_POST[Password])) {$_POST[Password] ; } if (!i…

数据字典

文章目录 一、需求分析二、表设计&#xff08;两张表&#xff09;三、功能实现3.1 数据字典功能3.1.1 列表功能3.1.2 新增数据字典3.1.3 编辑数据字典 3.2 数据字典明细3.2.1 列表功能3.2.2 新增字典明细3.2.3 编辑字典明细 3.3 客户管理功能3.3.1 列表功能3.3.2 新增用户3.3.3…

【最新可用】Claude国内镜像,可上传图片,可用Claude3全系模型(包括Pro版本的Opus)!亲测比GPT好用!

亲测可用&#xff0c;镜像地址&#xff1a;Claude 3 镜像 使用方法 访问镜像&#xff1a;Claude 3 镜像 2. 点击设置&#xff0c;配置授权码&#xff0c;关闭设置。这里免费赠送一个体验版的授权码 sk-SZcJyvx3RXRID624E2D3795578Df44C7Af03F2909a8f5eA0 即可发起对话啦&…

总包不足80w的高龄Android程序员,被面试官diss混得太差,网友狂吐槽……

有网友直言&#xff1a;90%的人一辈子一年也拿不到80万 有网友分析到&#xff1a;看面试情况&#xff0c;没什么希望就直接其实我觉得30岁年薪低于1000万的都是loser&#xff0c;你我都是 有网友说&#xff1a;这几年互联网行业极大发展&#xff0c;让互联网行业成为了明星行…

Python-VBA编程500例-033(入门级)

角色定位(Role Positioning)在编程中的实际应用场景主要体现在以下几个方面&#xff1a; 1、权限管理&#xff1a;在开发企业级应用或复杂的系统时&#xff0c;角色定位用于定义和管理用户的权限。例如&#xff0c;一个系统可能有管理员、普通用户、访客等不同角色&#xff0c…

CSS设置字体样式

目录 前言&#xff1a; 1.font-family&#xff1a; 2.font-style&#xff1a; 3.font-weight&#xff1a; 4.font-size&#xff1a; 5.font-variant&#xff1a; 6.font&#xff1a; 前言&#xff1a; 在网页中字体是重要的组成部分&#xff0c;使用好字体可以让网页更…

手动实现Tomcat底层机制+自己设计Servlet

文章目录 1.Tomcat整体架构分析自己理解 2.第一阶段1.实现功能2.代码1.TomcatV1.java 3.调试阶段1.阻塞在readLine导致无法返回结果 4.结果演示 3.第二阶段1.实现功能2.代码1.RequestHander.java2.TomcatV2.java 3.调试阶段1.发现每次按回车会接受到两次请求 4.结果演示 4.第三…

基于Spring Boot的简历系统设计与开发

基于Spring Boot的简历系统设计与开发 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 部分系统展示 前台首页界面 简历模板管理界面 用户管理界面 管理员登录界…

C++设计模式:策略模式(二)

1、定义与动机 定义一系列算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可互相替换&#xff08;变化&#xff09;&#xff0c;该模式使得算法可独立于使用它的客户程序&#xff08;稳定&#xff09;而变化&#xff08;扩展&#xff0c;子类化&#xff09; 在软…

pinia 的介绍和使用

pinia是vue2,vue2 尤其是vue3官方推荐的状态管理器&#xff0c;和vuex类似&#xff0c;但使用起来更为简单&#xff0c; 概念&#xff1a; state:定义响应式共享变量 getter&#xff1a;相当于计算属性 actions&#xff1a;相当于方法 npm安装 npm install pinia创建pinia ,注…

【Python】常见容器

Python容器 列表元组字符串集合字典 列表 定义方法&#xff1a;[元素1, 元素2, …] 列表一次可以存储多个不同数据类型的数据&#xff0c;支持嵌套。 例如&#xff1a; list1 ["张三", 33, True] print(list1) print(type(list1))list2 [list, "李四", …

企业数据资产评估的财报显性化及数据资产入表的主要应用场景

一、背景 近年来&#xff0c;企业“数据资产”的概念不断受政府/企业重视和建设.根据《数据资产评估指导意见》规定&#xff0c;数据资产评估是指资产评估机构及其资产评估专业人员遵守法律、行政法规和资产评估准则&#xff0c;根据委托对评估基准日特定目的下的数据资产价值…

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

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

【热门话题】Stable Diffusion:本地部署教程

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 Stable Diffusion&#xff1a;本地部署教程一、引言二、环境准备1. 硬件配置2. …

Java多态练习2

设计金融产品类Financial&#xff0c;属性包括产品名称、产品介绍、起投金额、产品期限&#xff08;int&#xff09;、年化收益&#xff08;百分数&#xff09;&#xff1b;方法包括发布、截止、投资。 设计金融产品类子类&#xff1a; 基金产品Fund&#xff0c;继承金融产品类…

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

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

牛客网BC-125 序列中整数去重复(难题讲解)

题目如下 --------------------------------------------------------------------------------------------------------------------------------- 题目讲解&#xff08;思路&#xff09; -------------------------------------------------------------------------------…

爱上数据结构:二叉树的基本概念

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;数据结构 ​ 一、树的基本概念 1.概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因 为它看起…

机器学习 - multi-class 数据集训练 (含代码)

直接上代码 # Multi-class datasetimport numpy as np RANDOM_SEED 42 np.random.seed(RANDOM_SEED) N 100 # number of points per class D 2 # dimensionality K 3 # number of classes X np.zeros((N*K, D)) y np.zeros(N*K, dtypeuint8) for j in range(K):ix rang…