Docker2-容器应用工具及docker命令

Docker1-容器内核-CSDN博客

前两章节见Docker1

3、容器的应用工具

3.1 docker (重点内容 命令)

docker架构及部署

docker容器应用在任何场景

生态架构

docker最核心的额三大组件 镜像、仓库和容器

前期k8s需要更新api且滞后swarm(docker公司)一个版本

containerd开源后 直接对接containerd

1.24版本不再支持docker

1.24不支持后 仍然想使用docker 需要cri-docker中间件

docker host

用于安装Docker daemon的主机,即为Docker Host,并且该主机中可基于容器镜像运行容器。

docker daemon

用于管理Docker Host中运行的容器、容器镜像、容器网络等,管理由Containerd.io提供的容器,

Registry 仓库

容器镜像仓库,用于存储已生成容器运行模板的仓库,用户使用时,可直接从容器镜像仓库中下载容器

镜像,即容器运行模板,就可以运行容器镜像中包含的应用了。例如:Docker Hub,也可以使用Harbor实

现企业私有的容器镜像仓库。docker client

Docker Daemon客户端工具,用于同Docker Daemon进行通信,执行用户指令,可部署在Docker

Host上,也可以部署在其它主机,能够连接到Docker Daemon即可操作。

image 镜像

把应用运行环境及计算资源打包方式生成可再用于启动容器的不可变的基础设施的模板文件,主要用于

基于其启动一个容器。

container 容器

由容器镜像生成,用于应用程序运行的环境,,包含容器镜像中所有文件及用户后添加的文件,属于基

于容器镜像生成的可读写层,这也是应用程序活跃的空间,

docker dashboard

仅限于MAC与Windows操作系统上安装使用。

Docker Dashboard 提供了一个简单的界面,使您能够直接从机器管理容器、应用程序和镜像,而无需

使用 CLI来执行核心操作。

docker部署
1:前置环境包安装

yum-utils

YUM 扩展工具,提供软件源管理、清理旧包等功能。

device-mapper-persistent-data

存储设备映射工具,用于管理磁盘分区和快照的元数据。

lvm2

逻辑卷管理器,支持动态调整磁盘分区大小。

bash 复制代码
[root@centen7-10-hehe ~ 12:03:30]$ yum install -y yum-utils device-mapper-persistent-data lvm2
2:设置阿里云镜像源
bash 复制代码
设置阿里云镜像源
[root@centen7-10-hehe ~ 14:51:11]$ yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
已加载插件:fastestmirror, langpacks
adding repo from: https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
3:安装docker-ce
bash 复制代码
[root@centen7-10-hehe ~ 12:03:30]$ yum install -y docker-ce

验证   /etc下面有docker文件 但是目前为空
[root@centen7-10-hehe ~ 14:56:08]$ cd /etc/docker/

网卡也无docker网卡
[root@centen7-10-hehe docker 14:57:23]$ ll
总用量 0
[root@centen7-10-hehe docker 14:57:24]$ ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.8.10  netmask 255.255.255.0  broadcast 10.1.8.255
        inet6 fe80::5b71:f571:b35:78a8  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:3f:a3:aa  txqueuelen 1000  (Ethernet)
        RX packets 97009  bytes 128697804 (122.7 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 41722  bytes 3144999 (2.9 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:46:6e:e1  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0



启动docker
[root@centen7-10-hehe docker 14:58:22]$ systemctl enable --now docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

网卡验证    有docker0网桥
[root@centen7-10-hehe docker 14:59:35]$ ifconfig 
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:14:bd:e2:6f  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.1.8.10  netmask 255.255.255.0  broadcast 10.1.8.255
......

网桥作用 使容器通过网桥连接到外网 需要docker0连接nat网

4:镜像加速 (国内镜像源)
bash 复制代码
[root@centen7-10-hehe docker 14:59:39]$ vim /etc/docker/daemon.json
{
  "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn",
        "https://registry.docker-cn.com",
        "https://hub-mirror.c.163.com",
        "https://hub.uuuadc.top",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.jobcher.com",
        "https://dockerhub.icu",
        "https://docker.ckyl.me",
        "https://docker.awsl9527.cn",
        "https://mirror.baidubce.com",
        "https://docker.1panel.live"
        ]
}

重启服务
[root@centen7-10-hehe docker 15:04:54]$ systemctl restart docker
5:启用数据包转发功能
bash 复制代码
[root@centen7-10-hehe docker 15:05:15]$ vim /etc/sysctl.conf
net.ipv4.ip_forward=1
6:启动docker服务 (已启动忽略)
bash 复制代码
systemctl enable docker --now

拉去nginx测试
[root@centen7-10-hehe docker 15:06:43]$ docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
3da95a905ed5: Pull complete 
037111f539a0: Pull complete 
1e537b66692c: Pull complete 
d3618cedc15e: Pull complete 
63b1ad245775: Pull complete 
40c013bb3d47: Pull complete 
ec5daaed1d0a: Pull complete 
Digest: sha256:f5c017fb33c6db484545793ffb67db51cdd7daebee472104612f73a85063f889
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@centen7-10-hehe docker 15:07:05]$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    22bd15417453   6 days ago   192MB
7:查看docker版本
bash 复制代码
[root@centen7-10-hehe ~ 14:55:08]$ docker version
Client: Docker Engine - Community
 Version:           26.1.4
 API version:       1.45
 Go version:        go1.21.11
 Git commit:        5650f9b
 Built:             Wed Jun  5 11:32:04 2024
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          26.1.4
  API version:      1.45 (minimum version 1.24)
  Go version:       go1.21.11
  Git commit:       de5c9cf
  Built:            Wed Jun  5 11:31:02 2024
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.33
  GitCommit:        d2d58213f83a351ca8f528a95fbd145f5654e957
 runc:
  Version:          1.1.12
  GitCommit:        v1.1.12-0-g51d5e94
 docker-init:
  Version:          0.19.0
8:系统安全功能配置

清空防火墙规则

bash 复制代码
[root@centen7-10-hehe docker 15:10:35]$ iptables -F && iptables -t nat -F

禁用selinux

bash 复制代码
[root@centen7-10-hehe docker 15:11:55]$ vim /etc/selinux/config 
修改如下内容
SELINUX=disabled

[root@centen7-10-hehe docker 15:12:29]$ setenforce 0

3.2应用管理

1、使用docker run 命令运行nginx应用
bash 复制代码
查看本地镜像列表
[root@centen7-10-hehe docker 15:12:44]$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    22bd15417453   6 days ago   192MB

[root@centen7-10-hehe docker 15:43:09]$ docker image ls
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    22bd15417453   6 days ago   192MB

运行镜像
[root@centen7-10-hehe docker 15:43:12]$ docker run -d nginx:latest 
413056cbd5ccaab168cb723704cfe744c4cbed667cc31732c6f9d10ad76f3d71

查看容器列表  状态up
[root@centen7-10-hehe docker 15:44:14]$ docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS     NAMES
413056cbd5cc   nginx:latest   "/docker-entrypoint...."   8 seconds ago   Up 7 seconds   80/tcp    suspicious_snyder


指定名称  --name
[root@centen7-10-hehe docker 15:44:22]$ docker run -d --name nginx_01  nginx:latest 
af2941abcda223ee93680494a2819d8b2226372d0cdf8ef090c9f0daf54d1ccd

[root@centen7-10-hehe docker 15:48:00]$ docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS     NAMES
af2941abcda2   nginx:latest   "/docker-entrypoint...."   3 seconds ago   Up 2 seconds   80/tcp    nginx_01
413056cbd5cc   nginx:latest   "/docker-entrypoint...."   3 minutes ago   Up 3 minutes   80/tcp    suspicious_snyder
2、删除 容器-- rm 删除镜像-- rmi

容器启动机箱中无法删除镜像 只有容器删除之后才能删除镜像

删除容器必须先停止 否则无法删除

使用-f可强制删除容器

bash 复制代码
无法删除
[root@centen7-10-hehe docker 15:52:02]$ docker rmi 22bd15417453
Error response from daemon: conflict: unable to delete 22bd15417453 (cannot be forced) - image is being used by running container 413056cbd5cc

停止容器
[root@centen7-10-hehe docker 15:52:02]$ docker rmi 22bd15417453
Error response from daemon: conflict: unable to delete 22bd15417453 (cannot be forced) - image is being used by running container 413056cbd5cc
查看启动容器
[root@centen7-10-hehe docker 15:52:12]$ docker stop 413056cbd5cc
413056cbd5cc
[root@centen7-10-hehe docker 15:53:02]$ docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS     NAMES
af2941abcda2   nginx:latest   "/docker-entrypoint...."   5 minutes ago   Up 5 minutes   80/tcp    nginx_01
查看全部容器
[root@centen7-10-hehe docker 15:53:12]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS                      PORTS     NAMES
af2941abcda2   nginx:latest   "/docker-entrypoint...."   5 minutes ago   Up 5 minutes                80/tcp    nginx_01
413056cbd5cc   nginx:latest   "/docker-entrypoint...."   9 minutes ago   Exited (0) 12 seconds ago             suspicious_snyder


停止全部容器
[root@centen7-10-hehe docker 15:54:06]$ docker stop nginx_01 
nginx_01
[root@centen7-10-hehe docker 15:54:18]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS                          PORTS     NAMES
af2941abcda2   nginx:latest   "/docker-entrypoint...."   6 minutes ago    Exited (0) 3 seconds ago                  nginx_01
413056cbd5cc   nginx:latest   "/docker-entrypoint...."   10 minutes ago   Exited (0) About a minute ago             suspicious_snyder

依旧无法删除
[root@centen7-10-hehe docker 15:54:21]$ docker rmi 22bd15417453
Error response from daemon: conflict: unable to delete 22bd15417453 (must be forced) - image is being used by stopped container 413056cbd5cc

删除容器必须先停止 否则无法删除

批量化删除容器
[root@centen7-10-hehe docker 15:58:28]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS                     PORTS     NAMES
af2941abcda2   nginx:latest   "/docker-entrypoint...."   10 minutes ago   Exited (0) 4 minutes ago             nginx_01
413056cbd5cc   nginx:latest   "/docker-entrypoint...."   14 minutes ago   Exited (0) 5 minutes ago             suspicious_snyder

[root@centen7-10-hehe docker 15:58:46]$ docker ps -a | awk '{print "docker rm " $1}'|bash
Error response from daemon: No such container: CONTAINER
af2941abcda2
413056cbd5cc


删除容器后删除镜像   不能删除打标签的镜像  因为打标签的镜像id一致,可以使用名字删除
[root@centen7-10-hehe docker 15:58:51]$ docker rmi nginx:latest
或者使用
[root@centen7-10-hehe docker 16:00:05]$ docker rmi 22bd15417453
Untagged: nginx:latest
Untagged: nginx@sha256:f5c017fb33c6db484545793ffb67db51cdd7daebee472104612f73a85063f889
Deleted: sha256:22bd1541745359072c06a72a23f4f6c52dbb685424e0d5b29008ae4eb2683698
Deleted: sha256:0a7841a283ece9e7e95603090fa7059e7850e1014b9c893d78a876ce1236efc8
Deleted: sha256:bac9c7cf98543a3f0091df2dbca2cdf87a1cb80d6d4c623d6c059b658562937e
Deleted: sha256:32aca3b86eb2d4e257a2a132c0cbb9958aeba1cd85d25ee6a393fd08f6c2288f
Deleted: sha256:4ef9cda1abb71e48d04cc35b0aeec61e7409e2dcb71326373e07623dc8a9f07f
Deleted: sha256:7de008c056b4fc3bdd6011aaaf2c82c0f5e96faa9b5a038e9329662b4444dd5b
Deleted: sha256:c48247a077eb9c2db74e784dce13198fac9ea62484b6073f1a553ab43feeb39b
Deleted: sha256:1bb35e8b4de116e84b2ccf614cce4e309b6043bf2cd35543d8394edeaeb587e3


本地没有镜像使用run命令会先拉取镜像再运行
[root@centen7-10-hehe docker 16:00:27]$ docker image ls
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
[root@centen7-10-hehe docker 16:01:20]$ docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@centen7-10-hehe docker 16:01:25]$ docker run -d --name nginx_01 nginx:latest
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
3da95a905ed5: Pull complete 
037111f539a0: Pull complete 
1e537b66692c: Pull complete 
d3618cedc15e: Pull complete 
63b1ad245775: Pull complete 
40c013bb3d47: Pull complete 
ec5daaed1d0a: Pull complete 
Digest: sha256:f5c017fb33c6db484545793ffb67db51cdd7daebee472104612f73a85063f889
Status: Downloaded newer image for nginx:latest
3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787
[root@centen7-10-hehe docker 16:02:24]$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    22bd15417453   6 days ago   192MB
[root@centen7-10-hehe docker 16:02:31]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS     NAMES
3f5e4a5aa308   nginx:latest   "/docker-entrypoint...."   13 seconds ago   Up 11 seconds   80/tcp    nginx_01
3、查看容器详细信息 docker inspect 容器id
bash 复制代码
[root@centen7-10-hehe docker 16:02:31]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS     NAMES
3f5e4a5aa308   nginx:latest   "/docker-entrypoint...."   13 seconds ago   Up 11 seconds   80/tcp    nginx_01
[root@centen7-10-hehe docker 16:02:36]$ docker inspect 3f5e4a5aa308
[
    {
        "Id": "3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787",
        "Created": "2025-07-21T08:02:23.803401265Z",
        "Path": "/docker-entrypoint.sh",
        "Args": [
            "nginx",
            "-g",
            "daemon off;"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 9362,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2025-07-21T08:02:24.216210463Z",
            "FinishedAt": "0001-01-01T00:00:00Z"
        },
        "Image": "sha256:22bd1541745359072c06a72a23f4f6c52dbb685424e0d5b29008ae4eb2683698",
        "ResolvConfPath": "/var/lib/docker/containers/3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787/hostname",
        "HostsPath": "/var/lib/docker/containers/3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787/hosts",
        "LogPath": "/var/lib/docker/containers/3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787/3f5e4a5aa308e4e58deb1187a6812fe247eb8324cebf13a7dbee3318d6cc6787-json.log",
        "Name": "/nginx_01",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": null,
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "bridge",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "no",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                35,
                106
            ],
            "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",
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": [],
            "BlkioDeviceReadBps": [],
            "BlkioDeviceWriteBps": [],
            "BlkioDeviceReadIOps": [],
            "BlkioDeviceWriteIOps": [],
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": [],
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": [],
            "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",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/85f7d29ddb919f60085ab7e104908593f2badb4ed5c4a5d3b7322891481c0982-init/diff:/var/lib/docker/overlay2/d9005e610f6ed2de414ddc4265beaf39295d05515c05221dd31a8abffe437627/diff:/var/lib/docker/overlay2/70a753dc48c32dcadf68717696f1d613ba3dca295812a0425004064147d081a1/diff:/var/lib/docker/overlay2/ad02db6cac45a15fddc5cef5219e7c32490e69e8f486bb0ab3732601f3918b7d/diff:/var/lib/docker/overlay2/0a640f2716b0688e01cfc0e394722c9f10ce532a14dbf8456bdb5c9d6d199f8f/diff:/var/lib/docker/overlay2/b6f4804f8bdf8be7cb10852c0d69c8c7bb9f95af6bfdcc0dda641273febfae13/diff:/var/lib/docker/overlay2/7edba14a9c84c1fe468f2d6756e54d854f9f29e475d3be39b546c3e6b27cdb1b/diff:/var/lib/docker/overlay2/cda809fd2369aae7c56517e4b60aae0360211978e5b03faffe2ca9e520e7c492/diff",
                "MergedDir": "/var/lib/docker/overlay2/85f7d29ddb919f60085ab7e104908593f2badb4ed5c4a5d3b7322891481c0982/merged",
                "UpperDir": "/var/lib/docker/overlay2/85f7d29ddb919f60085ab7e104908593f2badb4ed5c4a5d3b7322891481c0982/diff",
                "WorkDir": "/var/lib/docker/overlay2/85f7d29ddb919f60085ab7e104908593f2badb4ed5c4a5d3b7322891481c0982/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [],
        "Config": {
            "Hostname": "3f5e4a5aa308",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "80/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "NGINX_VERSION=1.29.0",
                "NJS_VERSION=0.9.0",
                "NJS_RELEASE=1~bookworm",
                "PKG_RELEASE=1~bookworm",
                "DYNPKG_RELEASE=1~bookworm"
            ],
            "Cmd": [
                "nginx",
                "-g",
                "daemon off;"
            ],
            "Image": "nginx:latest",
            "Volumes": null,
            "WorkingDir": "",
            "Entrypoint": [
                "/docker-entrypoint.sh"
            ],
            "OnBuild": null,
            "Labels": {
                "maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
            },
            "StopSignal": "SIGQUIT"
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "809c9f6d8448488fa6b162cf46922eb82c8ffeee3f3a36a2c0010d7eed01fb7d",
            "SandboxKey": "/var/run/docker/netns/809c9f6d8448",
            "Ports": {
                "80/tcp": null
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "d7b9d8b754499429837cbaafc3fc2fa35b5f53c56472137f665a9d1f44cf44e2",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:02",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "MacAddress": "02:42:ac:11:00:02",
                    "NetworkID": "7737d30e28ed0a98a8286a62a79f65b2d3c0c3522f7c3298f12cd8ab749d7d49",
                    "EndpointID": "d7b9d8b754499429837cbaafc3fc2fa35b5f53c56472137f665a9d1f44cf44e2",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DriverOpts": null,
                    "DNSNames": null
                }
            }
        }
    }
]

层级 存储层 work层 网关 IP地址 子网掩码长度等信息

可以进行过滤

bash 复制代码
[root@centen7-10-hehe docker 16:05:54]$ docker inspect 3f5e4a5aa308 |grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
4、查看网卡

容器创建的网卡 偶数在外(物理机) 基数在内(容器内)

新创建网卡14

查看容器内的ip docker inspect 容器ID(可以短写) |grep IPAddress
bash 复制代码
[root@centen7-10-hehe docker 16:10:57]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED              STATUS              PORTS     NAMES
94e991b1598a   nginx:latest   "/docker-entrypoint...."   About a minute ago   Up About a minute   80/tcp    nginx02
3f5e4a5aa308   nginx:latest   "/docker-entrypoint...."   9 minutes ago        Up 9 minutes        80/tcp    nginx_01

[root@centen7-10-hehe docker 16:12:02]$ docker inspect 94e99 |grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",

[root@centen7-10-hehe docker 16:12:24]$ docker inspect 3f5e4a |grep IPAddr
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",


测试地址
[root@centen7-10-hehe docker 16:12:59]$ curl http://172.17.0.3
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

3.3 docker命令

docker run
bash 复制代码
[root@centen7-10-hehe ~ 11:10:14]$ docker run -i -t --name c1 centos:7 bash
Unable to find image 'centos:7' locally
7: Pulling from library/centos
2d473b07cdd5: Pull complete 
Digest: sha256:be65f488b7764ad3638f236b7b515b3678369a5124c47b8d32916d6487418ea4
Status: Downloaded newer image for centos:7
#进入容器内部
[root@7b0b2a01b08d /]# ls 
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
#退出之后容器停止   因为run命令是在bash环境执行
[root@7b0b2a01b08d /]# exit
exit
[root@centen7-10-hehe ~ 11:10:59]$ docker ps -a
CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS                     PORTS     NAMES
7b0b2a01b08d   centos:7       "bash"                    13 seconds ago   Exited (0) 6 seconds ago             c1

挂载数据包

删除原有容器 将iso挂载宿主机/mnt下 在启动容器并进行数据卷挂载

bash 复制代码
挂载
[root@centen7-10-hehe ~ 11:18:52]$ ls /mnt/
[root@centen7-10-hehe ~ 11:19:56]$ mount /dev/sr0 /mnt/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@centen7-10-hehe ~ 11:20:09]$ ls /mnt/
CentOS_BuildTag  EULA  images    LiveOS    repodata              RPM-GPG-KEY-CentOS-Testing-7
EFI              GPL   isolinux  Packages  RPM-GPG-KEY-CentOS-7  TRANS.TBL
[root@centen7-10-hehe ~ 11:20:14]$ ls /mnt/Packages/

删除并启动
[root@centen7-10-hehe ~ 11:21:11]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND   CREATED         STATUS                     PORTS     NAMES
8b9014a28a21   centos:7   "bash"    2 minutes ago   Exited (0) 7 seconds ago             c1
[root@centen7-10-hehe ~ 11:21:18]$ docker rm 8b90
8b90
[root@centen7-10-hehe ~ 11:21:28]$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@centen7-10-hehe ~ 11:21:32]$ docker run -itd --name c1 -v /mnt:/opt centos:7 /bin/bash
2add39150a774cd2ad2b4b692c42966aaa863a510cb8bf83b5f55220fda9cea4

进入容器查看
[root@centen7-10-hehe ~ 11:23:51]$ docker attach 2add39
[root@2add39150a77 /]# ls /opt/
CentOS_BuildTag  EULA  LiveOS    RPM-GPG-KEY-CentOS-7          TRANS.TBL  isolinux
EFI              GPL   Packages  RPM-GPG-KEY-CentOS-Testing-7  images     repodata

容器内部绑定仓库
[root@2add39150a77 /]# cd /etc/yum.repos.d/
[root@2add39150a77 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Sources.repo  CentOS-fasttrack.repo
CentOS-CR.repo    CentOS-Media.repo      CentOS-Vault.repo    CentOS-x86_64-kernel.repo
[root@2add39150a77 yum.repos.d]# mkdir back
[root@2add39150a77 yum.repos.d]# mv *.repo back/
[root@2add39150a77 yum.repos.d]# ls
back

[root@2add39150a77 yum.repos.d]# vi abc.repo
[abc]
name=test
baseurl=file:///opt
gpgcheck=0
enabled=1

[root@2add39150a77 yum.repos.d]# yum clean all
Loaded plugins: fastestmirror, ovl
Cleaning repos: abc
[root@2add39150a77 yum.repos.d]# yum makecache
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
abc                                                                                | 3.6 kB  00:00:00     
(1/4): abc/group_gz                                                                | 156 kB  00:00:00     
(2/4): abc/primary_db                                                              | 3.1 MB  00:00:00     
(3/4): abc/filelists_db                                                            | 3.1 MB  00:00:00     
(4/4): abc/other_db                                                                | 1.2 MB  00:00:00     
Metadata Cache Created
[root@2add39150a77 yum.repos.d]# 

下载测试
[root@2add39150a77 yum.repos.d]# yum install -y net-tools
Loaded plugins: fastestmirror, ovl
......
  net-tools.x86_64 0:2.0-0.22.20131004git.el7                                                             

Complete!

使用命令测试
[root@2add39150a77 yum.repos.d]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.17.0.2  netmask 255.255.0.0  broadcast 172.17.255.255
        ether 02:42:ac:11:00:02  txqueuelen 0  (Ethernet)
        RX packets 8  bytes 648 (648.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1  (Local Loopback)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

[root@2add39150a77 yum.repos.d]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
docker ps
bash 复制代码
[root@centen7-10-hehe ~ 11:36:31]$ docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS          PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   25 seconds ago   Up 25 seconds             c2
可以查看所有服务(包括停止)
[root@centen7-10-hehe ~ 11:36:44]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                      PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   29 seconds ago   Up 29 seconds                         c2
2add39150a77   centos:7   "/bin/bash"   12 minutes ago   Exited (0) 39 seconds ago             c1
docker exec

使用exec 进入容器后退出 不会影响容器的状态

attach 进入容器退出后容器会关闭

bash 复制代码
[root@centen7-10-hehe ~ 11:36:48]$ docker exec -it c2 ls /root
anaconda-ks.cfg

使用exec进入容器内部
[root@centen7-10-hehe ~ 11:37:55]$ docker exec -it c2 /bin/bash
[root@fe6e0b67572f /]# ls
anaconda-post.log  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                etc  lib   media  opt  root  sbin  sys  usr
[root@fe6e0b67572f /]# exit
exit
[root@centen7-10-hehe ~ 11:39:40]$ docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             c2
docker attach

ctrl + p + q 退出 可以保持容器继续运行

bash 复制代码
退出保持运行状态
[root@centen7-10-hehe ~ 11:39:40]$ docker ps 
CONTAINER ID   IMAGE      COMMAND       CREATED         STATUS         PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   3 minutes ago   Up 3 minutes             c2
[root@centen7-10-hehe ~ 11:39:44]$ docker attach c2
[root@fe6e0b67572f /]# read escape sequence
[root@centen7-10-hehe ~ 11:42:21]$ docker attach c2
[root@fe6e0b67572f /]# read escape sequence
[root@centen7-10-hehe ~ 11:42:26]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                     PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   6 minutes ago    Up 6 minutes                         c2
2add39150a77   centos:7   "/bin/bash"   18 minutes ago   Exited (0) 6 minutes ago             c1
docker stop 停止容器
bash 复制代码
[root@centen7-10-hehe ~ 11:42:26]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                     PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   6 minutes ago    Up 6 minutes                         c2
2add39150a77   centos:7   "/bin/bash"   18 minutes ago   Exited (0) 6 minutes ago             c1
[root@centen7-10-hehe ~ 11:42:31]$ docker stop c2
c2
[root@centen7-10-hehe ~ 11:46:03]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS                       PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   9 minutes ago    Exited (137) 2 seconds ago             c2
2add39150a77   centos:7   "/bin/bash"   22 minutes ago   Exited (0) 9 minutes ago               c1


可以多个容器一起停止
docker stop c1 c2
docker start

可以多个容器一起启动

bash 复制代码
[root@centen7-10-hehe ~ 11:46:05]$ docker start c1 c2
c1
c2
[root@centen7-10-hehe ~ 11:46:14]$ docker ps -a
CONTAINER ID   IMAGE      COMMAND       CREATED          STATUS         PORTS     NAMES
fe6e0b67572f   centos:7   "/bin/bash"   9 minutes ago    Up 1 second              c2
2add39150a77   centos:7   "/bin/bash"   22 minutes ago   Up 2 seconds             c1
docker top

查看容器中运行的进程信息(确保容器处于运行状态)

bash 复制代码
[root@centen7-10-hehe ~ 11:46:16]$ docker top c2
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                3695                3676                0                   11:46               pts/0               00:00:00            /bin/bash

使用容器进程的ppid 在宿主机查询进程即可看到进程信息
[root@centen7-10-hehe ~ 11:50:14]$ ps aux |grep 3676
root       3676  0.0  0.5 1236448 10052 ?       Sl   11:46   0:00 /usr/bin/containerd-shim-runc-v2 -namespace moby -id fe6e0b67572f69cb6e228fc0bd2a099cf09ad0460053a326d95ed789b7b7d32c -address /run/containerd/containerd.sock
root       3804  0.0  0.0 112676   984 pts/0    R+   11:50   0:00 grep --color=auto 3676


[root@centen7-10-hehe ~ 11:50:52]$ docker exec -it c2 ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 03:46 pts/0    00:00:00 /bin/bash
root         15      0  0 03:53 pts/1    00:00:00 ps -ef
[root@centen7-10-hehe ~ 11:53:09]$ ps aux |grep 3695
root       3695  0.0  0.0  11828  1732 pts/0    Ss+  11:46   0:00 /bin/bash
root       3852  0.0  0.0 112680   984 pts/0    R+   11:53   0:00 grep --color=auto 3695
docker rm
bash 复制代码
[root@centen7-10-hehe ~ 11:54:50]$ docker stop c1 c2
c1
c2
[root@centen7-10-hehe ~ 11:55:04]$ docker rm c1 c2
c1
c2
[root@centen7-10-hehe ~ 11:55:14]$ docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
相关推荐
鹿先森AI探索之路4 分钟前
本地部署Dify教程
人工智能·docker·ai
☞下凡☜43 分钟前
C语言(20250722)
linux·c语言·开发语言
hweiyu001 小时前
开发运维DevOps(附电子书资料)
运维·devops
feifeigo1231 小时前
自动化运维:从脚本到DevOps的演进
运维·自动化·devops
您的通讯录好友1 小时前
TechGPT2部署
linux·人工智能·python·大模型·techgpt
不念霉运1 小时前
国产DevOps平台Gitee:如何重塑中国企业研发效能新格局
运维·gitee·devops
飛_1 小时前
【Word Press基础】创建一个动态的自定义区块
运维·nginx·html·word press
程序员黄老师1 小时前
四层负载均衡与七层负载均衡详解
运维·负载均衡
charlie1145141911 小时前
快速入门Socket编程——封装一套便捷的Socket编程——导论
linux·网络·笔记·面试·网络编程·socket
Freshman小白1 小时前
Fluent自动化仿真(TUI命令脚本教程)
自动化·脚本·仿真