我接管了一个旧的 PHP 项目,该项目有一个现有的基础设施(服务器)启动并运行。现在我想搬到另一个提供商,但是逆向工程是如何设置的有点神秘。关于该部署的一个“神秘”的事情是各种图像及其相关性,以及它们似乎共享数据而没有在 Docker 文件中指定任何此类内容的事实。
我现在意识到,在启动容器时可以挂载另一个容器中存在的卷,--volumes-from
这可能就是这样做的,但我希望我能看到执行此操作的命令或选项。这可能(几年后)吗?
Dockerfiles
Dockerfile.code.yml
这包含所有 PHP 代码。除了将内容记录到标准输出之外,它本身似乎并没有做太多事情。
FROM debian:jessie
COPY . /var/www/myapp/
COPY deploy/parameters.yml.prod /var/www/myapp/app/config/parameters.yml
VOLUME /var/www/myapp/
COPY deploy/myapp-code-start.sh /myapp-code-start.sh
ENTRYPOINT /myapp-code-start.sh
Dockerfile.php-fpm.yml
这是实际的应用程序,但从文件中可以看出,它没有代码,这让我想知道它是如何工作的。
FROM php:7.2-fpm
RUN apt update && apt install -y libpq-dev libcurl4-gnutls-dev libicu-dev
RUN docker-php-ext-install pdo_pgsql pgsql intl pcntl
RUN pecl install redis && docker-php-ext-enable redis
RUN usermod -u 1000 www-data
COPY deploy/php-config/uploads.ini /usr/local/etc/php/conf.d/
COPY deploy/myapp-app-start.sh /myapp-app-start.sh
ENTRYPOINT /myapp-app-start.sh
码头工人输出
运行容器
root@myapp-app2:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4551cbfdb140 128.18.125.254:5000/myapp-fpm:latest "/bin/sh -c /myapp-ap…" 19 months ago Up 8 months 10.135.17.193:9000->9000/tcp root_myapp-fpm_1
8018f756f345 128.18.125.254:5000/myapp-static:latest "nginx -g 'daemon of…" 19 months ago Up 8 months 80/tcp, 443/tcp, 10.135.17.193:8080->8080/tcp root_myapp-static_1
e2d5c3b22e65 128.68.125.254:5000/myapp-cron:latest "start-cron" 19 months ago Up 8 months root_myapp-cron_1
7713d5314f58 128.18.125.254:5000/myapp-code:latest "/bin/sh -c /myapp-co…" 19 months ago Up 8 months root_myapp-code_1
2080da8189fb redis:3-alpine "docker-entrypoint.s…" 19 months ago Up 8 months 10.135.17.193:6379->6379/tcp root_myapp-redis_1
证明代码和 FPM 容器共享一个卷
使用this显示卷。
root@myapp-app2:~# docker container inspect -f '{{range .Mounts}}{{.Type}}:{{.Source}}:{{.Destination}}{{println}}{{ end }}' root_myapp-fpm_1
volume:/var/lib/docker/volumes/6dfeffc141172fc3241c3a8b0d11be2348f41fe22afd74a9fb286e349cf77cbe/_data:/var/www/myapp
root@myapp-app2:~# docker container inspect -f '{{range .Mounts}}{{.Type}}:{{.Source}}:{{.Destination}}{{println}}{{ end }}' root_myapp-code_1
volume:/var/lib/docker/volumes/6dfeffc141172fc3241c3a8b0d11be2348f41fe22afd74a9fb286e349cf77cbe/_data:/var/www/myapp
编辑:添加输出
输出自docker container inspect
root@myapp-app2:~# docker container inspect root_myapp-fpm_1
[
{
"Id": "4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5",
"Created": "2020-03-03T11:00:30.24298832Z",
"Path": "/bin/sh",
"Args": [
"-c",
"/myapp-app-start.sh"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 24657,
"ExitCode": 0,
"Error": "",
"StartedAt": "2021-01-19T23:01:06.178494041Z",
"FinishedAt": "2021-01-19T23:00:56.601585045Z"
},
"Image": "sha256:17b8f3c6bb49a1ad358aaffa9e53427bcbc9c72ca38a5ef9ebed92ca9e9e4c30",
"ResolvConfPath": "/var/lib/docker/containers/4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5/hostname",
"HostsPath": "/var/lib/docker/containers/4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5/hosts",
"LogPath": "/var/lib/docker/containers/4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5/4551cbfdb140315826d84536ff2339896f48aff4f168253dfe9624f4839571f5-json.log",
"Name": "/root_myapp-fpm_1",
"RestartCount": 0,
"Driver": "overlay",
"Platform": "linux",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "docker-default",
"ExecIDs": null,
"HostConfig": {
"Binds": [],
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "root_default",
"PortBindings": {
"9000/tcp": [
{
"HostIp": "10.135.17.193",
"HostPort": "9000"
}
]
},
"RestartPolicy": {
"Name": "always",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": [
"7713d5314f5812be835f23a69a5038c491b1eed8acbc7c05163db776caf9e294:rw"
],
"CapAdd": null,
"CapDrop": null,
"Capabilities": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "shareable",
"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": 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,
"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/overlay/6297868c76dc68fed8629f8b17f269e0ac4bed82d6a2e9aec9540f977e9475de/root",
"MergedDir": "/var/lib/docker/overlay/0e206d71b9812feea939b313258e6647e1b1039c6b10e2d081a005ff5188f306/merged",
"UpperDir": "/var/lib/docker/overlay/0e206d71b9812feea939b313258e6647e1b1039c6b10e2d081a005ff5188f306/upper",
"WorkDir": "/var/lib/docker/overlay/0e206d71b9812feea939b313258e6647e1b1039c6b10e2d081a005ff5188f306/work"
},
"Name": "overlay"
},
"Mounts": [
{
"Type": "volume",
"Name": "6dfeffc141172fc3241c3a8b0d11be2348f41fe22afd74a9fb286e349cf77cbe",
"Source": "/var/lib/docker/volumes/6dfeffc141172fc3241c3a8b0d11be2348f41fe22afd74a9fb286e349cf77cbe/_data",
"Destination": "/var/www/myapp",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
"Config": {
"Hostname": "4551cbfdb140",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"9000/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PHPIZE_DEPS=autoconf \t\tdpkg-dev \t\tfile \t\tg++ \t\tgcc \t\tlibc-dev \t\tmake \t\tpkg-config \t\tre2c",
"PHP_INI_DIR=/usr/local/etc/php",
"PHP_EXTRA_CONFIGURE_ARGS=--enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --disable-cgi",
"PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2",
"PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2",
"PHP_LDFLAGS=-Wl,-O1 -Wl,--hash-style=both -pie",
"GPG_KEYS=A917B1ECDA84AEC2B568FED6F50ABC807BD5DCD0 528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 1729F83938DA44E27BA0F4D3DBDB397470D12172",
"PHP_VERSION=7.1.30",
"PHP_URL=https://www.php.net/get/php-7.1.30.tar.xz/from/this/mirror",
"PHP_ASC_URL=https://www.php.net/get/php-7.1.30.tar.xz.asc/from/this/mirror",
"PHP_SHA256=6310599811536dbe87e4bcf212bf93196bdfaff519d0c821e4c0068efd096a7c",
"PHP_MD5="
],
"Cmd": null,
"Image": "128.18.125.254:5000/myapp-fpm:latest",
"Volumes": null,
"WorkingDir": "/var/www/html",
"Entrypoint": [
"/bin/sh",
"-c",
"/myapp-app-start.sh"
],
"OnBuild": null,
"Labels": {
"com.docker.compose.config-hash": "df8cddcbc8c7112eb8b18b2c1637146b8784597453297142fa56cd69e4ef8ff3",
"com.docker.compose.container-number": "1",
"com.docker.compose.oneoff": "False",
"com.docker.compose.project": "root",
"com.docker.compose.service": "myapp-fpm",
"com.docker.compose.version": "1.8.0"
},
"StopSignal": "SIGQUIT"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "25b66f536e29814970c16fc0f0518e6f5bb741db37ae4417d70ebff54110c512",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"9000/tcp": [
{
"HostIp": "10.135.17.193",
"HostPort": "9000"
}
]
},
"SandboxKey": "/var/run/docker/netns/25b66f536e29",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "",
"Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"MacAddress": "",
"Networks": {
"root_default": {
"IPAMConfig": null,
"Links": null,
"Aliases": [
"myapp-fpm",
"4551cbfdb140"
],
"NetworkID": "a6dd02493f7b5ba12701c5a73315b56ff3259edaad4ac27b7cbfd1182233d844",
"EndpointID": "00cdf1969d3835fd4f3e9b9face8b00c8255707656d285b754a4e19e90ae694e",
"Gateway": "172.18.0.1",
"IPAddress": "172.18.0.5",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:12:00:05",
"DriverOpts": null
}
}
}
}
]