目錄
一、理論
1.LNMP架構(gòu)
2.背景
3.Dockerfile部署LNMP
3.構(gòu)建Nginx鏡像
4.構(gòu)建MySQL容器
5.構(gòu)建PHP鏡像
6.啟動(dòng) wordpress 服務(wù)?
二、實(shí)驗(yàn)
?1.環(huán)境準(zhǔn)備
2.構(gòu)建Nginx鏡像
3.構(gòu)建MySQL容器
4.構(gòu)建PHP鏡像
5.啟動(dòng) wordpress 服務(wù)?
三、問(wèn)題
1.構(gòu)建nginx鏡像報(bào)錯(cuò)
2.構(gòu)建php鏡像報(bào)錯(cuò)
2.生成PHP鏡像一直為Exited狀態(tài)
3.wordpress頁(yè)面無(wú)法跳轉(zhuǎn)
4.如何將運(yùn)行中的?docker容器保存為 docker 鏡像并保存到本地tar包
?四、總結(jié)
?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758741.html
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-758741.html
?
?
一、理論
1.LNMP架構(gòu)
(1)架構(gòu)
搭建一個(gè)lnmp環(huán)境,需要涉及到兩個(gè)目錄結(jié)構(gòu)。一個(gè)是Dockerfile配置的目錄結(jié)構(gòu),另一個(gè)是最終lnmp運(yùn)行的目錄結(jié)構(gòu)。Dockerfile配置目錄主要存放Dockerfile構(gòu)建腳本和一些配置文件,lnmp運(yùn)行目錄主要存放程序運(yùn)行產(chǎn)生的一些數(shù)據(jù),比如mysql數(shù)據(jù)等。
以下是此次Dockerfile配置的目錄結(jié)構(gòu),包括了nginx、php、mysql的配置文件。
?
lnmp
- nginx
- Dockerfile
- nginx.conf
- sites-enabled
- default.conf
...
- php
- Dockerfile
- php.ini
- php-fpm.conf
- www.conf
- mysql
- Dockerfile
- mysqld.cnf
?
?
2.背景
(1)項(xiàng)目環(huán)境
公司在實(shí)際的生產(chǎn)環(huán)境中,需要使用 Docker 技術(shù)在一臺(tái)主機(jī)上創(chuàng)建 LNMP 服務(wù)并運(yùn)行 Wordpress 網(wǎng)站平臺(tái)。然后對(duì)此服務(wù)進(jìn)行相關(guān)的性能調(diào)優(yōu)和管理工作。
(2)所有安裝包下載
nginx:
nginx:下載
MySQL:
MySQL :: MySQL 下載
PHP:
PHP: 下載
?
(3)任務(wù)需求
使用 Docker 構(gòu)建 LNMP 環(huán)境并運(yùn)行 Wordpress 網(wǎng)站平臺(tái)
限制 Nginx 容器最多使用 500MB 的內(nèi)存和 1G 的 Swap
限制 Mysql 容器寫(xiě) /dev/sda 的速率為 10 MB/s
將所有容器進(jìn)行快照,然后將 Docker 鏡像打包成 tar 包備份到本地
?
3.Dockerfile部署LNMP
(1)關(guān)閉防火墻
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
先自定義網(wǎng)絡(luò),再使用指定IP運(yùn)行docker
是LNMP各組件處于同一網(wǎng)段
docker network create --subnet=172.20.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
Docker各組件的ip為:
容器 | 操作系統(tǒng) | IP地址 | 主要軟件 |
nginx | CentOS 7 | 172.20.0.10 | Docker-Nginx |
mysql | CentOS 7 | 172.20.0.20 | Docker-Mysql |
php | CentOS 7 | 172.20.0.30 | Docker-php ? |
?
?此實(shí)驗(yàn)所需的軟件有:
mysql-boost-5.7.20.tar.gz
nginx-1.12.0.tar.gz
php-7.1.10.tar.bz2
wordpress-4.9.4-zh_CN.tar.gz
檢測(cè)網(wǎng)絡(luò):
[root@localhost nginx]# docker network ls
NETWORK ID NAME DRIVER SCOPE
67e4b5a96733 bridge bridge local
f0c0eb06bea1 host host local
74f81b65c02c mynetwork bridge local
f20ccdc6d825 none null local
[root@localhost nginx]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:58ff:fe04:a8bd prefixlen 64 scopeid 0x20<link>
ether 02:42:58:04:a8:bd txqueuelen 0 (Ethernet)
RX packets 15632 bytes 631663 (616.8 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 23932 bytes 92428320 (88.1 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
docker1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.20.0.1 netmask 255.255.0.0 broadcast 172.20.255.255
inet6 fe80::42:47ff:fe2b:be52 prefixlen 64 scopeid 0x20<link>
ether 02:42:47:2b:be:52 txqueuelen 0 (Ethernet)
RX packets 7 bytes 1189 (1.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 2393 (2.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
?
3.構(gòu)建Nginx鏡像
(1)?創(chuàng)建nginx的工作目錄
mkdir /opt/nginx
cd /opt/nginx/
(2)?上傳 nginx-1.12.0.tar.gz、wordpress-4.9.4-zh_CN.tar.gz 到 /opt/nginx/ 目錄中
[root@localhost nginx]# rz -E
rz waiting to receive.
[root@localhost nginx]# ls
Dockerfile nginx-1.12.0.tar.gz nginx.conf run.sh wordpress-4.9.4-zh_CN.tar.gz
(3)編輯Dockerfile配置文件
vim Dockerfile
FROM centos:7
MAINTAINER this is nginx image <lnmp>
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module;make -j 4 && make install
ENV PATH /usr/local/nginx/sbin:$PATH
ADD nginx.conf /usr/local/nginx/conf/
ADD wordpress-4.9.4-zh_CN.tar.gz /usr/local/nginx/html
RUN chmod 777 -R /usr/local/nginx/html/
EXPOSE 80
VOLUME [ "/usr/local/nginx/html/" ]
CMD [ "/usr/local/nginx/sbin/nginx","-g","daemon off;" ]
(4)?準(zhǔn)備Dockerfile文件中所需要的其他配置文件
vim nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 80;
server_name localhost;
charset utf-8;
location / {
root html;
index index.html index.php;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root html;
fastcgi_pass 172.20.0.30:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}
}
}
(5)?構(gòu)建nginx鏡像
docker build -t nginx:lnmp .
(6)?啟動(dòng)Nginx容器
docker run -d --name nginx -p 80:80 -m 500m --memory-swap 1g --net mynetwork --ip 172.20.0.10 nginx:lnmp
(7)查看
docker inspect nginx
"Networks": {
"mynetwork": {
"IPAMConfig": {
"IPv4Address": "172.20.0.10"
(8)驗(yàn)證nginx
curl http://192.168.204.140:80
?
4.構(gòu)建MySQL容器
(1)?創(chuàng)建MySQL工作目錄
mkdir /opt/mysqld
cd /opt/mysqld
(2)?上傳 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目錄中
[root@localhost mysql]# rz -E
rz waiting to receive.
[root@localhost mysql]# ls
mysql-boost-5.7.20.tar.gz
(3)?編輯Dockerfile文件
vim Dockerfile
FROM centos:7
MAINTAINER this is mysql image <lnmp>
RUN yum -y install ncurses ncurses-devel bison cmake pcre-devel zlib-devel gcc gcc-c++ make;useradd -M -s /sbin/nologin mysql
ADD mysql-boost-5.7.20.tar.gz /usr/local/src/
WORKDIR /usr/local/src/mysql-5.7.20/
RUN cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \
-DSYSCONFDIR=/etc \
-DSYSTEMD_PID_DIR=/usr/local/mysql \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DWITH_BOOST=boost \
-DWITH_SYSTEMD=1;make -j4;make install
ADD my.cnf /etc/my.cnf
EXPOSE 3306
RUN chown -R mysql:mysql /usr/local/mysql/;chown mysql:mysql /etc/my.cnf
WORKDIR /usr/local/mysql/bin/
RUN ./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data;cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/;systemctl enable mysqld
ENV PATH=/usr/local/mysql/bin:/usr/local/mysql/lib:$PATH
VOLUME [ "/usr/local/mysql" ]
CMD ["/usr/sbin/init"]
(4)編輯mysql的配置文件
vim my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
?
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
?
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES
(5)編輯MySQL的啟動(dòng)腳本
vim run.sh
#!/bin/bash
/usr/local/mysql/bin/mysqld
systemctl enable mysqld
(6)構(gòu)建MySQL鏡像
docker build -t mysql:lnmp .
(7)啟動(dòng)MySQL鏡像
docker run --name=mysql -d --privileged --device-write-bps /dev/sda:10M -v /usr/local/mysql --net mynetwork --ip 172.20.0.20 mysql:lnmp
(8)驗(yàn)證 mysql?
[root@localhost mysql]# docker exec -it mysql bash
[root@75e85cb863da bin]# systemctl status mysqld
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: activating (start) since Fri 2023-08-18 06:15:20 UTC; 1min 54s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 99 ExecStart=/usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/mysql/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
Process: 80 ExecStartPre=/usr/local/mysql/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
CGroup: /docker/75e85cb863da16ddb6d557159d0a946fc2841da58683486ec8781464bbf19a8d/system.slice/mysqld.service
└─101 /usr/local/mysql/bin/mysqld --daemonize --pid-file=/usr/local/my...
?
5.構(gòu)建PHP鏡像
(1)?創(chuàng)建工作目錄
mkdir /opt/php
cd /opt/php
(2)上傳 php-7.1.10.tar.bz2 到 /opt/php 目錄中
[root@localhost php]# ls
[root@localhost php]# rz -E
rz waiting to receive.
[root@localhost php]# ls
php-7.1.10.tar.bz2 php-fpm.conf php.ini www.conf
(3)編輯Dockerfile文件
vim Dockerfile
FROM centos:7
MAINTAINER this is php image <lnmp>
RUN yum install -y gd \
libjpeg libjpeg-devel \
libpng libpng-devel \
freetype freetype-devel \
libxml2 libxml2-devel \
zlib zlib-devel \
curl curl-devel \
openssl openssl-devel \
gcc gcc-c++ make pcre-devel;useradd -M -s /sbin/nologin nginx
ADD php-7.1.10.tar.bz2 /usr/local/src/
WORKDIR /usr/local/src/php-7.1.10
RUN ./configure \
--prefix=/usr/local/php \
--with-mysql-sock=/usr/local/mysql/mysql.sock \
--with-mysqli \
--with-zlib \
--with-curl \
--with-gd \
--with-jpeg-dir \
--with-png-dir \
--with-freetype-dir \
--with-openssl \
--enable-fpm \
--enable-mbstring \
--enable-xml \
--enable-session \
--enable-ftp \
--enable-pdo \
--enable-tokenizer \
--enable-zip ; make -j 4 ; make install
ENV PATH /usr/local/php/bin:/usr/local/php/sbin:$PATH
ADD php.ini /usr/local/php/lib/
ADD php-fpm.conf /usr/local/php/etc/
ADD www.conf /usr/local/php/etc/php-fpm.d/
EXPOSE 9000
CMD /usr/local/php/sbin/php-fpm -F
(4)準(zhǔn)備Dockerfile需要的PHP配置文件
①配置php.ini文件
vim php.ini
#939行,取消注釋,修改
date.timezone = Asia/Shanghai
#1170行,修改
mysqli.default_socket = /usr/local/mysql/mysql.sock
[root@benet23 php]# egrep -v "^;" php.ini | egrep -v "^$"
[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
unserialize_callback_func =
serialize_precision = -1
disable_functions =
disable_classes =
zend.enable_gc = On
expose_php = On
max_execution_time = 30
max_input_time = 60
memory_limit = 128M
error_reporting = E_ALL
display_errors = On
display_startup_errors = On
log_errors = On
log_errors_max_len = 1024
ignore_repeated_errors = Off
ignore_repeated_source = Off
report_memleaks = On
track_errors = On
html_errors = On
variables_order = "GPCS"
request_order = "GP"
register_argc_argv = Off
auto_globals_jit = On
post_max_size = 8M
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
default_charset = "UTF-8"
doc_root =
user_dir =
enable_dl = Off
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60
[CLI Server]
cli_server.color = On
[Date]
date.timezone = Asia/Shanghai
[filter]
[iconv]
[intl]
[sqlite3]
[Pcre]
[Pdo]
[Pdo_mysql]
pdo_mysql.cache_size = 2000
pdo_mysql.default_socket=
[Phar]
[mail function]
SMTP = localhost
smtp_port = 25
mail.add_x_header = On
[SQL]
sql.safe_mode = Off
[ODBC]
odbc.allow_persistent = On
odbc.check_persistent = On
odbc.max_persistent = -1
odbc.max_links = -1
odbc.defaultlrl = 4096
odbc.defaultbinmode = 1
[Interbase]
ibase.allow_persistent = 1
ibase.max_persistent = -1
ibase.max_links = -1
ibase.timestampformat = "%Y-%m-%d %H:%M:%S"
ibase.dateformat = "%Y-%m-%d"
ibase.timeformat = "%H:%M:%S"
[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.default_socket = /usr/local/mysql/mysql.sock
mysqli.default_host =
mysqli.default_user =
mysqli.default_pw =
mysqli.reconnect = Off
[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = On
[OCI8]
[PostgreSQL]
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
[bcmath]
bcmath.scale = 0
[browscap]
[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.referer_check =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.sid_length = 26
session.trans_sid_tags = "a=href,area=href,frame=src,form="
session.sid_bits_per_character = 5
[Assertion]
zend.assertions = 1
[COM]
[mbstring]
[gd]
[exif]
[Tidy]
tidy.clean_output = Off
[soap]
soap.wsdl_cache_enabled=1
soap.wsdl_cache_dir="/tmp"
soap.wsdl_cache_ttl=86400
soap.wsdl_cache_limit = 5
[sysvshm]
[ldap]
ldap.max_links = -1
[mcrypt]
[dba]
[opcache]
[curl]
[openssl]
②配置php-fpm.conf文件
vim php-fpm.conf
#17行,刪除注釋符號(hào)“;”
pid = run/php-fpm.pid
[root@docker php]# egrep -v "^;" php-fpm.conf | egrep -v "^$"
[global]
pid = run/php-fpm.pid
include=/usr/local/php/etc/php-fpm.d/*.conf
③配置www.conf文件
vim www.conf
#23、24行,修改用戶和組
user = nginx
group = nginx
#36行,修改監(jiān)聽(tīng)I(yíng)P和端口為容器IP:9000端口
listen = 172.20.0.30:9000
[root@docker php]# egrep -v "^;" www.conf | egrep -v "^$"
[www]
user = nginx
group = nginx
listen = 172.20.0.30:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
(5)構(gòu)建php鏡像
docker build -t php:lnmp .
(6)啟動(dòng)PHP鏡像
注意:此時(shí)MySQL容器要處于運(yùn)行的狀態(tài)
docker run -itd --name php --net mynetwork --ip 172.20.0.30 -p 9000:9000 --volumes-from nginx --volumes-from mysql php:lnmp
?
(7) 驗(yàn)證php
①進(jìn)入php容器
[root@localhost php]# docker exec -it php bash
[root@12a35bf91472 php-7.1.10]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 113028 7520 pts/0 Ss+ 07:01 0:00 php-fpm: master process (/usr/local/php/etc/php-fpm.conf)
nginx 7 0.0 0.0 113028 3772 pts/0 S+ 07:01 0:00 php-fpm: pool www
nginx 8 0.0 0.0 113028 3772 pts/0 S+ 07:01 0:00 php-fpm: pool www
root 9 0.6 0.0 11828 1892 pts/1 Ss 07:02 0:00 bash
root 23 0.0 0.0 51732 1724 pts/1 R+ 07:02 0:00 ps -aux
?
6.啟動(dòng) wordpress 服務(wù)?
(1)?mysql 授權(quán)
進(jìn)入 mysql 容器
[root@75e85cb863da bin]# mysql -u root -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.7.20 Source distribution
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> create database wordpress;
Query OK, 1 row affected (0.01 sec)
mysql> grant all privileges on wordpress.* to 'wordpress'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.01 sec)
mysql> grant all privileges on *.* to 'root'@'%' identified by '123456';
Query OK, 0 rows affected, 1 warning (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
mysql>
瀏覽器訪問(wèn):
部署
http://192.168.204.140/wordpress/wp-admin/setup-config.php
?
?
?
二、實(shí)驗(yàn)
?1.環(huán)境準(zhǔn)備
(1)關(guān)閉防火墻
先自定義網(wǎng)絡(luò),再使用指定IP運(yùn)行docker
是LNMP各組件處于同一網(wǎng)段
?
?
?
?
Docker各組件的ip為:
?
?
2.構(gòu)建Nginx鏡像
(1)?創(chuàng)建nginx的工作目錄
(2)?上傳 軟件包到 /opt/nginx/ 目錄中
?
?
(3)編輯Dockerfile配置文件
?
(4)?準(zhǔn)備Dockerfile文件中所需要的其他配置文件
?
取消注釋,指定PHP網(wǎng)頁(yè)文件、指定IP和端口號(hào)
?
(5)?構(gòu)建nginx鏡像
?
(6)?啟動(dòng)Nginx容器
?(7)查看?
?
?(8)驗(yàn)證?nginx?
?
?
?
3.構(gòu)建MySQL容器
(1)?創(chuàng)建MySQL工作目錄
?
(2)?上傳 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目錄中
?
?
(3)?編輯Dockerfile文件
?
(4)編輯mysql的配置文件
?
(5)構(gòu)建MySQL鏡像
?
(6)啟動(dòng)MySQL鏡像
?
?
?
(7)驗(yàn)證 mysql?
?
?
4.構(gòu)建PHP鏡像
(1)?創(chuàng)建工作目錄
?
(2)上傳 php-7.1.10.tar.bz2 到 /opt/php 目錄中
?
(3)編輯Dockerfile文件
?
?
(4)準(zhǔn)備Dockerfile需要的PHP配置文件
?
(5)構(gòu)建php鏡像
????????
?
(6)啟動(dòng)PHP鏡像
注意:此時(shí)MySQL容器要處于運(yùn)行的狀態(tài)
?
?查看,php鏡像啟動(dòng)成功
?
?
(7) 驗(yàn)證php
?
?
5.啟動(dòng) wordpress 服務(wù)?
(1)mysql 授權(quán)
進(jìn)入mysql容器,登錄數(shù)據(jù)庫(kù)???????
?
(2) 瀏覽器訪問(wèn)測(cè)試
http://192.168.204.140/wordpress/wp-admin/setup-config.php
進(jìn)入配置頁(yè)面
?輸入用戶名和密碼
?現(xiàn)在安裝
?設(shè)置用戶名和密碼
?
點(diǎn)擊 登錄
?登錄成功
?進(jìn)入系統(tǒng)
http://192.168.204.140/wordpress/wp-admin/
?首頁(yè)展示
?
?
三、問(wèn)題
1.構(gòu)建nginx鏡像報(bào)錯(cuò)
(1)報(bào)錯(cuò)
?(2)原因分析
存放的wordpress版本錯(cuò)誤
(3)解決方法
重新上傳(正確的為4.9.4)
?
2.構(gòu)建php鏡像報(bào)錯(cuò)
(1)報(bào)錯(cuò)
?
?(2)原因分析
存放的php版本錯(cuò)誤
(3)解決方法
重新上傳(正確的為bz2)
?
2.生成PHP鏡像一直為Exited狀態(tài)
(1)報(bào)錯(cuò)
PHP鏡像一直為Exited狀態(tài)
查看日志
?(2)原因分析
無(wú)法監(jiān)聽(tīng)正確地址,需要修改監(jiān)聽(tīng)地址
(3)修改配置文件???????
?
?
3.wordpress頁(yè)面無(wú)法跳轉(zhuǎn)
(1)報(bào)錯(cuò)
訪問(wèn)頁(yè)面無(wú)法跳轉(zhuǎn)wordoress
?
(2)原因分析
?nginx配置文件反向代理地址填寫(xiě)錯(cuò)誤,需要修改
(3)修改
?
4.如何將運(yùn)行中的?docker容器保存為 docker 鏡像并保存到本地tar包
(1)方法
1、docker commit <容器id> <鏡像名>:<tag> ---- 將容器保存成鏡像,tag比如說(shuō)latest
保存后 docker images 便可以看到鏡像
2、docker save -o <tar包名>.tar <鏡像名>:<tag> ---- 將鏡像保存為.tar文件,默認(rèn)保存在當(dāng)前目錄
(2)從 tar 包導(dǎo)入docker鏡像
1、docker load -i <tar包名>.tar ---- 從 tar 包導(dǎo)入鏡像
導(dǎo)入鏡像后,通過(guò) docker images 便可看到導(dǎo)入的鏡像。
2、docker run -itd -p <本地端口>:<容器端口> <鏡像名>:<tag> ---- 通過(guò)鏡像起容器
(3)案例「僅保存到tar包」
#查看容器ID
[root@localhost nginx]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8e4a9fe69ef3 nginx:lnmp "/usr/local/nginx/sb…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, :::80->80/tcp nginx
a4a0028e17e9 php:lnmp "/bin/sh -c '/usr/lo…" About an hour ago Up About an hour 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp php
75e85cb863da mysql:lnmp "/usr/sbin/init" 3 hours ago Up 3 hours 3306/tcp mysql
# 將容器保存成鏡像
[root@localhost nginx]# docker commit 8e4a9fe69ef3 jiajianwei/wordpress:nginx
sha256:38b898818fd95029b914009ceba88c54bd16bc5d1b03500127f14a1210cd757e
[root@localhost nginx]# docker commit a4a0028e17e9 jiajianwei/wordpress:php
sha256:73c263cec3817fe320b10ef81165f9516b7209b21efd7c9cea55ba7cb2b3b996
[root@localhost nginx]# docker commit 75e85cb863da jiajianwei/wordpress:mysql
sha256:04bd50e63925df7e7c56e2bb411376510619f78a989d0eedd33fad3b3a0a927b
#查看鏡像
[root@localhost nginx]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jiajianwei/wordpress mysql 04bd50e63925 4 seconds ago 10.1GB
jiajianwei/wordpress php 73c263cec381 25 seconds ago 1.35GB
jiajianwei/wordpress nginx 38b898818fd9 47 seconds ago 598MB
nginx lnmp a01cdeeb3075 About an hour ago 598MB
php lnmp 9e5e554f9300 2 hours ago 1.35GB
mysql lnmp b61c11e30aed 3 hours ago 10.1GB
[root@localhost appsVolumn]# docker save -o mywordpress_nginx_config.tar jiajianwei/wordpress:nginx
[root@localhost appsVolumn]# docker save -o mywordpress_mysql_config.tar jiajianwei/wordpress:mysql
[root@localhost appsVolumn]# docker save -o mywordpress_php_config.tar jiajianwei/wordpress:php
[root@localhost appsVolumn]# ls
mywordpress_mysql_config.tar mywordpress_nginx_config.tar mywordpress_php_config.tar
?
?
?四、總結(jié)
快速檢索PHP配置文件:
egrep -v "^(.)*#(.)*$" nginx.conf | grep -v "^$"
egrep -v "^;" php.ini | egrep -v "^$"
egrep -v "^;" www.conf | egrep -v "^$"
讀取容器共享信息:
#表示讀取nginx容器的共享信息
--volumes-from nginx:
#表示讀取mysql容器的共享信息
--volumes-from mysql:
?
?
?
?
?
到了這里,關(guān)于Docker容器與虛擬化技術(shù):Dockerfile部署LNMP的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!