CentOS7-Docker基础指令-02

1、帮助指令

指令作用
docker version显示 Docker 版本信息
docker info显示 Docker 系统信息,包括镜像和容器数
docker --help帮助
-- 显示 Docker 版本信息。
docker version

在这里插入图片描述

-- 显示 Docker 系统信息,包括镜像和容器数
docker info

在这里插入图片描述

-- 帮助指令
docker --help

在这里插入图片描述

-- 帮助指令,使用方式:查看 images指令
docker images --help

在这里插入图片描述

2、镜像命令

1、docker images 查看镜像

指令含义
docker images列出本地主机上的镜像
  • 可选项
参数作用
-a列出本地所有镜像
-q只显示镜像id
- -digests显示镜像的摘要信息

列出本地主机上的镜像

docker images

在这里插入图片描述

REPOSITORY 镜像的仓库源
TAG 镜像的标签
IMAGE ID 镜像的ID
CREATED 镜像创建时间
SIZE 镜像大小
# 同一个仓库源可以有多个 TAG,代表这个仓库源的不同版本,我们使用REPOSITORYTAG 定义不同
的镜像,如果你不定义镜像的标签版本,docker将默认使用 lastest 镜像!

列出本地所有镜像,且只显示ID

docker images -qa

在这里插入图片描述

显示镜像的摘要信息

docker images --digests

在这里插入图片描述

2、docker search 搜索镜像

指令作用
docker search 镜像名称搜索指定的镜像
  • 选项
参数作用
-f过滤

案例一:在Docker Hub网页上,搜索 MYSQL镜像

Docker Hub地址
在这里插入图片描述
在这里插入图片描述

案例二:使用 指令搜索

docker search mysql

在这里插入图片描述

案例三:过滤掉 列出收藏数小于9000的镜像。

docker search mysql -f=stars=9000

在这里插入图片描述

3、docker pull 下载镜像

指令作用
docker pull 镜像名称下载最新版的镜像
  • 选项
参数作用
docker pull 镜像名称:指令版本号下载指定版本号的镜像

案例一:不带参数,默认下载最新版的mysql镜像

docker pull mysql

在这里插入图片描述

查看当前本机的所有镜像

docker images

在这里插入图片描述

案例二:下载指令版本为:5.7的mysql镜像

docker pull mysql:5.7

在这里插入图片描述

查看当前本机的所有镜像

在这里插入图片描述

4、docker rmi 删除镜像

指令作用
docker rmi删除镜像
  • 选项
参数作用
-f 镜像ID删除指定ID的镜像
-f 镜像名:tag名删除对应的版本号的镜像
-f $(docker images -qa)删除全部镜像

查看镜像

在这里插入图片描述

案例一:删除 IMAGE ID为 feb5d9fea6a5的 hello-world镜像

docker rmi -f feb5d9fea6a5

在这里插入图片描述

案例二:删除 MYSQL镜像中 tag为 5.7的版本镜像

docker rmi -f mysql:5.7

在这里插入图片描述

案例三:删除全部镜像

  • 为了测试,先重新装了好几个镜像

在这里插入图片描述

docker rmi -f $(docker images -qa)

在这里插入图片描述

  • 再次查看下本机镜像
    在这里插入图片描述

3、容器命令

案例一:下载CentOS镜像并启动容器

docker pull centos

在这里插入图片描述

1、docker run 启动容器命令

通过 docker run 指令,根据指定的镜像启动一个容器

指令作用
docker run [选项] 镜像名在指定的镜像上创建一个容器
  • 选项
参数作用
-name=“容器自定义名称”给容器指定一个名字
-d后台方式运行容器,并打印容器的ID
-i以交互模式运行容器,通过和 -t 一起使用
-t给容器重新分配一个终端,通常和 -i 一起使用
-P随机端口映射
-p指定端口映射,本地端口映射到:容器端口,如:3343:80
--------启动并进入容器
run 通过 run执行centos镜像,创建一个容器
-it 通过交互式的运行容器
/bin/bash 表示载入容器后运行bash ,docker中必须要保持一个进程的运行,要不然整个容器启动后就会马上kill itself
docker run -it centos /bin/bash

2、退出容器命令

指令、快捷键作用
输入 exit容器停止退出
按 Ctrl + d 等同于 exit容器停止退出
按 Ctrl + p + q容器不停止退出后
-- 列出所有运行的容器
docker ps 

在这里插入图片描述

我试了不加 /bin/bash,好像也没什么问题
能进入容器内,使用 ctrl+p+q,容器不停止退出后
容器依旧在运行(整明白的,麻烦大佬评论区留言哈)

在这里插入图片描述

3、列出所有运行的容器命令

指令作用
docker ps仅显示正在运行的容器
  • 选项
参数作用
-a列出当前所有正在运行的容器 + 历史运行过的容器
-l显示最近创建的容器
-n=数字显示最近n个创建的容器
-q只显示当前正在运行的容器ID

案例一:显示正在运行的容器

docker ps

在这里插入图片描述

案例二:显示当前所有正在运行的容器 + 历史运行过的容器

docker ps -a

在这里插入图片描述

案例三:显示最近创建的容器

docker ps -l

在这里插入图片描述

案例四:只显示当前正在运行的容器ID

docker ps -q

在这里插入图片描述

4、退出容器后,再次进入容器

指令作用
docker exec -it 容器的ID /bin/bash进入指定运行中的容器

在这里插入图片描述

通过容器的ID再次进入容器中

docker exec -it debe2f18460f /bin/bash

在这里插入图片描述

5、容器的启动、停止、重启、强制停止命令

指令作用
docker start (容器id or 容器名)启动容器
docker stop (容器id or 容器名)停止容器
docker kill (容器id or 容器名)强制停止容器
docker restart (容器id or 容器名)重启容器

案例一:正常停止容器

在这里插入图片描述

在这里插入图片描述

案例二:启动容器
(1)先通过 docker ps -l 查看 历史运行过的容器,得到 CONTAINER ID
(2)在 通过 docker start 容器ID ,启动容器

在这里插入图片描述

案例三:重启容器

在这里插入图片描述

案例四:强制停止容器

在这里插入图片描述

6、删除容器

指令作用
docker rm 容器id删除指定容器(未运行的容器)
docker rm -f 容器id删除指定容器(正在运行的容器)
docker rm $(docker ps -a -q)删除所有容器(未运行的容器)
docker rm -f $(docker ps -a -q)删除所有容器(正在运行的容器)
docker ps -a -q | xargs docker rm删除所有容器 (未运行的容器)
docker ps -a -q | xargs docker rm -f删除所有容器(正在运行的容器)

案例一:删除正在运行的容器且ID是 7f7fd939ca61

在这里插入图片描述

docker rm -f 7f7fd939ca61

在这里插入图片描述

案例二:删除正在运行的所有容器(第一种方式)

在这里插入图片描述

docker rm -f $(docker ps -a -q)

在这里插入图片描述

案例三:删除正在运行的所有容器(第二种方式)

在这里插入图片描述

docker ps -a -q|xargs docker rm -f

在这里插入图片描述

4、其他常用命令

1、后台启动容器

指令作用
docker run -d 容器名启动centos,使用后台方式启动
# 例子
docker run -d centos # 启动centos,使用后台方式启动

# 问题: 使用docker ps 查看,发现容器已经退出了!
# 解释:Docker容器后台运行,就必须有一个前台进程,容器运行的命令如果不是那些一直挂起的命
令,就会自动退出。
# 比如,你运行了nginx服务,但是docker前台没有运行应用
# 这种情况下,容器启动后,会立即自杀,因为他觉得没有程序了
# 最好的情况是,将你的应用使用前台进程的方式运行启动。

案例一:加个 -it 选项就不会自动退出了

docker run -it -d centos

在这里插入图片描述

2、查看日志

指令作用
docker logs -tf --tail 10 容器ID动态查看日志
-- 我们启动 centos,并编写一段脚本来测试玩玩!最后查看日志
docker run -d centos /bin/sh -c "while true;do echo hello,world;sleep 1;done"

在这里插入图片描述

-- 动态查看10条信息
docker logs -tf --tail 10 41563649589c

在这里插入图片描述

3、通过容器ID,查看容器中运行的进程信息

指令作用
docker top 容器ID通过容器ID,查看容器中运行的进程信息

在这里插入图片描述

-- docker top 容器ID
docker top 41563649589c

在这里插入图片描述

4、通过容器ID,查看容器/镜像的元数据

指令作用
docker inspect 容器id通过容器ID,查看容器/镜像的元数据

在这里插入图片描述

-- docker inspect 容器id
docker inspect 41563649589c

镜像的元数据文件内容

[
    {
        "Id": "41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d",
        "Created": "2022-01-03T20:57:14.068411198Z",
        "Path": "/bin/sh",
        "Args": [
            "-c",
            "while true;do echo hello,world;sleep 1;done"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 17929,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-01-03T20:57:14.343033151Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
        "ResolvConfPath": "/var/lib/docker/containers/41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d/hostname",
        "HostsPath": "/var/lib/docker/containers/41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d/hosts",
        "LogPath": "/var/lib/docker/containers/41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d/41563649589cc7024ef053a2adc32a8b1b4b46d7fb53d69a7fb95fdd3af6030d-json.log",
        "Name": "/xenodochial_bell",
        "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": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/dcaa14b38aba841236b4844e99bc3c7e680547ae27646275236546fd0c7176e9-init/diff:/var/lib/docker/overlay2/feed8daa8c85a6da0fb541037472a9dc1d11178fd9ebd410a85c08cfe8ea95d1/diff",
                "MergedDir": "/var/lib/docker/overlay2/dcaa14b38aba841236b4844e99bc3c7e680547ae27646275236546fd0c7176e9/merged",
                "UpperDir": "/var/lib/docker/overlay2/dcaa14b38aba841236b4844e99bc3c7e680547ae27646275236546fd0c7176e9/diff",
                "WorkDir": "/var/lib/docker/overlay2/dcaa14b38aba841236b4844e99bc3c7e680547ae27646275236546fd0c7176e9/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "41563649589c",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "while true;do echo hello,world;sleep 1;done"
            ],
            "Image": "centos",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "org.label-schema.build-date": "20210915",
                "org.label-schema.license": "GPLv2",
                "org.label-schema.name": "CentOS Base Image",
                "org.label-schema.schema-version": "1.0",
                "org.label-schema.vendor": "CentOS"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "1c05979b0e2baa95e93dae1741a7a9ff8cae7a2c3d86b43f671294859d092687",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/1c05979b0e2b",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "e8ebf14e61017de47466098ae4bee073f6bfec3d9d06a1ad133966de7935bd31",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.4",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:04",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "35b10a083a5539fa2db6acf5fd0088f952d19e34dde5140d3e6715b3674062b6",
                    "EndpointID": "e8ebf14e61017de47466098ae4bee073f6bfec3d9d06a1ad133966de7935bd31",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

5、进入正在运行的容器

指令作用
docker exec -it 容器ID /bin/bash在容器中打开新的终端,并且可以启动新的进程
docker attach 容器ID直接进入容器启动命令的终端,不启动新的进程

案例一:进入正在运行的容器(方式一)

在这里插入图片描述

-- docker exec -it 容器ID /bin/bash
docker exec -it c122ac6dafb6 /bin/bash

在这里插入图片描述

案例二:进入正在运行的容器(方式二)

在这里插入图片描述

-- docker attach 容器ID
docker attach c122ac6dafb6

在这里插入图片描述

6、从容器内拷贝文件到主机上

命令作用
docker cp 容器id:容器内路径 目的主机路径从容器内拷贝文件到主机上

案例一:将容器/home/目录下的 1.txt文件,拷贝到主机的 /home/目录下

在这里插入图片描述

-- 进入容器
docker exec -it c122ac6dafb6 /bin/bash

在这里插入图片描述

-- 按 Ctrl + p + q 从容器内退出后
-- 将容器/home/目录下的 1.txt文件,拷贝到主机的 /home/目录下
-- docker cp 容器id:容器内路径 目的主机路径
docker cp c122ac6dafb6:/home/1.txt /home/

在这里插入图片描述

7、常用指令汇总

指令作用
docker attach 容器ID直接进入容器启动命令的终端,不启动新的进程
docker build通过 Dockerfile 定制镜像
docker commit提交当前容器为新的镜像
docker cp 容器id:容器内路径 目的主机路径从容器中拷贝指定文件或者目录到宿主中
docker create创建一个新的容器,同run,但不启动容器
docker diff查看 docker 容器变化
docker events从 docker 服务获取容器实时事件
docker exec -it 容器ID /bin/bash在容器中打开新的终端,并且可以启动新的进程
docker export导出容器的内容流作为一个 tar 归档文件[对应 import ]
docker history展示一个镜像形成历史
docker images列出系统当前镜像
docker import从tar包中的内容创建一个新的文件系统映像[对应export]
docker info显示系统相关信息
docker inspect 容器id获取容器/镜像的元数据
docker kill (容器id or 容器名)强制停止一个运行中的容器
docker load从一个 tar 包中加载一个镜像[对应 save]
docker login注册或者登陆一个docker 源服务器
docker logout从当前 Dockerregistry 退出
docker logs -tf --tail 10 容器ID动态输出当前容器日志信息
docker port查看映射端口对应的容器内部源端口
docker pause暂停容器中所有的进程
docker ps列出容器列表
docker pull 镜像名从镜像仓库中拉取或者更新指定镜像
docker push推送指定镜像或者库镜像至docker源服务器
docker restart重启运行的容器
docker rm移除一个或者多个容器
docker rmi删除本地一个或多个镜像
docker run -it 镜像名 /bin/bash创建一个新的容器并运行一个命令
docker save保存一个镜像为一个tar 包[对应 load]
docker search 镜像名在 docker hub 中搜索镜像
docker start启动一个或多个已经被停止的容器
docker stop停止一个运行中的容器
docker tag给源中镜像打标签
docker top查看容器中运行的进程信息
docker unpause恢复容器中所有的进程
docker version查看 docker 版本号
docker wait阻塞运行直到容器停止,然后打印出它的退出代码

在这里插入图片描述

5、案例练习

1、使用docker安装 nginx

第一步:搜索镜像

docker search nginx

在这里插入图片描述

第二步:下载Nginx镜像

docker pull nginx

在这里插入图片描述

第三步:查看本地镜像列表

docker images

在这里插入图片描述

第四步:启动容器

-d 后台运行
-- name 自定义容器名称
-p 端口映射,将 本地的 3344端口映射到 容器的80端口

docker run -d --name nginx01 -p 3344:80 nginx

在这里插入图片描述

第五步:查看正在运行的容器列表

在这里插入图片描述

第六步:在虚拟机中Centos7中测试

-- curl 本机IP(或localhost):本地映射的端口号
curl localhost:3344

在这里插入图片描述

第七步:本地测试

在这里插入图片描述

nginx 相关文件目录

whereis nginx

在这里插入图片描述

/usr/sbin/nginx 
/usr/lib/nginx

-- Nginx配置文件目录
/etc/nginx 

-- Nginx HTML文件目录(欢迎页面)
/usr/share/nginx

2、使用docker安装 tomcat

第一步:搜索镜像

docker search tomcat

在这里插入图片描述

第二步:拉取特定版本号的镜像

-- 版本号不是瞎写的,是 Docker Hub存在的
docker pull tomcat:9.0

Docker Hub地址
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

第三步:运行指定版本号的Tomcat镜像(最新版的省略 :版本号)

docker run -d -p 8080:8080 --name tomcat1 tomcat:9.0

在这里插入图片描述

第四步:查看正在运行的容器

在这里插入图片描述

第五步:本机测试

在这里插入图片描述

-- 报 404错误,这是正常的
-- 因为docker 拉取的Tomcat镜像是阉割版本的
-- 到这步其实已经可以成功了

第六步 网页上显示Tomcat猫

在这里插入图片描述

-- 进入容器
docker exec -it c80a1796a54f /bin/bash
-- 查找Tomcat文件
whereis tomcat

在这里插入图片描述

-- 进入到 Tomcat文件夹
cd /usr/local/tomcat/

-- 发现 webapps目录下什么都没有
ls webapps

在这里插入图片描述

-- 将webapps.dist目录下所有的文件,拷贝到 webapps目录下
cp -R webapps.dist/* webapps

在这里插入图片描述

-- 再次访问

在这里插入图片描述

6、可视化

运行Portainer可视化工具(本地没有镜像会自己去下载)

docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本机测试

1、首次登陆需要注册用户,给admin用户设置密码:

在这里插入图片描述

2、单机版这里选择local即可,选择完毕,点击Connect即可连接到本地docker

在这里插入图片描述

3、首页

在这里插入图片描述

4、点击本地的 docker,显示页面如下

在这里插入图片描述

案例一:启动MySQL容器

在这里插入图片描述
在这里插入图片描述

点击“Deploy the container”,过程会有点长,耐心等待。

查看 刚启动的 MYSQL容器

在这里插入图片描述

点击容器的名称,可以进入容器。

在这里插入图片描述

点击“Stats”统计信息按钮以查看新启动的容器中发生的情况.

在这里插入图片描述

这是我的数据库容器的统计信息

在这里插入图片描述

同样,单击“Logs”按钮以查看容器的完整日志详细信息

在这里插入图片描述
在这里插入图片描述

点击 Console

在这里插入图片描述

选择命令行管理程序(BASH或SH),然后单击“Connect”按钮

在这里插入图片描述
在这里插入图片描述

详细内容可以看看 Docker管理工具Portainer—孤山之王

这是跟着大佬学习做的笔记,大家也可以去看看哈

【狂神说Java】Docker最新超详细版教程通俗易懂

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐