docker图像不包括所有设置



几个小时以来,我一直在用这个拉扯我日渐衰退的发际线。。

编辑:我的图像的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(到我的私人hub.docker.com repo(

docker push osomanden/debian-noah

一切都很好。没有错误,我是一个快乐的露营者。。图像完成,工作并推送至回购。

删除容器和图像以获得空的工作环境。

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 ttdpkg-dev ttfile ttg++ ttgcc ttlibc-dev ttmake ttpkg-config ttre2c",
"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 ttdpkg-dev ttfile ttg++ ttgcc ttlibc-dev ttmake ttpkg-config ttre2c",
"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

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

最新更新