Linux系统中Docker的安装及常用组件的安装

什么是Docker

  • Docker是一个开源的应用容器引擎,它可以让开发者将应用程序及其依赖项打包到一个可移植的镜像中,并发布到任何流行的操作系统上。Docker使用沙箱机制来隔离容器,使其相互独立,并简化了应用程序的部署和管理。
  • 沙箱机制:限制应用程序对系统资源访问的机制,通过重定向技术将程序生成和修改的文件定向到自身文件夹中,并加载自身的驱动来保护底层数据,防止程序随意操作系统资源,造成数据损坏或泄露。
  • 系统资源:被操作系统使用或管理的硬件和软件资源。这些资源包括CPU、内存、磁盘、网络连接、输入设备、输出设备、电源管理等。

Docker的特点

  • 轻量级:Docker容器与传统虚拟机相比,更加轻量级。它共享操作系统内核,并且只包含运行应用程序所需的最小化组件,因此启动速度更快,占用资源更少。

  • 可移植性:Docker容器可以在不同的环境中运行,无论是开发环境、测试环境还是生产环境。容器化应用程序可以在不同的主机之间进行简单、可靠的迁移。

  • 高效性:由于共享操作系统内核和资源隔离的特性,Docker容器可以更高效地利用服务器资源。多个容器可以在同一台主机上同时运行,互相之间不会产生干扰。

  • 可伸缩性:Docker容器可以根据应用程序的需求进行快速水平扩展或缩减。通过使用容器编排工具,如Docker Compose或Kubernetes,可以实现自动化的容器管理和扩展。

  • 简化部署和管理:Docker提供了一致的部署方式,将应用程序及其依赖项打包成一个镜像,并通过镜像进行部署。这使得应用程序的部署和管理变得简单和可靠。

  • 生态系统支持:Docker拥有庞大的生态系统,社区提供了大量的公开可用的镜像和工具,可以方便地构建、分享和管理容器化应用程序。

Docker主要组件

  • Docker Client(Docker客户端):Docker客户端是命令行界面,用于与Docker守护进程进行交互。通过Docker客户端,用户可以执行各种Docker命令来管理Docker守护进程和容器。
  • Docker Server(Docker服务器):Docker服务器是运行Docker守护进程的计算机,它负责管理Docker容器。Docker服务器可以是一台物理机或虚拟机,只要在其上安装了Docker守护进程,就可以作为Docker服务器使用。
  • Docker Daemon(Docker守护进程):Docker守护进程是后台运行的服务,负责管理Docker容器。
  • Docker Images(Docker镜像):Docker镜像是用于创建Docker容器的模板。它包含了一个应用程序及其依赖项,以及一个完整的运行环境。Docker镜像可以通过Dockerfile构建,也可以从公共仓库中下载。
  • Docker Registry(Docker注册中心):Docker注册中心是存储和管理Docker镜像的中央仓库(Docker Hub)。用户可以从公共注册中心中下载镜像,也可以将自己的镜像上传到私有注册中心。
  • Docker Container(Docker容器):Docker容器是Docker镜像的运行实例。每个容器都是独立的运行环境,包含了一个应用程序及其依赖项和运行环境。用户可以使用Docker CLI(命令行界面)或API来启动、停止、删除和管理容器。

Docker工作原理

  • Docker的工作原理基于客户端-服务器(Docker引擎)结构,其中Docker的守护进程运行在宿主主机上(Docker服务器),客户端(容器)通过Socket向Docker引擎发送相应的指令,Docker服务器就会执行相应的命令。
  • Docker利用Linux中的核心分离机制,例如Cgroups,以及Linux的核心Namespace(名字空间)来创建独立的容器。一句话概括起来,Docker就是利用Namespace做资源隔离,用Cgroup做资源限制,利用Union FS做容器文件系统的轻量级虚拟化技术。
  • 当Docker引擎在本地查找镜像时,如果本地没有找到镜像,则会根据Docker引擎配置的仓库地址,远程去查找镜像。
  • Docker容器的本质还是一个直接运行在宿主机上面的特殊进程,看到的文件系统是隔离后的,但是操作系统内核是共享宿主机OS,所以说Docker是轻量级的虚拟化技术。

Docker的安装

  • 第一步:添加Docker的yum库

sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #添加yum库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #配置软件源

  • 第二步:安装Docker

sudo yum -y install docker-ce

  • 第三步:启动Docker

sudo systemctl start docker

  • 第四步:镜像加速
    执行vi /etc/docker/daemon.json 进入文件,添加以下内容,保存并退出

{
“registry-mirrors”: [“https://5pfmrxk8.mirror.aliyuncs.com”]
}

  • 第五步:重启Docker

systemctl start docker

  • 如果想要Docker开机自启,使用systemctl enable docker

Docker相关命令

【systemctl命令是系统服务管理器指令它是 service和chkconfig两个命令组合,sudo是以管理员身份运行】

  • 启动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
  • 重新加载配置:sudo systemctl daemon-reload

Docker镜像相关命令

  • 查看本地镜像:docker images 【镜像都存储在/var/lib/docker下】
  • 删除指定镜像:docker rmi 镜像名/镜像id:版本号
  • 删除所有镜像:
docker rmi `docker images -q` 
  • 搜索远程镜像:docker search 镜像名
  • 拉取镜像到本地:docker pull 镜像名:版本号
  • 推送本地镜像到远程:docker push 镜像名:版本号

Docker容器相关命令

  • 查看所有容器:docker ps -a
  • 查看所有容器id:docker ps -a -q
  • 查看正在运行中的容器:docker ps
  • 查看最近一次运行的容器:docker ps -1
  • 查看已经停止运行的容器:docker ps -f status=exited
  • 创建并运行一个容器:docker run
    • 交互式:docker run -i -t --name=容器名字 -p=外端口:内端口 镜像名字:版本号 /bin/bash 或者/bin/sh
      退出容器:exit或者ctrl + p + q
    • 后台式:docker run -i -d --name=容器名字 -p=外端口:内端口 镜像名字:版本号
      退出容器:exit
    • i运行容器
    • -t交互式
    • -d后台式
    • –name 容器名
    • -v目录映射
    • -p端口映射
  • 删除容器:docker rm 容器名/容器id
  • 删除所有容器
docker rm `docker ps -a -q`
  • 停止容器:docker stop 容器名/容器id
  • 停止容器: docker kill 容器名/容器id
  • 停止所有容器
docker kill `docker ps -a -q`
  • 把停止的容器启动起来:docker start 容器名/容器id
  • 查看容器的运行日志:docker logs 容器名/容器id :
  • 查看容器的配置: docker inspect 容器名/容器id:
  • 进入容器里面:docker exec ;exit 退出容器
  • 拷贝文件:docker cp
  • –privileged=true 来解决挂载的目录没有权限的问题
  • 容器运行的数据:docker inspect 容器名/容器id
  • 查看容器ip(容器每次启动都会变化):docker inspect --format=‘{{.NetworkSettings:IPAddress}}’ 容器名/容器id

常用Docker容器的安装

Mysql安装

  • 拉取镜像:docker pull mysql:5.7
  • 查看镜像:docker images
    在这里插入图片描述
  • 创建映射目录【-p是创建多级目录】,目录映射是为了修改文件时直接修改映射目录,而不用进入容器中修改

mkdir -p /usr/local/docker_data/mysql/data
mkdir -p /usr/local/docker_data/mysql/conf/conf.d
mkdir -p /usr/local/docker_data/mysql/conf/mysql.conf.d
mkdir -p /usr/local/docker_data/mysql/logs

  • 运行容器

docker run --privileged=true --name mysql5.7
-p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d
-v /usr/local/docker_data/mysql/data:/var/lib/mysql
-v /usr/local/docker_data/mysql/conf:/etc/mysql/
-v /usr/local/docker_data/mysql/logs:/var/log/mysql
mysql:5.7

 --privileged=true #使容器拥有root权限mysql5.7是容器名,mysql:5.7是刚刚拉取到本地的镜像-p是端口映射,前面是系统端口,后面的是容器的端口-e是环境,MYSQL_ROOT_PASSWORD是mysql中root用户的密码-v是目录映射,前面是系统的目录,后面是容器内的目录
  • 测试【虚拟机的ip用ifconfig命令得到,ens33那一个】
    在这里插入图片描述

JDK安装(1.8)

  • 拉取镜像: docker pull openjdk:8
  • 创建容器:docker run -it --name jdk1.8 -d openjdk:8
  • 查看容器:docker ps - a
    在这里插入图片描述
  • 进入jdk容器,查看jdk是否安装正确docker exec -it jdk1.8 /bin/bash,执行java -version
    在这里插入图片描述

Redis安装

  • 拉取镜像:docker pull redis:5
  • 创建容器:docker run -id --name redis5 -p 6379:6379 --restart=always --memory=400m redis:5 --requirepass=123456

–restart=always 无论容器以何种方式退出,Docker都会自动重启该容器
–memory=400m 容器最大内存为400m
–requirepass redis的密码

  • 查看是否成功 docker ps -a
    在这里插入图片描述
  • 尝试连接
    在这里插入图片描述
    可以添加key
    在这里插入图片描述
  • 进入容器中查看这个key是否存在
    docker exec -it redis5 /bin/bash 进入容器,redis-cli 进入客户端,auth 123456 身份验证,keys * 查看所有key
    在这里插入图片描述

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

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

相关文章

网工内推 | 资深网工,周末双休,厂商认证优先,14薪

01 群核科技 招聘岗位:资深网络运维工程师 职责描述: 1、负责公司IDC机房网络的规划及持续改进,保证网络稳定运行; 2、负责公司国内外传输线路建设,提高链路的高可用保证业务的SLA; 3、负责网络监控平台的…

阿尔泰科技—创新解决农业环境监测难题!

引言 “农业是人类生活中不可或缺的重要领域,而农业环境的监测与保护对于农作物的生长和农业生产的可持续发展至关重要。为了解决农业环境参数监测的难题,阿尔泰科技提供了一套先进的解决方案,利用USB5630-D数据采集卡搭配传感器测试方案&a…

Pi 5缺货?CM5什么出来?RP2024? 在 CES2024 上访谈树莓派CEO Eben Upton

Pi 5缺货?CM5什么出来?RP2024? 在 CES2024 上访谈树莓派CEO Eben Upton 树莓派 CEO Eben Upton 在 CES2024 上回答关于树莓派5缺货,Pi 5与AI,以及 CM5 和 RP2024 的未来发展这些相关问题。 00:00 - 树莓派上的AI &…

设计模式之框架源码剖析(实战+图解)

Java设计模式 1,概述 随着软件开发人员人数的增多,一些公司急需一些高端人才。作为一个高端人才,设计面向对象软件是必不可少的能力,而软件设计是需要很深的功力,设计模式就要求你必须掌握。 2,本章特色…

Linux(CentOS7)常见指令的常见用法(上)

指令功能hostname查看当前的主机名hostnamectl set-hostname修改主机名adduser添加用户passwd给用户设置密码userdel -r 删除用户ls显示某路径下的文件名ls -l ll 显示某路径下每个文件及其属性ls -la ls -al 显示某路径下所有文件包括隐藏文件及属性ls -d只看指定文件夹&…

5-1 A. DS串应用--KMP算法

题目描述 学习KMP算法,给出主串和模式串,求模式串在主串的位置 算法框架如下,仅供参考 输入 第一个输入t,表示有t个实例 第二行输入第1个实例的主串,第三行输入第1个实例的模式串 以此类推 输入样例: 3 qwe…

Mac下手动源码编译安装Swig

使用Homebrew安装 这个方式最简单,但是一般都是安装的最新版: brew install swig如果按照特定版本,需要看一个当前支持的列表: brew search swig brew install swig3源码编译安装 swig依赖pcre库,需要先安装pcre …

浅谈一下软件 QA 方法论 和 工具

浅谈一下软件 QA 方法论 和 工具 目录概述需求: 设计思路实现思路分析1.QA方法论2.Java QA工具 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result…

Linux系统——文本三剑客

目录 一、grep 1.格式 2.选项 2.1 grep重定向 2.2grep -m 匹配到几次停止 2.3grep -i 忽略大小写 2.4grep -n 显示行号 2.5grep -c 统计匹配行数 2.6grep -A 后几行 2.7grep -C 前后三行 2.8grep -B 前三行 2.9grep -e 或 2.10grep -w 匹配整个单词 2.11grep -r…

窥探向量乘矩阵的存内计算原理—基于向量乘矩阵的存内计算

在当今计算领域中,存内计算技术凭借其出色的向量乘矩阵操作效能引起了广泛关注。本文将深入研究基于向量乘矩阵的存内计算原理,并探讨几个引人注目的代表性工作,如DPE、ISAAC、PRIME等,它们在神经网络和图计算应用中表现出色&…

现代C++之万能引用、完美转发、引用折叠FrancisFrancis

转载:现代C之万能引用、完美转发、引用折叠 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/99524127 后期参考(还未整合):C 完美转发深度解析:从入门到精通_c完美转发-CSDN博客https://blog.csdn.net/qq_21438461/article/details/129938466 0.导语 …

Dragons

题目链接&#xff1a; Problem - 230A - Codeforces 解题思路&#xff1a; 用结构体排序就好&#xff0c;从最小的开始比较&#xff0c;大于就加上奖励&#xff0c;小于输出NO 下面是c代码&#xff1a; #include<iostream> #include<algorithm> using namespac…

java框架面试篇

Spring框架 spring Bean线程安全问题 Scope注解 我们可以在bean的类上加Scope注解来声明这个Bean是单个实例还是多个实例。在默认情况下Bean是单个实例的&#xff0c;此时的注解中的属性默认为Scope("singleton")&#xff0c;Scope("prototype")则是一…

一、图像读取显示

读取和显示函数主要为&#xff1a;imread()和imshow()函数 imread函数&#xff0c;im是image的缩写&#xff0c;read就是读入一张图片 同理&#xff0c;imshow也是一样的 C中读入的图片是按照矩阵&#xff08;Matrix&#xff09;进行存储的&#xff0c;故定义变量src的数据类型…

【pytorch】nn.linear 中为什么是y=xA^T+b

我记得读教材的时候是yWxb, 左乘矩阵W&#xff0c;这样才能表示线性变化。 但是pytorch中的nn.linear中&#xff0c;计算方式是yxA^Tb&#xff0c;其中A是权重矩阵。 为什么右乘也能表示线性变化操作呢&#xff1f;因为pytorch中&#xff0c;照顾到输入是多个样本一起算的&…

kerberos+kafka(2.13)认证(单节点ubuntu)

一&#xff1a;搭建kerberos。 1. 运行安装命令 apt-get install krb5-admin-server krb5-kdc krb5-user krb5-config2. 检查服务是否启动。 systemctl status krb5-admin-server systemctl status krb5-kdcsystemctl start krb5-admin-server systemctl startkrb5-kdc3. 修…

yum安装报错“Curl error (37): Could‘t read a file...”

使用yum命令安装软件包“libmcrypt-devel” 运行yum命令如下&#xff1a; yum install libmcrypt-devel 提示有这个软件以及软件版本信息&#xff0c;输入y后下载软件包。 稍后提示错误如下&#xff1a; 错误提示截图中&#xff0c;警告软件包libmcrypt-devel-2.5.8-26.el8…

DC-磁盘配额(23国赛真题)

2023全国职业院校技能大赛网络系统管理赛项–模块B&#xff1a;服务部署&#xff08;WindowServer2022&#xff09; 文章目录 DC-磁盘配额题目配置步骤验证查看DC2驱动器C:\的磁盘配额&#xff0c;限制磁盘空间&#xff0c;警告等级等配置 DC-磁盘配额 题目 在DC2驱动器C:\上…

测试用例级别该如何定义 ? 在工作中该如何应用它 ? 把握好这5个场景即可。

1.级别的作用 在编写测试用例的过程中&#xff0c;用例的级别经常是一个不可缺少的字段 &#xff0c;本篇幅就来聊下这个字段 &#xff0c;首先从它的作用是什么呢 &#xff1f;我觉得主要有两点 &#xff0c;分别是 &#xff1a; 用于测试用例不同套件的选取 &#xff0c;即用…

C# Socket 允许控制台应用通过防火墙

需求&#xff1a; 在代码中将exe添加到防火墙规则中&#xff0c;允许Socket通过 添加库引用 效果&#xff1a; 一键三联 若可用记得点赞评论收藏哦&#xff0c;你的支持就是写作的动力。 源地址: https://gist.github.com/cstrahan/513804 调用代码: private static void …