Linux安装Docker与基本指令

news2024/9/27 12:16:15

1、什么是Docker

        Dokcer是一种开源平台,主要用于创建、部署和管理容器化应用程序,它通过将应用程序以及所有的依赖打包到一个轻量级的可移植的容器中,使得应用可以在任何环境中一致的运行!

 1.1、Docker的优点

  • 一致性和可移植性
  1. 跨环境一致性:Docker 容器在开发、测试和生产环境中运行时保持一致性,避免了“在我机器上可以运行”的问题。
  2. 可移植性:容器可以在不同的操作系统和硬件上运行,只要支持 Docker 的环境就能运行容器。
  • 轻量级和高效
  1. 快速启动:容器启动速度通常比虚拟机快,因为容器共享宿主机的操作系统内核,不需要额外的操作系统开销。
  2. 资源利用率:容器消耗的资源比虚拟机少,因为它们不需要完整的操作系统。
  • 易于版本控制和管理
  1. 镜像版本控制:Docker 镜像可以标记和版本控制,方便管理和回滚到之前的版本。
  2. 镜像仓库:可以通过 Docker Hub 或私有仓库存储和共享镜像,便于团队合作和分发。
  • 简单化部署和拓展
  1. 一致的部署:容器化应用程序可以在不同环境中以相同的方式进行部署,简化了部署过程。
  2. 快速扩展:容器可以快速启动和停止,便于动态调整应用的规模,以适应不同的负载需求。
  • 提高开发效率
  1. 开发环境一致性:开发者可以在本地使用 Docker 容器创建与生产环境一致的开发环境,减少环境差异导致的问题。
  2. 简化依赖管理:应用及其所有依赖项都被封装在容器中,减少了环境配置和依赖冲突的问题。

1.2、Docker的用途

  • 提供一次性的环境。比如,本地测试他人的软件、持续集成的时候提供单元测试和构建的环境
  • 提供弹性的云服务。因为 Docker 容器可以随开随关,很适合动态扩容和缩容
  • 组建微服务架构。通过多个容器,一台机器可以跑多个服务,因此在本机就可以模拟出微服务架构

1.3、Docker与虚拟机的区别

  • VM(VMware)在宿主机器、宿主机器操作系统的基础上创建虚拟层、虚拟化的操作系统、虚拟化的仓库,然后再安装应用

  • Docker在宿主机的操作系统上创建Docker引擎,直接通过宿主机的操作系统调用硬件资源,而不是虚拟化操作系统和硬件资源,所以占用资源更少,性能更高。

  • 对比图

特性 DockerVM
启动速度秒级分钟级
硬盘使用MBGB
性能接近原生弱于原生
系统支持单机可支持数百甚至数千几十个

2、Docker的核心组件

  1. 镜像(Image)
  2. 容器(Container)
  3. 仓库(Repository)
  4. Docker客户端(Docker Client)
  5. Docker守护进程(Docker daemon)

  1. 镜像(Image)

    • 定义:镜像是一个包含应用程序及其所有依赖项的只读模板。它是创建 Docker 容器的基础。
    • 作用:镜像用于打包和分发应用程序,使其可以在任何支持 Docker 的环境中一致地运行。镜像通常由 Dockerfile 构建,Dockerfile 描述了创建镜像所需的所有步骤和依赖项。
  2. 容器(Container)

    • 定义:容器是镜像的一个运行实例。它是一个轻量级、独立的可执行软件包,包含了应用程序及其所有必要的环境配置。
    • 作用:容器提供了一个隔离的环境,确保应用程序在不同环境中可以一致地运行。容器具有自己的文件系统、网络配置和进程空间,可以在多个容器之间共享宿主机的内核。
  3. 仓库(Repository)

    • 定义:仓库是存储和分发 Docker 镜像的地方。仓库可以是公共的(如 Docker Hub)或私有的。
    • 作用:仓库允许用户上传、存储和共享镜像。镜像仓库可以用来集中管理镜像版本,方便团队成员之间共享镜像,或用于生产环境的镜像管理。
  4. Docker 客户端(Docker Client)

    • 定义:Docker 客户端是用户与 Docker 进行交互的命令行界面(CLI)。它发送用户命令给 Docker 守护进程,并显示结果。
    • 作用:Docker 客户端用于创建、管理和操作 Docker 容器和镜像。用户通过 Docker CLI 可以执行如 docker rundocker build 和 docker push 等命令。
  5. Docker 守护进程(Docker Daemon)

    • 定义:Docker 守护进程是 Docker 的后台服务,负责管理 Docker 容器和镜像的生命周期。
    • 作用:Docker 守护进程接收 Docker 客户端的请求,创建、启动、停止和删除容器,以及构建和管理镜像。它还负责与镜像仓库的交互,拉取和推送镜像。

3、Docker的安装

        3.1、CentOS安装Docker

        1)yum包更新到最新

yum update

        2)安装yum-util, 该包提供yum-config-manager功能

yum install -y yum-utils

        3)设置docker的源

yum-config-manager --add-repo http://download.docker.com/linux/centos/docker-ce.repo(中央仓库)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo(阿里仓库)

可以任选其一

        4)安装docker, yum install docker-ce-版本号

yum install docker-ce-18.06.3.ce

        5)查看docker版本号,验证

docker version

        6)启动docker

systemctl start docker

       7)设置自启动 

systemctl enable docker

       8)配置镜像加速器

        配置docker
        在/etc/docker目录下创建daemon.json配置文件

vim /etc/docker/daemon.json

        文件内容如下     注意:最新可能的docker镜像仓库配置

{
    "registry-mirrors": [
        "https://ustc-edu-cn.mirror.aliyuncs.com/",
        "https://ccr.ccs.tencentyun.com/",
        "https://docker.m.daocloud.io/"
    ]
}

        重新加载daemon

systemctl daemon-reload

        重启docker

systemctl restart docker

      3.2、Ubuntu安装Docker

1)卸载可能存在的旧版本

apt-get remove docker docker-engine docker-ce docker.io

2)更新apt包索引

apt-get update

3)安装以下包以使apt可以通过HTTPS使用存储库(repository)

apt-get install -y apt-transport-https ca-certificates curl software-properties-common

4)添加Docker官方的GPG密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

成功后应该显示OK

5)设置stable存储库

add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

6)再更新一下apt包索引

apt-get update

7)安装最新版本的Docker CE

apt-get install -y docker-ce

8)验证
8.1)查看docker服务是否启动

systemctl status docker

或如下命令

service docker status

8.2)若未启动,则启动docker服务

systemctl start docker 或如下命令service docker start

以上在线安装方式,通过连接到官网可以安装最新的版本(目前的版本为19.04),也可以使用下面的方式从软件仓库直接安装

apt-get update && apt-get install  -y docker.io

这种方式安装的优点是简单,缺点是版本较低(目前是18.09)

4、镜像操作

4.1、镜像查找

docker search 镜像名称

如:

docker search rabbitmq

4.2、镜像下载

docker pull 镜像名称:标签

示例:

docker pull ubuntu:18.04
注:没有给标签,默认为latest

4.3、查看宿主机中的镜像

docker images

4.4、删除镜像

docker rmi 镜像或id

5、容器常用命令

镜像在docker生命周期中的构建阶段,容器则属于运行阶段,可以将容易理解为镜像的一个运行实例。

1)容器启动

先让我们来尝试启动第一个docker容器,docker run命令提供了docker容器的创建到启动的功能。使用该命令创建和启动容器也是docker的推荐做法。

#创建并启动一个ubuntu容器
sudo docker run -it ubuntu:18.04 /bin/bash

使用该命令时,如果镜像还没有下载,则docker会首先下载该镜像,然后执行创建并启动容器。具体参数说明如下:

  • -i 开启容器中的STDIN(标准输入流),能接受命令,可以理解为已交互模式启动容器
  • -t 为容器分配一个tty终端,即:分配一个命令行窗口, 有了这两个参数新创建的容器才能有一个交互式shell。
  • /bin/bash 参数告诉docker在容器中启动一个bash shell
  • 可以通过--name 参数为容器命名
  • 如果指定 -d 参数,则说明容器以守护进程形式启动
  • 可以使用 docker help run查看更详细的参数说明
  • 在容器中使用,“cat /etc/issue”可以查看到运行中的容器其实为ubuntu系统。

-i -t参数是我们创建一个交互式容器的最基本的参数,需说明的是所创建的容器是交互式的,而不是一个运行后台服务的容器。

创建容器还可以使用docker create命令,如:

docker create -it ubuntu:latest

参数与docker run命令相同,与docker run命令不同的是docker create命令创建的容器不会自动启动。

2)查看运行的容器

docker ps

3)容器的退出

退出时如果想继续运行容器:按顺序按【ctrl+p】,【ctrl+q】
如果不想继续运行:按【ctrl+d】或输入exit

如果不是运行于后台的服务容器,则在容器退出后回自动停止运行,此时通过docker ps命令查看不到容器信息,需要使用docker ps -a命令查看。

4)容器的停止与启动

启动

docker start 容器名或id的前模糊匹配

停止

docker stop 容器的名称或id的前模糊匹配

5)复制文件

复制文件可以分为从容器到宿主机的复制,和从宿主机到容器的复制
1)从容器到宿主机的复制, 容器 -> 宿主机
命令格式:docker cp 容器名或ID:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
示例:将test.js从容器里面拷到宿主机的/opt路径下面

docker cp 容器名:某个文件路径  宿主机的存储路径
如:
docker cp testtomcat:/usr/local/tomcat/webapps/test/js/test.js  /opt

2)从宿主机到容器的复制, 宿主机 -> 容器
命令格式:docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径
示例:如果宿主机已经实现了换源,则可以通过如下命令将宿主机的配置文件拷到容器中,实现ubuntu容器换源

6)进入容器

docker cp 宿主机文件的路径  容器名称:存储路径
如:
docker cp /etc/apt/sources.list  ubuntu:/etc/apt/

命令格式:docker exec -it 容器ID/容器NAME /bin/bash
示例:

docker exec -it 容器名或id前模糊匹配 /bin/bash

注意:只能进入运行中的容器。

6)查看容器信息

docker exec 容器名称或者id前模糊匹配 hostname
或者
docker exec 容器名称或者id前模糊匹配 env

推荐使用docker inspect命令查看容器信息,使用方式如下所示

 docker inspect 容器名或id的前模糊匹配

该命令以json的方式返回容器的信息,内容比较多,可以只查询一种一部分,示例如下:

docker inspect -f {{.Config.Hostname}} 容器的名称或者id的前模糊匹配

注:inspect使用的是go语言模板,详细资料请参考Go语言模板。

7)容器删除

命令格式:docker rm 容器ID,(与删除镜像的命令很像,只少个i,镜像删除docker rmi 镜像名)

参数:

  • -f, --force=false 是否强行终止并删除一个运行中的容器
  • -1, --link=false :删除容器的连接 ,但保留容器
  • -v, --volumes=false :删除容器挂载的数据卷

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

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

相关文章

删除微信重复文件的简易工具

去我的个人博客观看,观感更佳哦,😙😙 前言 !!!!温馨提示:假如你是小白,啥都不懂,请直接跳到文章的最后!!! 原本我是没想写这篇文章,契机是某一天我突然打开微信的存储空间占用才发…

5款手机版的影视解说文案生成器,无须下载更方便!

在这个自媒体的红利时期,影视解说创作占据了内容创作的很大一部分。而影视解说文案则是帮助观众更好地理解和欣赏影视作品的重要点。随着手机的普及,越来越多的人希望能够在手机上方便地生成影视解说文案创作。今天,我们就来介绍5款手机版的影…

Shared memory bank conflicts

共享内存和bank: 在CUDA架构中,共享内存是一个非常快速的内存类型,它位于每个线程块内部并为该线程块内的所有线程提供服务。为了实现高吞吐量的访问,共享内存被划分为多个独立的存储区域,称为“banks”。每个bank可以在单个时钟…

创新微MinewSemi推出基于Nordic nRF54系列芯片 SoC 低功耗蓝牙5.4模组

在物联网技术飞速发展的今天,创新微MinewSemi隆重推出基于Nordic最新nRF54系列芯片SoC的ME54BS01和ME54BS02全新低功耗蓝牙5.4模组。这两款模组的问世,标志着我们在推动物联网设备智能化、高效化道路上的迈出了坚实的一步,展示了对未来技术的…

回归预测|基于卷积神经网络-鲸鱼优化-最小二乘支持向量机的数据回归预测Matlab程序 CNN-WOA-LSSVM

回归预测|基于卷积神经网络-鲸鱼优化-最小二乘支持向量机的数据回归预测Matlab程序 CNN-WOA-LSSVM 文章目录 一、基本原理1. 数据预处理2. 特征提取(CNN)3. 参数优化(WOA)4. 模型训练(LSSVM)5. 模型评估和优…

World of Warcraft [CLASSIC][80][Grandel] Mount with 310% speed

310%速度的坐骑【被感染的始祖幼龙】 永恒之眼(3个) 纳克萨玛斯(9个) 10人副本, 白马 (DPS N)黑马(DPS N)绿马(T N DPS)红马(T …

诚信为金:揭秘好征信的六大黄金标准,并实践守护好它的五大秘籍

什么是好征信,怎么守护它 咱们平时总听人说“征信”,“征信”到底是个什么东西,但很少人能透彻的了解它。它是一个有点神秘但又挺重要的东西,简单说,它就是咱在金融界的一张“身份证”,记录着咱们的信用表…

【C++ Qt day3】

2、设计一个Per类,类中包含私有成员:姓名、年龄、指针成员身高、体重,再设计一个Stu类,类中包含私有成员:成绩、Per类对象p1,设计这两个类的构造函数、析构函数和拷贝构造函数。

【2024 CCF编程能力等级认证(GESP)C++ 】一级大纲

目录 1. 背景2. 考核知识块3. 考核内容3.1 计算机基础知识3.2 集成开发环境3.3 结构化程序设计3.4 程序的基本语句3.5 程序的基本概念3.6 基本运算3.7 基本数据类型4. 考核目标5. 题型分布6. 考试时长7. 认证时间与报名8. 政策与福利9. GESP一级认证形式 1. 背景 官网&#xff…

13.DataLoader 的使用

DataLoader 的使用 dataset:告诉程序中数据集的位置,数据集中索引,数据集中有多少数据(想象成一叠扑克牌)dataloader:加载器,将数据加载到神经网络中,每次从dataset中取数据&#x…

JAVA中的线程池说明二

目录 1.引入 2.参数解释 3.标准库中提供的四个拒绝策略 1.引入 java.util.concurrent 这个包里面放的很多类都是和并发编程(多线程编程)密切相关,这个包简称JUC;今天我们主要来了解Java线程池的相关知识。 2.参数解释 在这里,我们主要讲…

无痛除毛,告别异味,希喂、有哈、小米宠物空气净化器真实测评

养宠在年轻人生活中逐渐成为一种新的潮流,越来越多的人加入到铲屎官的队伍。其中,养宠最多的品类非猫咪莫属,凭借自身可爱的外表收获人们的芳心。同时猫咪也是宠物中掉毛最严重的,漫天的浮毛在家中不断飘散,带来无尽的…

Java——断点调试

一、断点调试简介 Java的断点调试是程序开发中非常重要的一个技术,它允许开发者在程序执行时暂停执行,以便检查变量的状态、观察程序的流程、并定位错误。 1、断点(Breakpoint): 在代码的某一行指定的暂停点。当程序…

个人旅游网(1)——数据库表详解

文章目录 一、数据库表详情1.1 tab_category 表1.2、tab_route 表1.3、tab_route_img 表1.4、tab_user 表1.5、tab_favorite 表1.6、tab_address 表1.7、tab_seller 表1.8、tab_order 表1.9、tab_orderItem 表 一、数据库表详情 该网站是一个旅游网站,为具有出游的需…

C程序设计(潭浩强教授版)精选程序题

目录 (一)顺序程序设计部分 (二)选择程序设计部分 (三)循环程序设计部分 (四)数组处理数据部分 (一)顺序程序设计部分 1. 使用getchar读入两个字符&#xf…

对比 PDAF、CDAF 和 LAAF 自动对焦技术

深入解析相位检测自动对焦(PDAF) 相位检测自动对焦(PDAF,Phase Detection Auto Focus)是一种高效的自动对焦技术,广泛应用于现代数码相机、无反相机和智能手机摄像头中。为了更好地理解 PDAF,我…

C++11中的lambda匿名函数

一、引言 C11中引入的lambda表达式(也称为匿名函数或lambda函数)提供了一种方便且灵活的方式来定义和使用小的匿名函数对象。这些lambda表达式在编写回调函数、操作容器的算法中、或者在需要快速定义和传递一个函数逻辑给另一个函数时特别有用。 二、基…

行得稳,跑得远,美团如何做到长期主义持续发力?

在今天这样一个充满不确定性的时代,最能确定的是什么呢?我们这一代人,有幸成为诸多历史性时刻的亲历者和见证者。在此背景下,越来越多的企业家和经营者开始关注回归经营的本质和实现稳健经营的问题。 企业的稳健经营贯穿于企业的…

联华证券-掌握尾盘买入法的多种策略与实用技巧

尾盘买入法的常见方法与具体技巧 尾盘买入法是指在股票交易日的尾盘时段(通常指收盘前的15-30分钟)进行买入操作的策略。由于尾盘时段能够反映市场全天的交易情况以及主力资金的意图,尾盘买入法在捕捉短线机会方面具有一定的优势。以下是尾盘…

Python编码—掌握Python与Kubernetes:构建高效微服务架构

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…