docker 图像不包括所有设置

标签 docker docker-compose

几个小时以来一直在用这个拉扯我下降的发际线..
编辑:我的图像的 Dockerfile:

FROM php:7.4-apache AS webserver
RUN docker-php-ext-install mysqli
RUN apt-get update \
    && apt-get install -y apt-utils \
    && apt-get install -y libzip-dev \
    && apt-get install -y zlib1g-dev \
    && rm -rf /var/lib/apt/lists/*
#bcmath bz2 calendar ctype curl dba dom enchant exif ffi fileinfo filter ftp gd gettext gmp hash iconv imap intl json ldap mbstring mysqli oci8 odbc opcache pcntl pdo pdo_dblib pdo_firebird pdo_mysql pdo_oci pdo_odbc pdo_pgsql pdo_sqlite pgsql phar posix pspell readline reflection session shmop simplexml snmp soap sockets sodium spl standard sysvmsg sysvsem sysvshm tidy tokenizer xml xmlreader xmlrpc xmlwriter xsl zend_test zip
COPY install-php-extensions /usr/local/bin/
RUN chmod uga+x /usr/local/bin/install-php-extensions && sync
RUN /usr/local/bin/install-php-extensions soap openssl gd pdo_mysql bcmath curl exif gettext gmp iconv imap json ldap mbstring mysqli session
COPY conf/custom_php.ini /usr/local/etc/php/conf.d/custom.ini

# Copy Data
COPY dump/gnf_noah.sql /docker-entrypoint-initdb.d/
COPY www/ /var/www/html/

ENV MYSQL_HOST=db
# db As defined in docker-compose.yaml
ENV MYSQL_ROOT_PASSWORD=root_password!
ENV MYSQL_USER=gnf_user
ENV MYSQL_PASSWORD=user_password!
ENV MYSQL_DATABASE=gnf_noah
有一个包含以下内容的 docker-compose.yaml:
networks:
  backend: {}
  frontend: {}
services:
  db:
    command: --default-authentication-plugin=mysql_native_password
    environment:
      MYSQL_DATABASE: gnf_noah
      MYSQL_PASSWORD: user_password!
      MYSQL_ROOT_PASSWORD: root_password!
      MYSQL_USER: gnf_user
    image: mysql:latest
    networks:
      backend: null
    ports:
    - published: 3306
      target: 3306
    restart: always
    volumes:
    - /home/lakn/noahbuild/dump:/docker-entrypoint-initdb.d:rw
    - /home/lakn/noahbuild/conf/my.cnf:/etc/mysql/conf.d/my.cnf:rw
    - db_data:/var/lib/mysql:rw
  phpmyadmin:
    depends_on:
    - db
    environment:
      MYSQL_PASSWORD: user_password!
      MYSQL_ROOT_PASSWORD: root_password!
      MYSQL_USER: gnf_user
    image: phpmyadmin/phpmyadmin
    links:
    - db:db
    networks:
      backend: null
      frontend: null
    ports:
    - published: 30008
      target: 80
    - target: 80
  www:
    build:
      context: /home/lakn/noahbuild
    depends_on:
    - db
    environment:
      MYSQL_DATABASE: gnf_noah
      MYSQL_PASSWORD: user_password!
      MYSQL_ROOT_PASSWORD: root_password!
      MYSQL_USER: gnf_user
    expose:
    - '80'
    - '443'
    links:
    - db
    networks:
      backend: null
      frontend: null
    ports:
    - published: 30001
      target: 80
    - published: 30443
      target: 443
    restart: always
    volumes:
    - /home/lakn/noahbuild/www:/var/www/html:rw
version: '3.2'
volumes:
  db_data: {}
(除了更改密码)它在做时有效
#docker-compose up --build
我得到一些图像:
# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             SIZE
noahbuild_www           latest              34ef23e328ca        9 minutes ago       510MB
osomanden/debian-noah   latest              a3014cbf2c4b        23 minutes ago      510MB
php                     7.4-apache          1b97367f8c10        6 days ago          414MB
mysql                   latest              0d64f46acfd1        8 days ago          544MB
phpmyadmin/phpmyadmin   latest              9d4ec4bbd5e5        12 days ago         469MB
我将图像标记到我的存储库名称。
docker tag noahbuild_www osomanden/debian-noah
所以,我上传了 osomanden/debian-noah(到我的私有(private) hub.docker.com 仓库)
docker push osomanden/debian-noah
都好。没有错误,我是一个快乐的露营者。图像完成,工作并推送到 repo 。
删除容器和图像以获得空的工作环境。
docker rm -f $(docker ps -a -q)
和图像
docker rmi $(docker images -q)
空环境,我现在拉取之前的镜像:
docker pull osomanden/debian-noah
并运行它:
# docker run osomanden/debian-noah
并得到这个结果:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu Aug 13 09:18:17.375642 2020] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.38 (Debian) PHP/7.4.9 configured -- resuming normal operations
[Thu Aug 13 09:18:17.378541 2020] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
数据库、phpmyadmin 等在哪里?
做检查:
docker inspect osomanden/debian-noah
给出:
# docker inspect osomanden/debian-noah
[
    {
        "Id": "sha256:a3014cbf2c4bcbbc32c2481cc52c0d0d6394e956fc49ab0f7a2b61533e199f65",
        "RepoTags": [
            "osomanden/debian-noah:latest"
        ],
        "RepoDigests": [
            "osomanden/debian-noah@sha256:880a719366df1075cedf88484df98c1e7e5040d2a321f000c831d532156065ac"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-08-13T08:48:58.847245858Z",
        "Container": "ebd8c3d7c9f37c7fda19d750060c4d90e434519e83277806b484566a94b2d3e7",
        "ContainerConfig": {
            "Hostname": "ebd8c3d7c9f3",
            "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",
                "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",
                "APACHE_CONFDIR=/etc/apache2",
                "APACHE_ENVVARS=/etc/apache2/envvars",
                "PHP_EXTRA_BUILD_DEPS=apache2-dev",
                "PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi",
                "PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",
                "PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",
                "PHP_LDFLAGS=-Wl,-O1 -pie",
                "GPG_KEYS=42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312",
                "PHP_VERSION=7.4.9",
                "PHP_URL=https://www.php.net/distributions/php-7.4.9.tar.xz",
                "PHP_ASC_URL=https://www.php.net/distributions/php-7.4.9.tar.xz.asc",
                "PHP_SHA256=23733f4a608ad1bebdcecf0138ebc5fd57cf20d6e0915f98a9444c3f747dc57b",
                "PHP_MD5=",
                "MYSQL_HOST=db",
                "MYSQL_ROOT_PASSWORD=root_password!",
                "MYSQL_USER=gnf_user",
                "MYSQL_PASSWORD=user_password!",
                "MYSQL_DATABASE=gnf_noah"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "ENV MYSQL_DATABASE=gnf_noah"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:d8771dd6a3167458e460b9703d15d99719252f9d0682a032205f0fa8a2f222e4",
            "Volumes": null,
            "WorkingDir": "/var/www/html",
            "Entrypoint": [
                "docker-php-entrypoint"
            ],
            "OnBuild": null,
            "Labels": {},
            "StopSignal": "SIGWINCH"
        },
        "DockerVersion": "19.03.12",
        "Author": "",
        "Config": {
            "Hostname": "",
            "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",
                "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",
                "APACHE_CONFDIR=/etc/apache2",
                "APACHE_ENVVARS=/etc/apache2/envvars",
                "PHP_EXTRA_BUILD_DEPS=apache2-dev",
                "PHP_EXTRA_CONFIGURE_ARGS=--with-apxs2 --disable-cgi",
                "PHP_CFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",
                "PHP_CPPFLAGS=-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64",
                "PHP_LDFLAGS=-Wl,-O1 -pie",
                "GPG_KEYS=42670A7FE4D0441C8E4632349E4FDC074A4EF02D 5A52880781F755608BF815FC910DEB46F53EA312",
                "PHP_VERSION=7.4.9",
                "PHP_URL=https://www.php.net/distributions/php-7.4.9.tar.xz",
                "PHP_ASC_URL=https://www.php.net/distributions/php-7.4.9.tar.xz.asc",
                "PHP_SHA256=23733f4a608ad1bebdcecf0138ebc5fd57cf20d6e0915f98a9444c3f747dc57b",
                "PHP_MD5=",
                "MYSQL_HOST=db",
                "MYSQL_ROOT_PASSWORD=root_password!",
                "MYSQL_USER=gnf_user",
                "MYSQL_PASSWORD=user_password!",
                "MYSQL_DATABASE=gnf_noah"
            ],
            "Cmd": [
                "apache2-foreground"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:d8771dd6a3167458e460b9703d15d99719252f9d0682a032205f0fa8a2f222e4",
            "Volumes": null,
            "WorkingDir": "/var/www/html",
            "Entrypoint": [
                "docker-php-entrypoint"
            ],
            "OnBuild": null,
            "Labels": null,
            "StopSignal": "SIGWINCH"
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 509809162,
        "VirtualSize": 509809162,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/e46d389e9ba8ddeb16041400fb510fee9b8d85df1bd630880b6fb5ed8666aed4/diff:/var/lib/docker/overlay2/eadef676c489b43e437596db05f122b67f359cf4c90c4b0e0ad14442f8c55283/diff:/var/lib/docker/overlay2/d1637c8b4d880da8be74b3c8aee2f7335d1893e6a8451be7e1b6a74a5c962c21/diff:/var/lib/docker/overlay2/4b115610d8d607cac54862fdc60599d7070a3d33270ccc2ff35f97e966a8fd37/diff:/var/lib/docker/overlay2/46d70ce45a04c8db38320446726b23d3cdf082ced389fa5bf3c6268488e84448/diff:/var/lib/docker/overlay2/72372ffe4c5551a13f585f6c16cd2f72ebd7e17718d26b505153ab31c115eafc/diff:/var/lib/docker/overlay2/7c54a13ee153c3b6498d98ef3c236a64cb549dd1437b65085a216504974daade/diff:/var/lib/docker/overlay2/a258066f2bbc54d7a313f6e9f5b7ff3d89bf454ef5563ebff224177f94865090/diff:/var/lib/docker/overlay2/91e110fc4428ba40a51019260b4c909d7bb71d55ff5b27ee304e35b6226feef7/diff:/var/lib/docker/overlay2/275c8bfecd876ddd273990e90b3bd4ec79f355236e8c069f6a726902fa7c3439/diff:/var/lib/docker/overlay2/322d31691bdc0d16e7266a7bfaf401128c88124f7539f60dca6c1efb1fa655d7/diff:/var/lib/docker/overlay2/b47f2c38ee1913f8ee70171a664db86d25705478b3b030ed17364dc80dd0cf74/diff:/var/lib/docker/overlay2/0ae651690c8519329381cee847bc0860fa4a77df961aa5f04fbccab99b440062/diff:/var/lib/docker/overlay2/75ac057961490fbcb3c765c6cc1572e144620e03e017c81c6b1d548414a57e3a/diff:/var/lib/docker/overlay2/a65fe1b906f422ae16511fff9c54298fc7cb1a49b85546548a990f79fc95044c/diff:/var/lib/docker/overlay2/f22f0aff914419a3d28e99519aa26ccc586d042d945e637e954a0cc8c4444521/diff:/var/lib/docker/overlay2/e163c66142d1f0cf30b85d6a31f07abfc2cd419bf4e60fe8165b437481f00039/diff:/var/lib/docker/overlay2/4dcaa9ee8cc47c337fa0bcca662f7acbb884b22e12b4909eb0213a263613c9ed/diff:/var/lib/docker/overlay2/42f002b441a73ceb68e2615de318985b36afdd21c6b3ea75f33a9c84fd3e46d7/diff:/var/lib/docker/overlay2/6453968ccee37015c40301110c537d62327198141b18ddf62201f78610985175/diff",
                "MergedDir": "/var/lib/docker/overlay2/2554d9a6fd332d5dfc3d3c20ee06a4c4f3713a31a0be61fc05e7db44a7b32657/merged",
                "UpperDir": "/var/lib/docker/overlay2/2554d9a6fd332d5dfc3d3c20ee06a4c4f3713a31a0be61fc05e7db44a7b32657/diff",
                "WorkDir": "/var/lib/docker/overlay2/2554d9a6fd332d5dfc3d3c20ee06a4c4f3713a31a0be61fc05e7db44a7b32657/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:d0f104dc0a1f9c744b65b23b3fd4d4d3236b4656e67f776fe13f8ad8423b955c",
                "sha256:8bf7a47284aac0c2761a2a777da54bb40593f6dd53dd9625b79132630967e007",
                "sha256:de5ed450c2e9c7f71f7b7984c941f323f6484f6ebb9dc200bced161feafe0377",
                "sha256:65bff11b305bf56c86c73d895a6079158677f35c3dc5a6feec1f97d1f8230a97",
                "sha256:7edde2b8acef9f72eb9a6c7a8946b843420bd51f5097b64d10ac30fa396bb123",
                "sha256:b325a1cca10d4162df013dd6dc94d50d7fd196537f28df4248ead0951940bb8e",
                "sha256:c7ba9188a7f66fce22fbb8aeb5a029d1103b81a1fd38e7cd091839e0dd2c7e29",
                "sha256:c890d6fb7f00943fe075662ca0b142c46c2654057ed12baa39d391752f2dc429",
                "sha256:df61ee63abe40d703c763e0c64e0d3b00e3c79b57356880901577ee288d30dc1",
                "sha256:2facc097999b883eb29632f1c999ffdea6b5878ef227b532681c5af57e2bb3fe",
                "sha256:edc5481917da0bfc0ac40ac83c145beeb765a1bbf8d9da0a956d8b8329f380ff",
                "sha256:6fa199c4fdeb77bc1e2a89bf6d8c3d54a569119f9144389cce8f990c1b573098",
                "sha256:09b9e3584f90fa9fa1c246e06260b4ea27258236a40d74ebf96f40313e77fc55",
                "sha256:d7dd3a080c9ab2ffde19d7cfb85faf020e132a9ba7a616b2874fac09812260aa",
                "sha256:7e9b0f30ff95f95ef79d1f12edf4d57823c56d01faedda89c8c20601f9228635",
                "sha256:1bee028f5b3e5d1495ddc75ffe5d79529d0634917ae5a5e8e166d416bf41a1e3",
                "sha256:ded2df4620b28d8b88821c9d363f963ebcb5cdc6399cc1bbc01c52bfd47c79f8",
                "sha256:c603099ece17d8187c5bccefaa8964c77f96bc3d55a9f84e469d445f6d547985",
                "sha256:881bf6dc67e8fb52dbf396951a94a00b04629fc8fc4420fcfe0d6fed80c07fa0",
                "sha256:0ad79670460ea103f6f8f292af6cafadd0c52a4ef86c592b992c18359f57180e",
                "sha256:ff00ffefb91d54d78527b30a9826b698b2c910a33a6dd0038f6a5e9b784b30f1"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]
甚至我对端口 443 的暴露也消失了。
知道我做错了什么吗?
哦,顺便说一句:
#docker version
Client: Docker Engine - Community
 Version:           19.03.12
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        48a66213fe
 Built:             Mon Jun 22 15:45:50 2020
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.12
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.13.10
  Git commit:       48a66213fe
  Built:            Mon Jun 22 15:44:21 2020
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.13
  GitCommit:        7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc:
  Version:          1.0.0-rc10
  GitCommit:        dc9208a3303feef5b3839f4323d9beb36df0a9dd
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683

最佳答案

我相信你混淆了3个不同的东西。
图像:用于创建容器的定义。由文件系统层和默认配置组成。这是由 Dockerfile 定义的。
容器:从图像创建的实例,程序员倾向于将其视为对象与类。此实例可能覆盖了许多配置选项。
Docker Compose:用于解析具有所有配置选项的 yml 文件以运行容器集合。它还能够使用传递的 Dockerfile 启动镜像构建。
当您使用 docker run您正在创建一个不使用任何撰写文件设置的容器。如果你检查镜像,你只会看到 Dockerfile 的构建结果。如果要根据 yml 文件配置网络和卷的容器集合,则需要运行 docker-compose命令如:

docker-compose up -d
请注意,我还建议在撰写文件中包含您的私有(private)注册表的图像名称。然后你可以运行 docker-compose push和其他节点,因此不需要再次运行构建。

关于 docker 图像不包括所有设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63392019/

相关文章:

Docker-compose 安装 : No module named docker. 错误

docker - 如何在ENTRYPOINT dockerfile中访问构建参数

Docker:如果我在 docker-compose.yml 中声明卷,Nginx 不会运行

docker - 如何使用 wget 而不是 curl 进行 Docker 健康检查?

docker - 未找到入口点文件

reactjs - react : Module not found: Can't resolve 'react-html-parser'

docker - Gitlab CI : How to configure cypress e2e tests with multiple server instances?

docker - swarm 中的副本数不在工作节点中启动 (1/4)

docker - Reflex Golang与docker,docker-compose和makefile

docker - 如何从另一个 docker compose 文件运行 docker compose 文件?