菜单

kaoqi
kaoqi
发布于 2026-10-13 / 9 阅读
0
0

docker操作

nginx的源代码目前在:https://github.com/nginx/nginx/

完成git clone之后,由于版本更新,目前的nginx构建工具被放在了根目录下的auto里面,需要依次执行:

./auto/configure
./make
./make install

就可以实现安装。

首先是在configure下会检查一次你当前的依赖库是否完备,如果configure阶段报错,那么根据错误去排查一下缺什么库,然后补齐。

docker相关的主要操作

对于docker来说,如下三个操作是我们比较关心的:

  • docker进程之间的交互,包括socket交互、pipe交互等(一般只会用socket)

  • docker服务本身的环境配置与镜像保存(同时也涉及到docker环境的打包)

  • docker的开机(虚拟机)启动项配置

进程交互

对于docker进程的IP端口使用情况的查询,可以直接使用docker ps来检查当前的IP端口情况。

# 直接的检查当前正在运行的image的端口情况
docker ps
# 在docker的启动命令中检查提供给kernel的启动相关的代理参数设置
ps aux | grep docker

对于docker中运行的软件来说,一般都需要使用socket进行docker之间的交互。docker系统调用socket函数后,首先会在本地创建一个独特的IP地址+端口,此时就已经可以正常占用IP,或者可以正常进行客户端侧的connect操作了。

开机启动

对于docker的启动命令、docker镜像的启动命令等信息来说,是通过daemon、dockerfile等文件描述的。

首先是通过systemd启动docker的基础设施:

使用systemctl status docker确定当前docker状态

然后前往/lib/systemd/system/docker.service去修改对应的开机命令

可以看到,ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock命令就是实际的开机命令,这个命令启动了dockerd,并且启用了一个底层容器运行时 containerd 的通信套接字。

然后通过daemon进行相关的docker本体的初始化,这里原环境中就只配了一个镜像源,所以就不多说什么了。

这里还有一个需要注意的事项是,docker的容器和docker本体其实是两个运行在宿主机中的进程,具体在宿主机中,使用ps aux命令可以看到管理所有容器的进程dockerd和一个管理容器本身的,由dockerd控制命名空间资源实现的一个具体到command的进程。

在下文的启动项配置中,可以通过docker的inspect命令来查看具体的IP绑定。

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器ID]

结合下面的一个全貌的inspect,可以确定本地的一个IP的位置。

在HostConfig.PortBindings中,就可以看到当前容器尝试建链的host的IP,也即实际docker port查看到的信息。

启动项配置

docker在进行image的run动作的时候,内里其实内置了很多关联参数。比如镜像启动后在镜像内部执行什么命令,镜像启动后在docker暴露出来的IP与端口号是多少等等。

这些具体的参数可以使用docker inspect [docker-id]的方式来查看,包含如下方面:

  • docker镜像的基本信息,如ID、时间

  • docker的镜像启动命令,以path、args来描述

  • 镜像的当前状态

  • 镜像的环境变量、log变量

  • 镜像的host配置

  • 其他的参数配置

这里给定一个具体的halo的镜像inspect:

[
    {
        "Id": "4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52",
        "Created": "2025-06-16T06:19:08.423806044Z",
        "Path": "sh",
        "Args": [
            "-c",
            "java -Dreactor.schedulers.defaultBoundedElasticOnVirtualThreads=true ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}",
            "--spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo_rksakh",
            "--spring.r2dbc.username=halo_hXG8K4",
            "--spring.r2dbc.password=halo_kmRJ55",
            "--spring.sql.init.platform=mysql",
            "--halo.external-url=http://localhost:8080"
        ],
        "State": {
            "Status": "running",
            "Running": true,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 1998,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2026-06-02T13:44:52.716700269Z",
            "FinishedAt": "2026-06-02T13:44:51.427036549Z",
            "Health": {
                "Status": "healthy",
                "FailingStreak": 0,
                "Log": [
                    {
                        "Start": "2026-10-13T11:28:50.409280155+08:00",
                        "End": "2026-10-13T11:28:50.460831638+08:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    15  100    15    0     0   2770      0 --:--:-- --:--:-- --:--:--  3000\n{\"status\":\"UP\"}"
                    },
                    {
                        "Start": "2026-10-13T11:29:20.461796136+08:00",
                        "End": "2026-10-13T11:29:20.515759091+08:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    15  100    15    0     0   3854      0 --:--:-- --:--:-- --:--:--  5000\n{\"status\":\"UP\"}"
                    },
                    {
                        "Start": "2026-10-13T11:29:50.517126957+08:00",
                        "End": "2026-10-13T11:29:50.570277609+08:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    15  100    15    0     0   3815      0 --:--:-- --:--:-- --:--:--  5000\n{\"status\":\"UP\"}"
                    },
                    {
                        "Start": "2026-10-13T11:30:20.571791977+08:00",
                        "End": "2026-10-13T11:30:20.626344371+08:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    15  100    15    0     0   3608      0 --:--:-- --:--:-- --:--:--  3750\n{\"status\":\"UP\"}"
                    },
                    {
                        "Start": "2026-10-13T11:30:50.62792087+08:00",
                        "End": "2026-10-13T11:30:50.679240552+08:00",
                        "ExitCode": 0,
                        "Output": "  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current\n                                 Dload  Upload   Total   Spent    Left  Speed\n\r  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0\r100    15  100    15    0     0   1743      0 --:--:-- --:--:-- --:--:--  1875\n{\"status\":\"UP\"}"
                    }
                ]
            }
        },
        "Image": "sha256:f57c0f467fce8a521de872ba73733a29d1e54453296595123c0ecf6a7c89521a",
        "ResolvConfPath": "/var/lib/docker/containers/4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52/hostname",
        "HostsPath": "/var/lib/docker/containers/4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52/hosts",
        "LogPath": "/var/lib/docker/containers/4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52/4c12b81217850241079247eba64b7ca3fe2f3bc3e48abebfb3f55ac1d02fac52-json.log",
        "Name": "/1Panel-halo-lGUB",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": [
            "b23a1987aca8535b9f55414c612874abba74b22ca7a0b92b780ab9fba43925df",
            "e0862c33ffd156adbbd8a379c40949a211cd5ee7093b4ab8291b623710e22c1c",
            "d67e539ab11d1a35cbd748671a0806e59debf116d6055235f15706ab26cc09a0"
        ],
        "HostConfig": {
            "Binds": [
                "/opt/1panel/apps/halo/halo/data:/root/.halo2:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "c8f205d78f9abcb210083979f1ca90319d19d4c8886fc3a668563f5ad78b323d",
            "PortBindings": {
                "8090/tcp": [
                    {
                        "HostIp": "127.0.0.1",
                        "HostPort": "8080"
                    }
                ]
            },
            "RestartPolicy": {
                "Name": "always",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "ConsoleSize": [
                0,
                0
            ],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "private",
            "Dns": [],
            "DnsOptions": [],
            "DnsSearch": [],
            "ExtraHosts": [],
            "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": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": null,
            "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",
                "/sys/devices/virtual/powercap"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/b4f51c6f6b58863c15700a888ec72bf35ec4a934c3413e40864dc78b61075b12-init/diff:/var/lib/docker/overlay2/c60d26603f9abe18c2e1849f20703e81d96a5d2eae9d63d46ec8bee7df5c0c75/diff:/var/lib/docker/overlay2/4a12416fdd5ba719aeb199d3b3a65945b6bd2fa59b2f6e004d24cc116eed5e3e/diff:/var/lib/docker/overlay2/a4c95b37cd506bf5fb7204585bfb6910bf2c96014219760d880e6363c0e95ac8/diff:/var/lib/docker/overlay2/7204acbf1c7364e1f7979bd3a1399c9600a03673590609a46254739f31409068/diff:/var/lib/docker/overlay2/e7a05576288dd5dea4bd7201079938d776ae9a5e0bbc812b047e004f3eaab5a3/diff:/var/lib/docker/overlay2/9dfbeb425324d4b7d69a78ccf041e939321036001c64422178470b7ac6b843ea/diff:/var/lib/docker/overlay2/94ac06ca9dff0264a6a41d6f8722a4eabadcd889e654966fa7fb6c22afa98757/diff:/var/lib/docker/overlay2/66bea153657c82a8daea0a042a93bfcddd0b034ab5120478fa68ba33f9161df7/diff:/var/lib/docker/overlay2/de6d752023df38dfdbd7bcf9f0a1935f921cf2649c71e05e314ec3705a2d6a94/diff:/var/lib/docker/overlay2/696664eb23b726891743da1aa6be46c870cc755bbc08e529fab68481e3ba7dd9/diff",
                "MergedDir": "/var/lib/docker/overlay2/b4f51c6f6b58863c15700a888ec72bf35ec4a934c3413e40864dc78b61075b12/merged",
                "UpperDir": "/var/lib/docker/overlay2/b4f51c6f6b58863c15700a888ec72bf35ec4a934c3413e40864dc78b61075b12/diff",
                "WorkDir": "/var/lib/docker/overlay2/b4f51c6f6b58863c15700a888ec72bf35ec4a934c3413e40864dc78b61075b12/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/opt/1panel/apps/halo/halo/data",
                "Destination": "/root/.halo2",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "4c12b8121785",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "ExposedPorts": {
                "8090/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "JVM_OPTS=",
                "PATH=/opt/java/openjdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "LANG=en_US.UTF-8",
                "LANGUAGE=en_US:en",
                "LC_ALL=en_US.UTF-8",
                "JAVA_VERSION=jdk-21.0.7+6_openj9-0.51.0",
                "JAVA_HOME=/opt/java/openjdk",
                "JAVA_TOOL_OPTIONS=-XX:+IgnoreUnrecognizedVMOptions -XX:+PortableSharedCache -XX:+IdleTuningGcOnIdle -Xshareclasses:name=openj9_system_scc,cacheDir=/opt/java/.scc,readonly,nonFatal",
                "HALO_WORK_DIR=/root/.halo2",
                "SPRING_CONFIG_LOCATION=optional:classpath:/;optional:file:/root/.halo2/",
                "TZ=Asia/Shanghai"
            ],
            "Cmd": [
                "--spring.r2dbc.url=r2dbc:pool:mysql://mysql:3306/halo_rksakh",
                "--spring.r2dbc.username=halo_hXG8K4",
                "--spring.r2dbc.password=halo_kmRJ55",
                "--spring.sql.init.platform=mysql",
                "--halo.external-url=http://localhost:8080"
            ],
            "Healthcheck": {
                "Test": [
                    "CMD",
                    "curl",
                    "-f",
                    "http://localhost:8090/actuator/health/readiness"
                ],
                "Interval": 30000000000,
                "Timeout": 5000000000,
                "StartPeriod": 30000000000,
                "Retries": 5
            },
            "Image": "halohub/halo-pro:2.21.0",
            "Volumes": null,
            "WorkingDir": "/application",
            "Entrypoint": [
                "sh",
                "-c",
                "java -Dreactor.schedulers.defaultBoundedElasticOnVirtualThreads=true ${JVM_OPTS} org.springframework.boot.loader.launch.JarLauncher ${0} ${@}"
            ],
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "c1fd626c6b5c0ce52f3aa809b8ca741d5f64428eb235a22c8ffc0e3435cbb6cb",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "",
                "com.docker.compose.image": "sha256:f57c0f467fce8a521de872ba73733a29d1e54453296595123c0ecf6a7c89521a",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "halo",
                "com.docker.compose.project.config_files": "/opt/1panel/apps/halo/halo/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/opt/1panel/apps/halo/halo",
                "com.docker.compose.service": "halo",
                "com.docker.compose.version": "2.28.1",
                "createdBy": "Apps",
                "maintainer": "johnniang <johnniang@foxmail.com>",
                "org.opencontainers.image.created": "2025-06-15T06:15:22.315Z",
                "org.opencontainers.image.description": "",
                "org.opencontainers.image.licenses": "GPL-3.0",
                "org.opencontainers.image.ref.name": "ubuntu",
                "org.opencontainers.image.revision": "681e3c4cda94c0633e58e33a86df708e18b23e66",
                "org.opencontainers.image.source": "https://github.com/lxware-dev/halo-pro",
                "org.opencontainers.image.title": "halo-pro",
                "org.opencontainers.image.url": "https://github.com/lxware-dev/halo-pro",
                "org.opencontainers.image.version": "2"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "bdf3acda8ecc10423da31329b010224163efe6f6adcaaeaa81f80aecf800a98e",
            "SandboxKey": "/var/run/docker/netns/bdf3acda8ecc",
            "Ports": {
                "8090/tcp": [
                    {
                        "HostIp": "127.0.0.1",
                        "HostPort": "8080"
                    }
                ]
            },
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "1panel-network": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "1Panel-halo-lGUB",
                        "halo"
                    ],
                    "MacAddress": "02:42:ac:12:00:03",
                    "DriverOpts": null,
                    "NetworkID": "c8f205d78f9abcb210083979f1ca90319d19d4c8886fc3a668563f5ad78b323d",
                    "EndpointID": "f56a40243b2d6779032f4bf13f417aa5bb384838f978b82f8db4fce38b41fd78",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.3",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "DNSNames": [
                        "1Panel-halo-lGUB",
                        "halo",
                        "4c12b8121785"
                    ]
                }
            }
        }
    }
]


评论