Docker技术(运维)

Docker是什么?

Docker是一个虚拟化平台,云计算时代我们的应用现在正在逐步的部署到云端,部署到云端的服务需要相互隔离,让每个服务都运行在独立的容器中,而 Docker 正是当下最主流的容器化技术。

Docker 平台基本架构(Client/Server,参考官方的架构图)

Docker 是一种Client/Server架构的应用程序,Docker 客户端与Docker 守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。Docker客户端和守护程序可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。如图所示(参考docker 官网https://docs.docker.com/get-started/overview/)。


 

 Docker Client是安装完 Docker 之后,直接使用的 docker命令。
Docker Host是我们的docker宿主机(就是安装了docker的操作系统)
Docker Daemon是docker的后台守护进程,侦听并处理Docker客户端命令,管理Docker对象,例如镜像,容器,网络和卷。
Registry是docker拉取镜像的远程仓库,提供大量的镜像供下载,下载完成之后保存在Images(本地镜像仓库)中.
Images 是Docker本地的镜像仓库,可以通过docker images查看镜像文件。
 



Docker支持的常用基本操作有哪些?
进阶篇
Docker进行数据管理的方式有哪些?
Docker的数据卷你是如何理解的?
Docker镜像如何制作?
Docker下如何实现容器互联?

Docker 核心对象(如何理解Docker中的镜像和容器?面试)

镜像(Image)

Docker 镜像可以看成是磁盘上特殊的文件系统(https://hub.docker.com/),镜像打包了应用的运行环境以及应用程序,是静态的。可以通过 Docker 启动这个镜像,进而将镜像中的程序在一个容器中启动运行起来。在 Docker 镜像中,操作系统是高度精简的,镜像中的操作系统还不包含内核,容器都是共享所在的宿主机的内核。所以有时会说容器仅包含必要的操作系统(通常只有操作系统文件和文件系统对象),容器中查看到的 Linux 内核版本与宿主机一致。假如现在理解镜像有些抽象,可以暂时先将其理解为一个安装程序。


容器(Container)


Docker容器可以将其理解为一个运行镜像的载体,镜像(Image)和容器(Container)的关系,就像是光盘和光驱。容器基于镜像创建、启动,然后运行镜像的中的文件。容器是轻量级的,它不需要管理程序的额外负担,而是直接在主机的内核中运行。我们常常说使用镜像打包应用程序,使用 Docker 发布、部署应用程序。当你的应用成功在 Docker 上运行时,这个应用就是容器化应用。我们还可以将通过 Docker 启动的容器看成是操作系统中的一个进程。
 

Docker运行机制


docker pull 执行过程:

1)客户端将指令发送给docker daemon
2)docker daemon 先检查本地images中有没有相关的镜像
3)如果本地没有相关的镜像,则向镜像服务器请求,将远程镜像下载到本地

docker run 执行过程:

检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系(简版linux系统),并在只读的镜像层外面挂载一层可读写层
从宿主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
 

基于Linux系统安装部署Docker

准备工作

一、安装打开虚拟机,准备准备CentOS(老师给了),本次以CentOS7为例进行安装

 2、基于vmvare打开CentOS——用虚拟机打开老师给的文件解压后的准备CentOS文件(D:\Docker全部文件\CentOS7964-empty 或 百度网盘\Docker全部文件\CentOS7964-empty)

 3、克隆CentOS(选择链接克隆-更省空间),命名为CentOS7964-docker

在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

 在这里插入图片描述

 

在这里插入图片描述

 开启虚拟机系统

 

 

 

 

[root@centos7964 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.126.128  netmask 255.255.255.0  broadcast 192.168.126.255
        inet6 fe80::20c:29ff:fee9:918a  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:e9:91:8a  txqueuelen 1000  (Ethernet)
        RX packets 287398  bytes 419668874 (400.2 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 127375  bytes 8442701 (8.0 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        ....

打开  Linux远程链接工具  通过MobaXterm工具链接虚拟机系统

 

 

离线安装Docker系统

推荐使用课前资料中已经下载好的资源(D:\Docker全部文件\docker-setup.zip 或 百度网盘\Docker全部文件\docker-setup.zip)并解压,也可以按如下步骤自己下载,然后将资源放到一个目录再安装,例如:

一二三步使用下载好的资源,从第四步开始

(一二步:

一步:下载docker离线包https://download.docker.com/linux/static/stable/x86_64/docker-20.10.6.tgz

说明,也可以从https://download.docker.com/linux/static/stable/网址下载指定版本

二步:下载离线安装工具https://github.com/Jrohy/docker-install/

在这里插入图片描述说明,将下载好的这个工具解压。

三步:将下载好的资源放在一个目录,例如:

在这里插入图片描述

四步:在linux环境下,创建/root/setup/docker目录,然后拷贝下载好的资源到此目录(可通过MobaXterm工具直接上传到linux目录),例如

 

 

 

 docker-setup.zip解压后的文件打开  并上传到Linux系统

五步:执行安装操作

# 进入/root/setup/docker 文件夹
cd /root/setup/docker

# 为 install.sh添加执行权限
chmod +x install.sh

# 安装
./install.sh -f docker-20.10.6.tgz

安装成功后,会出现如下信息:

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
docker 20.10.6 install success!

六步:安装成功以后,检查安装状态

docker info

 在线安装Docker系统

第一步:安装一组工具

sudo yum install -y yum-utils 

第二步:设置 yum 仓库地址

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
sudo yum-config-manager \
     --add-repo \
     http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

第三步:更新 yum 缓存

sudo yum makecache fast #yum 是包管理器

第四步:安装新版 docker

sudo yum install -y docker-ce docker-ce-cli containerd.io

Docker服务基本操作(上下箭头可以查看/运行之前运行过的指令)

查看Docker状态:查看docker是否启动了,是否是运行状态.

systemctl status docker

在这里插入图片描述

 

 停止docker服务

systemctl stop docker

启动docker服务

 systemctl start docker

设置Docker开机自启(Lunux一启动就会自动启动Docker)

systemctl enable docker

禁用Docker开机自启

systemctl disable docker

重新启动Docker服务

 systemctl restart docker

查看Docker信息

docker info

查看docker info中具体key的信息,例如:

docker info | grep 'Docker Root Dir:'

Docker镜像加速

由于国内网络问题,需要配置加速器来加速。修改配置文件 /etc/docker/daemon.json

下面命令直接生成文件 daemon.json

cat <<EOF > /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "http://hub-mirror.c.163.com"
  ],
  "max-concurrent-downloads": 10,
  "log-driver": "json-file",
  "log-level": "warn",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
    },
  "data-root": "/var/lib/docker"
}
EOF

Docker 镜像操作实践

Docker 容器操作实践

Docker数据管理——对容器中的数据进行备份

Docker容器启动后,假如我们把容器给删除了,那么容器运行过程中产生的一些数据默认也会丢失,所以我们需要把数据保存起来

在容器中管理数据主要有两种方式:

  • 数据卷(Volumes):数据卷是一个可供一个或多个容器使用的特殊目录,可以在容器之间共享和重用,默认会一直存在,即使容器被删除。
  • 数据卷
  • 数据卷操作
  • 挂载主机目录 (Bind mounts)
  • 挂载主机目录

Docker镜像制作(自己制作镜像)

Docker镜像安装

Mysql镜像

Redis镜像

Nginx镜像

Nacos镜像

docker容器实现容器互联


版权声明:本文为fhefhffg原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。