Docker知识点总结

Docker的概述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3oJpGGzn-1630306422689)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210824104949421.png)]

镜像(image):

dokcer镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像===>run===>tomcat01 容器(提供服务器)

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的。

启动,停止,删除,基本命令!

仓库(repository):

仓库就是存放镜像的地方!

仓库分为公有仓库和私有仓库!

Docker Hub(默认是国外的)

阿里云…都有容器服务器(配置镜像加速!)

Docker安装

安装过程

环境准备

1、需要一点点linux的基础

2、Centos7

3、我们使用Xshell连接远程服务器进行操作!

环境查看

#系统内核是3.10以上的
[root@hecs-x-medium-2-linux-20210823121155 ~]# uname -r
3.10.0-1160.15.2.el7.x86_64
#系统版本
[root@hecs-x-medium-2-linux-20210823121155 ~]# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

安装

#1、卸载旧的版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
#2、需要的安装包    
 yum install -y yum-utils
 
#3、设置镜像的仓库
yum-config-manage \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo #默认是国外的
    
yum-config-manage \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐使用阿里云的,速度快
    
    

#4、 更新 yum软件包索引
yum makecache fast 

#5、安装docker docker-ce 社区 ee企业版 
yum install docker-ce docker-ce-cli containerd.io

#6、启动docker
systemctl start docker 

#7、使用docker version 查看是否安装成功!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VQ4l0ED5-1630306422698)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210823163505977.png)]

#8、启动 hello-world
docker run hello-world

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7Qux2iN-1630306422701)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210823163929948.png)]

#9、查看一下下载的hello-world镜像
docker images

了解:卸载docker

 #1、卸载依赖
 yum remove docker-ce docker-ce-cli containerd.io
 
 #2、删除资源
 rm -rf /var/lib/docker
 #/var/lib/docker docker的默认工作路径!

阿里镜像加速

#执行下列命令
mkdir -p /etc/docker
tee /etc/docker/daemon.json<<-'EOF'
{
   "registry-mirrors":["https://qiyb9988.mirror.aliyuns.com"]
}
EOF

systemctl daemon-reload

systemctl restart docker

回顾HelloWorld流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z2NQyIRb-1630306422705)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210823170013068.png)]

底层原理

docker是怎样工作的?

docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问。

DockerServer接收到Docker-Client的指令,就会执行这个命令!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-58adzhD0-1630306422708)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210823170900243.png)]

Docker为什么比VM快?

1.Docker有着比虚拟机更少的抽象层,由于Docker不需要Hypervisor实现硬件资源虚拟化,运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。

2.Docker利用的是宿主机的内核,而不需要Guest OS,因此,当新建一个容器时,Docker不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qwn6rK6i-1630306422741)(C:\Users\MGZ20180810F\AppData\Roaming\Typora\typora-user-images\image-20210823171710796.png)]

Docker的常用命令

帮助命令

docker version    #显示docker的版本信息
docker info       #显示docker的系统信息,包括镜像和容器的数量
docker 命令 --help #万能命令

镜像命令

docker images 查看所有本地的主机上的镜像

[root@hecs-x-medium-2-linux-20210823121155 ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat        9.0       266d1269bb29   4 days ago     668MB
tomcat        latest    266d1269bb29   4 days ago     668MB
nginx         latest    dd34e67e3371   5 days ago     133MB
hello-world   latest    d1165f221234   5 months ago   13.3kB
centos        latest    300e315adb2f   8 months ago   209MB
[root@hecs-x-medium-2-linux-20210823121155 ~]# 
# REPOSITORY 镜像的仓库源
# TAG 镜像的标签
# IMAGE ID 镜像的id
# CREATED 镜像的创建时间
# SIZE 镜像的大小

#  可选项
Options:
  -a, --all             Show all images (default hides intermediate images) #列出所有的镜像
      --digests         Show digests 
  -f, --filter filter   Filter output based on conditions provided
      --format string   Pretty-print images using a Go template
      --no-trunc        Don't truncate output
  -q, --quiet           Only show image IDs #只显示镜像的id
  

docker search 搜索镜像

[root@hecs-x-medium-2-linux-20210823121155 ~]# docker search mysqlNAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDmysql                             MySQL is a widely used, open-source relation…   11312     [OK]       mariadb                           MariaDB Server is a high performing open sou…   4299      [OK]       mysql/mysql-server                Optimized MySQL Server Docker images. Create…   838                  [OK]#可选项,通过搜藏来过滤--filter=STARS=3000 #搜索书来的镜像就是STARS大于3000的 

docker pull 下载镜像

#下载镜像 docker pull 镜像名[:tag][root@hecs-x-medium-2-linux-20210823121155 ~]# docker pull mysqlUsing default tag: latest #若果不写 tag,默认是 latestlatest: Pulling from library/mysqle1acddbe380c: Already exists #分层下载,docker image 的核心 来内核文件系统bed879327370: Pull complete 03285f80bafd: Pull complete ccc17412a00a: Pull complete 1f556ecc09d1: Pull complete adc5528e468d: Pull complete 1afc286d5d53: Pull complete 6c724a59adff: Pull complete 0f2345f8b0a3: Pull complete c8461a25b23b: Pull complete 3adb49279bed: Pull complete 77f22cd6c363: Pull complete Digest: sha256:d45561a65aba6edac77be36e0a53f0c1fba67b951cb728348522b671ad63f926 #签名Status: Downloaded newer image for mysql:latestdocker.io/library/mysql:latest #真实地址#docker pull mysql = docker.io/library/mysql:latest #指定版本下载[root@hecs-x-medium-2-linux-20210823121155 ~]# docker pull mysql:5.75.7: Pulling from library/mysqle1acddbe380c: Already exists bed879327370: Already exists 03285f80bafd: Already exists ccc17412a00a: Already exists 1f556ecc09d1: Already exists adc5528e468d: Already exists 1afc286d5d53: Already exists 4d2d9261e3ad: Pull complete ac609d7b31f8: Pull complete 53ee1339bc3a: Pull complete b0c0a831a707: Pull complete Digest: sha256:7cf2e7d7ff876f93c8601406a5aa17484e6623875e64e7acc71432ad8e0a3d7eStatus: Downloaded newer image for mysql:5.7docker.io/library/mysql:5.7

docker rmi 删除镜像!

docker rmi -f 镜像id #删除指定的镜像docker rmi -f 镜像id 镜像id 镜像id... #删除多个镜像dockers rmi -f $(docker images -aq) #删除全部的镜像

容器命令

说明:我们有了镜像才可以创建容器,linux,下载一个centos镜像来测试学习

docker pull centos

新建容器并启动

docker run [可选参数] image# 参数说明--name="Name"  容器名字 tomcat01 tomcat02 用来区分容器-d             后台方式运行 -it            使用交互方式运行,进入容器查看内容-P(大写)        指定容器的端口 -P 8080:8080   -P ip:主机端口:容器端口   -P 主机端口:容器端口   -P 容器端口-p              随即指定端口#测试,启动并进入容器[root@hecs-x-medium-2-linux-20210823121155 ~]# docker imagesREPOSITORY   TAG       IMAGE ID       CREATED        SIZEcentos       latest    300e315adb2f   8 months ago   209MB[root@hecs-x-medium-2-linux-20210823121155 ~]# docker run -it centos /bin/bash[root@cf8e0ee03923 /]# lsbin  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var[root@cf8e0ee03923 /]# #从容器中退回主机exit 

列出所有的运行的容器

# docker ps 命令   # 列出当前正在运行的容器-a # 列出当前正在运行的容器+带出历史运行过的容器  -n=? #显示最近创建的容器-q #只显示容器的编号[root@hecs-x-medium-2-linux-20210823121155 ~]# docker psCONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES[root@hecs-x-medium-2-linux-20210823121155 ~]# docker ps -aCONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS     NAMEScf8e0ee03923   centos         "/bin/bash"              6 minutes ago   Exited (0) 3 minutes ago             sweet_dubinskyff8d84a0a400   d1165f221234   "/hello"                 3 hours ago     Exited (0) 3 hours ago               strange_bellc8a4f19ccc1e   266d1269bb29   "catalina.sh run"        4 hours ago     Created                              tomcat01240aa9c2dbfd   dd34e67e3371   "/docker-entrypoint.…"   5 hours ago     Exited (0) 4 hours ago               nginx01ffcc1d032ece   centos         "/bin/bash"              5 hours ago     Exited (0) 5 hours ago               xenodochial_saha0ff535f54f94   centos         "/bin/bash"              6 hours ago     Exited (127) 5 hours ago             compassionate_beaver298faa6bbc91   centos         "-it"                    6 hours ago     Created                              sharp_dewdney41fa68df8596   centos         "/bin/bash"              6 hours ago     Exited (0) 6 hours ago               priceless_gauss[root@hecs-x-medium-2-linux-20210823121155 ~]# 

退出容器

exit #直接推出容器并停止Ctrl +P +Q #容器不停止退出

删除容器

docker rm 容器id    #删除指定的容器,不能删除正在运行的容器,强制删除 docker rm -fdocker rm -f $(docker ps -aq) #删除所有的容器docker ps -a -q|xarges docker rm #删除所有的容器

启动和停止容器

docker start 容器iddocker restart 容器iddocker stop 容器iddocker kill 容器id

常用其他命令

后台启动容器

#命令 docker run -d 镜像名!#问题docker ps ,发现centos 停止了#常见的坑,docker,容器使用后台运行,就必须要有一个前太进程,docker发现没有应用,就会自动停止#nginx,容器启动后,发现自己没有提供服务,就会立刻停止,就是没有程序了。

查看日志

docker logs -f -t --tail 条数 容器,没有日志# 自己编写一段shell脚本[root@hecs-x-medium-2-linux-20210823121155 ~]# docker run -d centos /bin/sh -c "while true;do echo xiaowugui;sleep 1;done"#root@hecs-x-medium-2-linux-20210823121155 ~]# docker psCONTAINER ID   IMAGE     COMMAND             653d1e6439ce   centos    "/bin/sh -c 'while t…"   #显示日志-tf    #显示日志--tail number #显示日志条数[root@hecs-x-medium-2-linux-20210823121155 ~]# docker logs -tf --tail 10 653d1e6439ce  

查看容器中的进程信息

#命令 docker top 容器id[root@hecs-x-medium-2-linux-20210823121155 ~]# docker top 653d1e6439ceUID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                22082               22064               0                   19:49               ?                   00:00:00            /bin/sh -c while true;do echo xiaowugui;sleep 1;doneroot                22587               22082               0                   19:56               ?                   00:00:00            /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看镜像元数据

#命令 docker inspect 容器id#测试[root@hecs-x-medium-2-linux-20210823121155 ~]# docker inspect"docker inspect" requires at least 1 argument.See 'docker inspect --help'.Usage:  docker inspect [OPTIONS] NAME|ID [NAME|ID...]Return low-level information on Docker objects[root@hecs-x-medium-2-linux-20210823121155 ~]# docker inspect 653d1e6439ce[    {        "Id": "653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a",        "Created": "2021-08-23T11:49:19.344808459Z",        "Path": "/bin/sh",        "Args": [            "-c",            "while true;do echo xiaowugui;sleep 1;done"        ],        "State": {            "Status": "running",            "Running": true,            "Paused": false,            "Restarting": false,            "OOMKilled": false,            "Dead": false,            "Pid": 22082,            "ExitCode": 0,            "Error": "",            "StartedAt": "2021-08-23T11:49:19.642912597Z",            "FinishedAt": "0001-01-01T00:00:00Z"        },        "Image": "sha256:300e315adb2f96afe5f0b2780b87f28ae95231fe3bdd1e16b9ba606307728f55",        "ResolvConfPath": "/var/lib/docker/containers/653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a/resolv.conf",        "HostnamePath": "/var/lib/docker/containers/653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a/hostname",        "HostsPath": "/var/lib/docker/containers/653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a/hosts",        "LogPath": "/var/lib/docker/containers/653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a/653d1e6439ce7fba1c7eb5d392a95e25603ee19c2c766031d78f0ddc3004a18a-json.log",        "Name": "/heuristic_ride",        "RestartCount": 0,        "Driver": "overlay2",        "Platform": "linux",        "MountLabel": "",        "ProcessLabel": "",        "AppArmorProfile": "",        "ExecIDs": null,        "HostConfig": {            "Binds": null,            "ContainerIDFile": "",            "LogConfig": {                "Type": "json-file",                "Config": {}            },            "NetworkMode": "default",            "PortBindings": {},            "RestartPolicy": {                "Name": "no",                "MaximumRetryCount": 0            },            "AutoRemove": false,            "VolumeDriver": "",            "VolumesFrom": null,            "CapAdd": null,            "CapDrop": null,            "CgroupnsMode": "host",            "Dns": [],            "DnsOptions": [],            "DnsSearch": [],            "ExtraHosts": null,            "GroupAdd": null,            "IpcMode": "private",            "Cgroup": "",            "Links": null,            "OomScoreAdj": 0,            "PidMode": "",            "Privileged": false,            "PublishAllPorts": false,            "ReadonlyRootfs": false,            "SecurityOpt": null,            "UTSMode": "",            "UsernsMode": "",            "ShmSize": 67108864,            "Runtime": "runc",            "ConsoleSize": [                0,                0            ],            "Isolation": "",            "CpuShares": 0,            "Memory": 0,            "NanoCpus": 0,            "CgroupParent": "",            "BlkioWeight": 0,            "BlkioWeightDevice": [],            "BlkioDeviceReadBps": null,            "BlkioDeviceWriteBps": null,            "BlkioDeviceReadIOps": null,            "BlkioDeviceWriteIOps": null,            "CpuPeriod": 0,            "CpuQuota": 0,            "CpuRealtimePeriod": 0,            "CpuRealtimeRuntime": 0,            "CpusetCpus": "",            "CpusetMems": "",            "Devices": [],            "DeviceCgroupRules": null,            "DeviceRequests": null,            "KernelMemory": 0,            "KernelMemoryTCP": 0,            "MemoryReservation": 0,            "MemorySwap": 0,            "MemorySwappiness": null,            "OomKillDisable": false,            "PidsLimit": null,            "Ulimits": null,            "CpuCount": 0,            "CpuPercent": 0,            "IOMaximumIOps": 0,            "IOMaximumBandwidth": 0,            "MaskedPaths": [                "/proc/asound",                "/proc/acpi",                "/proc/kcore",                "/proc/keys",                "/proc/latency_stats",                "/proc/timer_list",                "/proc/timer_stats",                "/proc/sched_debug",                "/proc/scsi",                "/sys/firmware"            ],            "ReadonlyPaths": [                "/proc/bus",                "/proc/fs",                "/proc/irq",                "/proc/sys",                "/proc/sysrq-trigger"            ]        },        "GraphDriver": {            &#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值