现在就用这个拉扯我逐渐下降的发际线几个小时。
编辑:我的映像的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存储库中
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 \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
答案 0 :(得分:2)
我相信您会混淆3种不同的事物。
图像:用于创建容器的定义。由文件系统层和默认配置组成。这是由Dockerfile定义的。
容器:从图像创建的实例,程序员倾向于将其视为对象与类。该实例可能有许多配置选项被覆盖。
Docker Compose:用于解析具有所有配置选项的yml文件,以运行容器的集合。它还具有使用传递的Dockerfile启动映像构建的功能。
使用docker run
时,您将创建一个不使用任何撰写文件设置的容器。而且,如果您检查图像,您将只会看到Dockerfile构建的结果。如果要收集具有根据yml文件配置的网络和卷的容器的集合,则需要运行docker-compose
命令,例如:
docker-compose up -d
注意,我还建议在撰写文件中包含您的私人注册表的映像名称。然后,您可以运行docker-compose push
和其他节点,因此无需再次运行构建。