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.hqwc.cn/news/441168.html

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

相关文章

推荐一款简单好用的数据库建模工具

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

市面上的小型办公室都是哪些人在租?

市面上的小型办公室,又称服务式办公室,是一种将传统的写字楼进行精装修,分割成若干个独立的小型办公空间,提供给不同的租户的新型办公模式。那么,市面上的小型办公室都是哪些人在租?本文将从租户的特点和需…

npm create vue3项目特别慢

问题:Vue CLI v5.0.8在配置了淘宝镜像的情况下,创建项目报Failed to check for updates,还特别慢,等了好久都创建不好 查看 npm config get registry更换npm镜像 npm config set registryhttps://registry.npmmirror.com这样创建…

Web11--Bootstrap

1、Bootstrap入门 1.1 Bootstrap简介 官网&#xff1a;Bootstrap中文网 1.2 Bootstrap引入 <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"…

Python中容器类型的数据

目录 序列 序列的索引操作 加和乘操作 切片操作 成员测试 列表 创建列表 追加元素 插入元素 替换元素 删除元素 元组 创建元组 元组拆包 集合 创建集合 修改集合 字典 创建字典 修改字典 访问字典视图 遍历字典 若我们想将多个数据打包并且统一管理&…

Java基于SpringBoot+Vue的电影影城管理系统,附源码,文档

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;…

Unity 观察者模式(实例详解)

文章目录 简介示例1 - 简单的文本更新通知示例2 - 多观察者监听游戏分数变化示例3 - 事件系统实现观察者模式示例4 - 泛型观察者和可序列化的事件系统示例5 - 使用C#委托简化版 简介 在Unity中实现观察者模式&#xff0c;我们可以创建一个Subject&#xff08;目标/主题&#x…

【Linux】vim的简单使用

我们知道在Windows下的VS2019是一个集成开发环境&#xff0c;也就是说&#xff0c;集编辑&#xff0c;编译&#xff0c;调试等功能都放在了一起&#xff1b;但是在Linux下&#xff0c;这些步骤都是分开的&#xff0c;我们这篇博客就来说一说vim这个编辑器&#xff0c;它只有编辑…

HarmonyOS 鸿蒙驱动消息机制管理

驱动消息机制管理 使用场景 当用户态应用和内核态驱动需要交互时&#xff0c;可以使用HDF框架的消息机制来实现。 接口说明 消息机制的功能主要有以下两种&#xff1a; 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 表1 消息机制接口 方法描述struct …

父元素flex:1 高度却被子元素撑开的问题

问题 当父元素设置了flex: 1; 的情况下&#xff0c;想在其中子元素超出父元素高度的情况下&#xff0c;产生滚动条&#xff0c;在父元素区域滚动。由于子元素高度不固定&#xff0c;故父元素设置为display: flex; flex-direction: column; 子元素设置flex: 1; overflow: auto;…

【pytest系列】- assert断言的使用

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

LabVIEW电液伺服控制系统

介绍了如何利用ARM微处理器和LabVIEW软件开发一个高效、精准的电液伺服控制系统。通过结合这两种技术&#xff0c;我们能够提高系统的数字化程度、集成化水平&#xff0c;以及控制精度&#xff0c;从而应对传统电液伺服控制器面临的问题。 该电液伺服控制系统由多个关键部分组…