千家信息网

五分钟了解docker

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,内容要点:一、docker概述二、docker的核心概念及安装方式三、docker容器操作四、docker资源控制五、docker数据库管理一、Docker概述Docker是什么?1.是一种轻量级的"
千家信息网最后更新 2025年12月01日五分钟了解docker

内容要点:

一、docker概述

二、docker的核心概念及安装方式

三、docker容器操作

四、docker资源控制

五、docker数据库管理


一、Docker概述


Docker是什么?


1.是一种轻量级的"虚拟机"
2.在Linux容器里运行应用的开源工具


Docker与虚拟机的区别


参考案例指导文档表1-1


Docker的使用场景(spring clond微服务)


1.打包应用程序简化部署
2.可脱离底层硬件任意迁移
3.例:服务器从腾讯云迁移到阿里云


二、Docker的核心概念及安装方式


Docker核心概念


1.镜像
2.容器
3.仓库(共有,私有)


CentOS安装Docker的两种方式


1.使用CURL获得Docker的安装脚本进行安装
2.使用YUM仓库来安装Docker


Demo:在CentOS 7-4上安装Docker


[root@localhost ~]# yum install yum-utils device-mapper-persistent-data lvm2 -y[root@localhost ~]# yum-config-manager --add-repo  [root@localhost ~]# ls /etc/yum.repos.d/CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo  docker-ce.repo#此时会显示docker的镜像源[root@localhost ~]# yum install -y docker-ce[root@localhost ~]# systemctl stop firewalld.service[root@localhost ~]# setenforce 0[root@localhost ~]# systemctl start docker.service[root@localhost ~]# systemctl enable docker.service[root@localhost ~]# docker search nginx     #搜索nginx镜像NAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDnginx                             Official build of Nginx.                        12375               [OK]jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   1704                                    [OK]richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of…   749                                     [OK]linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   84     ......以下省略多项#显示出的仓库中的镜像按星级进行排名,星级越高,下载人数越多,自然就越靠谱[root@localhost ~]# docker pull nginx#此时我们不使用加速进行下载Using default tag: latestlatest: Pulling from library/nginx000eee12ec04: Downloading  3.083MB/27.09MBeb22865337de: Downloading  1.703MB/23.74MBbee5d581ef8b: Download complete#此时速度会非常慢,有时候甚至会出现卡顿#我们可以在此处做一个优化操作就是:镜像加速`此命令可以在阿里云的官网上搜索"官方镜像加速"从而获取到自己的命令代码(需要先注册阿里云平台的账号)``找到控制台,登陆后找到左侧的"产品与服务",再找到"容器镜像服务",再找到左侧的"镜像加速器",在"操作文档"中选择自己的系统,此处我们需要选择"CentOS",就可以找到自己账号生成的镜像加速配置文件`[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://w1ogxqvl.mirror.aliyuncs.com"]}EOF[root@localhost ~]# systemctl daemon-reload[root@localhost ~]# systemctl restart docker[root@localhost ~]# docker pull nginxUsing default tag: latestlatest: Pulling from library/nginx000eee12ec04: Pull completeeb22865337de: Pull completebee5d581ef8b: Pull completeDigest: sha256:50cf965a6e08ec5784009d0fccb380fc479826b6e0e65684d9879170a9df8566Status: Downloaded newer image for nginx:latestdocker.io/library/nginx:latest#此时很快就可以下载完成了[root@localhost ~]# docker images               #查看下载下来的镜像REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              231d40e811cd        4 weeks ago         126MB


四、Docker容器操作



创建容器:


docker create [选项]镜像运行的程序

-i让容器的标准输入保持打开
-t 让Docker分配一个伪终端


查看容器运行状态:


docker ps [选项]

-a列出最近一次启动的容器


启动容器:


docker start容器的ID/名称


创建容器并启动执行shell命令:


docker run [选项]镜像运行的程序执行的命令

-d在后台进行运行


终止容器:


docker stop容器的ID/名称


进入容器:


docker exec [选项]容器的ID/名称/bin/bash


导出容器:


docker export容器的ID/名称>文件名


导入容器:


cat文件名| docker import -生成的镜像名称:标签


删除容器:


docker rm [选项]容器的ID/名称


Demo:基础操作


[root@localhost ~]# docker inspect 231d40e811cd             #查看镜像信息[    {            "Id": "sha256:231d40e811cd970168fb0c4770f2161aa30b9ba6fe8e68527504df69643aa145",                    "RepoTags": [                                "nginx:latest"        ],                "RepoDigests": [......以下省略多行[root@localhost ~]# docker tag nginx:latest nginx:web       #重新定义标签[root@localhost ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              231d40e811cd        4 weeks ago         126MBnginx               web                 231d40e811cd        4 weeks ago         126MB[root@localhost ~]# docker images | grep nginxnginx               latest              231d40e811cd        4 weeks ago         126MBnginx               web                 231d40e811cd        4 weeks ago         126MB#删除镜像[root@localhost ~]# docker rmi nginx:webUntagged: nginx:web[root@localhost ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              231d40e811cd        4 weeks ago         126MB#存出镜像[root@localhost ~]# cd /opt/[root@localhost opt]# lscontainerd  rh[root@localhost opt]# docker save -o nginx nginx:latest[root@localhost opt]# lscontainerd  nginx  rh[root@localhost opt]# ls -lh总用量 125Mdrwx--x--x. 4 root root   28 12月 24 11:01 containerd-rw-------. 1 root root 125M 12月 24 11:17 nginxdrwxr-xr-x. 2 root root    6 3月  26 2015 rh


Demo:导入操作


需要再打开另外一台虚拟机CentOS 7-5,并安装Docker引擎:


[root@localhost ~]# docker images               #此时Docker镜像是空的REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

再回到CentOS 7-4,将之前导出的nginx文件导入到另一台虚拟机上:


[root@localhost opt]# scp /opt/nginx root@192.168.18.145:/opt/The authenticity of host '192.168.18.145 (192.168.18.145)' can't be established.ECDSA key fingerprint is SHA256:mTT+FEtzAu4X3D5srZlz93S3gye8MzbqVZFDzfJd4Gk.ECDSA key fingerprint is MD5:fa:5a:88:23:49:60:9b:b8:7e:4b:14:4b:3f:cd:96:a0.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '192.168.18.145' (ECDSA) to the list of known hosts.root@192.168.18.145's password:nginx                                                        100%  124MB 124.0MB/s   00:01

再回到CentOS 7-5上进行查看操作:


[root@localhost ~]# cd /opt/[root@localhost opt]# lscontainerd  nginx  rh[root@localhost opt]# docker load  < nginx              #导入过程831c5620387f: Loading layer  72.48MB/72.48MB5fb987d2e54d: Loading layer  57.67MB/57.67MB4fc1aa8003a3: Loading layer  3.584kB/3.584kBLoaded image: nginx:latest[root@localhost opt]# docker images             #查看镜像REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEnginx               latest              231d40e811cd        4 weeks ago         126MB


Demo:容器的操作


[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES[root@localhost opt]# docker create -it nginx:latest /bin/bash        #容器创建82013604d57b7e0cbad870b367ca241579581a3c34d977aec58157a89fe9188e[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES82013604d57b        nginx:latest        "/bin/bash"         18 seconds ago      Created                                 laughing_robinson[root@localhost opt]# docker start 82013604d57b             #启动82013604d57b[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES82013604d57b        nginx:latest        "/bin/bash"         2 minutes ago       Up 20 seconds       80/tcp              laughing_robinson#此时状态为up,端口为80[root@localhost opt]# docker search centos7[root@localhost opt]# docker pull paigeeworld/centos7[root@localhost opt]# docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             SIZEnginx                 latest              231d40e811cd        4 weeks ago         126MBpaigeeworld/centos7   latest              4cbe7aa905e7        5 years ago         382MB[root@localhost opt]# docker create -it paigeeworld/centos7/bin/bashfe74e5e0e354e855f76b2edc043358c71f9a2e99d10ac3875c610e1fd9dac4d7[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS               NAMESfe74e5e0e354        paigeeworld/centos7   "/bin/bash"         8 seconds ago       Created                                 trusting_satoshi#此时只是Created创建好的状态[root@localhost opt]# docker start fe74e5e0e354             #启动fe74e5e0e354[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE                 COMMAND             CREATED              STATUS              PORTS               NAMESfe74e5e0e354        paigeeworld/centos7   "/bin/bash"         About a minute ago   Up 11 seconds                           trusting_satoshi82013604d57b        nginx:latest          "/bin/bash"         8 minutes ago        Up 6 minutes        80/tcp              laughing_robinson#此时是Up开启的状态


Demo:对于开启的容器进行命令操作


[root@localhost opt]# docker run paigeeworld/centos7 /usr/bin/bash -c ls /#查看镜像根目录下有哪些文件binbootdevetchomeliblib64lost+foundmediamntoptprocrootrunsbinsrvsystmpusrvar[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS                          PORTS               NAMESd04961e9862f        paigeeworld/centos7   "/usr/bin/bash -c ls…"   About a minute ago   Exited (0) About a minute ago                       frosty_pare#docker run = 镜像做了create然后start,再进入到容器中执行了ls,最后执行了stop

此时我们再对没有此镜像的CentOS 7-5 执行相同操作,看看有何不同:
它会先找仓库进行下载,再创建容器,再启动容器 ,在执行ls命令,最后再stop,过程一气呵成(过程如下图)


#进入容器[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS               NAMESd04961e9862f        paigeeworld/centos7   "/usr/bin/bash -c ls…"   15 minutes ago      Exited (0) 15 minutes ago                       frosty_parefe74e5e0e354        paigeeworld/centos7   "/bin/bash"              22 minutes ago      Up 21 minutes                                   trusting_satoshi82013604d57b        nginx:latest          "/bin/bash"              30 minutes ago      Up 28 minutes               80/tcp              laughing_robinson[root@localhost opt]# docker exec -it fe74e5e0e354 /bin/bash        #选择运行的容器进入环境bash-4.2# ls /bin   dev  home  lib64       media  opt   root  sbin  sys  usrboot  etc  lib   lost+found  mnt    proc  run   srv   tmp  varbash-4.2# exitexit#终止运行[root@localhost opt]# docker stop fe74e5e0e354              #停止fe74e5e0e354[root@localhost opt]# docker ps -aCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                       PORTS               NAMESfe74e5e0e354        paigeeworld/centos7   "/bin/bash"              25 minutes ago      Exited (137) 4 seconds ago                       trusting_satoshi#此时状态为退出


四、Docker资源控制


限制CPU使用速率:


1.通过--cpu-quota选项来限制CPU的使用率
2.通过修改配置文件cpu.cfs_quota_us实现


多任务按比例分享CPU:(其中数字为权重)


docker run --cpu-shares 1024容器A
docker run --cpu-shares 1024容器B
docker run --cpu-shares 2048容器C


使用--cpuset-cpus选项限制CPU内核使用权


Demo1:CPU使用率控制


[root@localhost ~]# docker run --cpu-quota 20000 nginx:latest#该容器在电脑中所占资源只有20%,如果没有设置它就会对别的资源进行抢占[root@localhost ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMESe1e8a4aef629        nginx:latest        "nginx -g 'daemon of…"   5 seconds ago       Up 4 seconds               80/tcp              strange_dubinsky#此时会显示一个新的进程(需要新开一个终端进行查看)[root@localhost ~]# cd /sys/fs/cgroup/cpu/docker/[root@localhost docker]# lscgroup.procs           cpu.sharescpuacct.stat           cpu.statcpuacct.usage          e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67#此时会在配置文件的目录下找到以'e1e8a4aef629'开头的配置文件[root@localhost docker]# cd e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67[root@localhost e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67]# lscgroup.clone_children  cpuacct.usage         cpu.rt_period_us   notify_on_releasecgroup.event_control   cpuacct.usage_percpu  cpu.rt_runtime_us  taskscgroup.procs           cpu.cfs_period_us     cpu.sharescpuacct.stat           cpu.cfs_quota_us      cpu.stat[root@localhost e1e8a4aef6293bb2f116fe219ef0e2e190d9e094d79bb583925b49d0af3e9e67]# cat cpu.cfs_quota_us     #此quota文件可以设置上限值20000

Demo2:按比例分配


[root@localhost docker]# docker pull paigeeworld/centos7#需要再下载一个cento7的镜像[root@localhost docker]# docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             SIZEnginx                 latest              231d40e811cd        4 weeks ago         126MBpaigeeworld/centos7   latest              4cbe7aa905e7        5 years ago         382MB`创建两个容器为c1和c2,若只有这两个容器,设置容器的权重,使得c1和c2的CPU资源占比为33.3%和66.7%`[root@localhost docker]# docker run -itd --name cl --cpu-shares 512 paigeeworld/centos7ab596821561386ec6519652606b79b363e548f29ad2c289480f7a577e8f5803b[root@localhost docker]# docker run -itd --name c2 --cpu-shares 1024 paigeeworld/centos7462562fbf8ba7614328c3afde41bcc466dd329fbfe79317b5ec0e6e5cefde71d[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS               NAMES462562fbf8ba        paigeeworld/centos7   "/bin/bash"              35 seconds ago      Up 34 seconds                                   c2ab5968215613        paigeeworld/centos7   "/bin/bash"              36 seconds ago      Up 36 seconds                                   cl#此时就会产生cl和c2两个新的容器了,分别占用1/3和2/3

Demo3:限制容器使用指定的CPU


[root@localhost docker]# docker run --name c3 --cpuset-cpus 0,1 paigeeworld/centos7#此时可以使用到两个核心数资源

Demo4:内存使用限制


[root@localhost docker]# docker run --name c4 -m 512m paigeeworld/centos7[root@localhost docker]# docker ps -aCONTAINER ID        IMAGE                 COMMAND                  CREATED             STATUS                      PORTS               NAMES580c4e066308        paigeeworld/centos7   "/bin/bash"              3 seconds ago       Exited (0) 2 seconds ago                        c4

Demo4:对blkio的限制


--device-read-bps:限制读某个设备的bps(数据量)  [root@localhost dev]# docker run -d --device-read-bps /dev/sda:30mb paigeeworld/centos7627b05085a2305f5e2ef5a3725458e25b85441c8e400402f72f562fb71813ab1--device-write-bps:限制写入某个设备的bps(数据量) 例:docker run -d --device-write-bps /dev/sda:30mb paigeeworld/centos7--device-read-iops:限制读某个设备的iops (次数)--device-write-iops:限制写入某个设备的iops (次数)


五、Docker的数据管理


数据管理操作:


1.方便查看容器内产生的数据
2.多容器间实现数据共享


两种管理方式:


1.数据卷
2.数据卷容器


数据卷:直接在centos上添加,可实现数据共享,实现的是宿主和容器之间的数据共享

数据卷容器:容器之间实现共享,和宿主机没有关系,A容器中的a目录与B容器上的d目录实现数据共享


数据卷


数据卷是一个提供容器使用的特殊目录


创建数据卷:


docker run -d -v /data1 -v /data2 --name web
httpd:centos

挂载主机目录作为数据卷:

docker run -d -v /var/www:/data1 --name web-1
httpd:centos



数据卷容器


  1. 数据卷容器就是一个普通的容器
  2. 挂载web容器中的数据卷到新的容器


docker run -it --volumes-from web --name db1
httpd:centos /bin/bash


容器 数据 镜像 限制 文件 运行 名称 命令 资源 状态 目录 两个 仓库 方式 核心 设备 控制 服务 管理 配置 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南诚度互联网科技有限公司 王者荣耀换服务器账号会没吗 qms软件开发企业怎么审 直销系统计算软件开发 浙江什么是网络技术服务咨询报价 大学生网络安全学习教育 客户数据库建立软件 华泰软件开发是干什么 苹果手机查询服务器是哪个 国资委网络安全平台指导意见 fpga 软件开发工具 为什么中国没有服务器 数据库2005怎么配库 erp管理软件开发成本 网络技术分组交换的优点 高级数据库技术自考真题 你校将举行网络安全知识竞赛 数据库论文学习心得 天涯明月刀各区服务器位置 安徽高科技软件开发供应商 网络安全行业专家名单 微信链接显示无法连接服务器 有竹居网络技术有限公司薪酬结构 sql数据库的总结 PAN是什么网络安全设备 服务器正在运行切换什么意思 南宁子磊网络技术有限公司 池州通信软件开发定制 区块链有没有数据库 基于autosar软件开发
0