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:版本号
  • 删除所有镜像:
c 复制代码
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
  • 删除所有容器
c 复制代码
docker rm `docker ps -a -q`
  • 停止容器:docker stop 容器名/容器id
  • 停止容器: docker kill 容器名/容器id
  • 停止所有容器
c 复制代码
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
相关推荐
lifewange几秒前
Linux 日志查看命令速查表
java·linux·运维
AndyHeee2 分钟前
【rk3576 BSP音频开发bug记录】
linux·驱动开发
A132470531215 分钟前
进程管理入门:查看和控制Linux进程
linux·运维·服务器·网络·chrome·github
薛不痒17 分钟前
使用python操作MySQL
数据库·mysql
xiaoshujiaa20 分钟前
Java大厂面试实录:谢飞机硬刚互联网医疗微服务架构,Spring Cloud+Redis+Kafka全踩坑
spring boot·redis·微服务·kafka·flyway·java面试·互联网医疗
回忆是昨天里的海26 分钟前
Spring boot接入视图时的问题
mysql·mybatisplus·视图
云和数据.ChenGuang27 分钟前
openeuler下的git指令集合
linux·运维·数据库·centos
液态不合群35 分钟前
【面试题】MySQL 中的索引数量是否越多越好?为什么?
android·数据库·mysql
奥尔特星云大使36 分钟前
使用 Docker 运行 SQL Server 2019
运维·docker·容器·sql server
风静雪冷38 分钟前
在Ubuntu上安装docker(docker engine)和docker compose
linux·ubuntu·docker