国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker容器與虛擬化技術(shù):Dockerfile部署LNMP

這篇具有很好參考價(jià)值的文章主要介紹了Docker容器與虛擬化技術(shù):Dockerfile部署LNMP。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

目錄

一、理論

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

?

?

?

一、理論

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

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

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)閉防火墻

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

先自定義網(wǎng)絡(luò),再使用指定IP運(yùn)行docker

是LNMP各組件處于同一網(wǎng)段

?dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

Docker各組件的ip為:

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

2.構(gòu)建Nginx鏡像

(1)?創(chuàng)建nginx的工作目錄

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

(2)?上傳 軟件包到 /opt/nginx/ 目錄中

?dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(3)編輯Dockerfile配置文件dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(4)?準(zhǔn)備Dockerfile文件中所需要的其他配置文件

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

取消注釋,指定PHP網(wǎng)頁(yè)文件、指定IP和端口號(hào)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(5)?構(gòu)建nginx鏡像dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(6)?啟動(dòng)Nginx容器

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?(7)查看?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?(8)驗(yàn)證?nginx?dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

3.構(gòu)建MySQL容器

(1)?創(chuàng)建MySQL工作目錄

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

(2)?上傳 mysql-boost-5.7.20.tar.gz 到 /opt/mysqld 目錄中dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

(3)?編輯Dockerfile文件

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(4)編輯mysql的配置文件

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

(5)構(gòu)建MySQL鏡像dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(6)啟動(dòng)MySQL鏡像dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

?

(7)驗(yàn)證 mysql?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

4.構(gòu)建PHP鏡像

(1)?創(chuàng)建工作目錄dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(2)上傳 php-7.1.10.tar.bz2 到 /opt/php 目錄中

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(3)編輯Dockerfile文件

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

(4)準(zhǔn)備Dockerfile需要的PHP配置文件

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(5)構(gòu)建php鏡像dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

????????dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(6)啟動(dòng)PHP鏡像

注意:此時(shí)MySQL容器要處于運(yùn)行的狀態(tài)

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?查看,php鏡像啟動(dòng)成功

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(7) 驗(yàn)證php

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

5.啟動(dòng) wordpress 服務(wù)?

(1)mysql 授權(quán)

進(jìn)入mysql容器,登錄數(shù)據(jù)庫(kù)???????dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(2) 瀏覽器訪問(wèn)測(cè)試

http://192.168.204.140/wordpress/wp-admin/setup-config.php

進(jìn)入配置頁(yè)面

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?輸入用戶名和密碼

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?現(xiàn)在安裝

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?設(shè)置用戶名和密碼

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

點(diǎn)擊 登錄

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?登錄成功dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?進(jìn)入系統(tǒng)

http://192.168.204.140/wordpress/wp-admin/

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?首頁(yè)展示

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

三、問(wèn)題

1.構(gòu)建nginx鏡像報(bào)錯(cuò)

(1)報(bào)錯(cuò)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?(2)原因分析

存放的wordpress版本錯(cuò)誤

(3)解決方法

重新上傳(正確的為4.9.4)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

2.構(gòu)建php鏡像報(bào)錯(cuò)

(1)報(bào)錯(cuò)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?(2)原因分析

存放的php版本錯(cuò)誤

(3)解決方法

重新上傳(正確的為bz2)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

2.生成PHP鏡像一直為Exited狀態(tài)

(1)報(bào)錯(cuò)

PHP鏡像一直為Exited狀態(tài)

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

查看日志

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?(2)原因分析

無(wú)法監(jiān)聽(tīng)正確地址,需要修改監(jiān)聽(tīng)地址

(3)修改配置文件???????

?

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

3.wordpress頁(yè)面無(wú)法跳轉(zhuǎn)

(1)報(bào)錯(cuò)

訪問(wèn)頁(yè)面無(wú)法跳轉(zhuǎn)wordoress

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

(2)原因分析

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?nginx配置文件反向代理地址填寫(xiě)錯(cuò)誤,需要修改

(3)修改

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

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

dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維dockerfile lnmp,Docker容器與虛擬化技術(shù),docker,容器,運(yùn)維

?

?

?四、總結(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)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像操作

    Docker容器與虛擬化技術(shù):Docker架構(gòu)、鏡像操作

    目錄 一、理論 1.Doker概述 2.Docker核心概念 3.Docker安裝 4.Docker的鏡像管理命令 二、實(shí)驗(yàn) 1.Docker安裝 2.查看Docker信息 3.Docker的鏡像管理命令 三、問(wèn)題 1.如何注冊(cè)Docker賬號(hào) ?2.如何設(shè)置Docker公共存儲(chǔ)庫(kù) 四、總結(jié) (1) IT架構(gòu) 裸金屬 → 虛擬機(jī) → 容器→ 函數(shù)化、代碼化 云計(jì)算涌現(xiàn)出很

    2024年02月10日
    瀏覽(19)
  • Docker容器與虛擬化技術(shù):Docker-Compose

    Docker容器與虛擬化技術(shù):Docker-Compose

    目錄 一、理論 1.Docker-Compose 二、實(shí)驗(yàn) 1.?Docker Compose 安裝部署 2.Docker?Compose撰寫(xiě)nginx 鏡像 3.Docker?Compose撰寫(xiě)tomcat 鏡像 三、問(wèn)題 1.Docker Compose 和 Dockerfile 的區(qū)別 四、總結(jié) (1)使用場(chǎng)景 使用一個(gè)Dockerfile模板文件可以定義一個(gè)單獨(dú)的應(yīng)用容器,如果需要定義多個(gè)容器就需要服務(wù)

    2024年02月12日
    瀏覽(23)
  • Docker容器與虛擬化技術(shù):Docker consul 實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)

    Docker容器與虛擬化技術(shù):Docker consul 實(shí)現(xiàn)服務(wù)注冊(cè)與發(fā)現(xiàn)

    目錄 一、理論 1.Docker consul 二、實(shí)驗(yàn) 1.consul部署 2. consul-template部署 三、總結(jié) (1)服務(wù)注冊(cè)與發(fā)現(xiàn) 服務(wù)注冊(cè)與發(fā)現(xiàn)是微服務(wù)架構(gòu)中不可或缺的重要組件。起初服務(wù)都是單節(jié)點(diǎn)的,不保障高可用性,也不考慮服務(wù)的壓力承載,服務(wù)之間調(diào)用單純的通過(guò)接口訪問(wèn)。直到后來(lái)出現(xiàn)

    2024年02月11日
    瀏覽(26)
  • 架構(gòu)師之路 -- 虛擬化技術(shù)與容器Docker,rabbitmq面試題

    架構(gòu)師之路 -- 虛擬化技術(shù)與容器Docker,rabbitmq面試題

    通常架構(gòu)師們?yōu)榱颂岣呦到y(tǒng)及硬件資源的利用率引入了虛擬化技術(shù)。 虛擬化是一種資源管理技術(shù),它可以把各種實(shí)體資源抽像后再分隔,從而打破實(shí)體結(jié)構(gòu)的限制,最大程度的提高資源的利用率。 今天我們來(lái)聊一下傳統(tǒng)虛擬化技術(shù)和以Docker為代表的容器技術(shù)。 虛擬化 虛擬化

    2024年04月12日
    瀏覽(40)
  • 【Docker】Docker中Linux 容器、網(wǎng)絡(luò)虛擬化與虛擬局域網(wǎng)的技術(shù)特點(diǎn)詳細(xì)講解

    【Docker】Docker中Linux 容器、網(wǎng)絡(luò)虛擬化與虛擬局域網(wǎng)的技術(shù)特點(diǎn)詳細(xì)講解

    前言 Docker 是一個(gè) 開(kāi)源的應(yīng)用容器引擎 ,讓開(kāi)發(fā)者可以打包他們的應(yīng)用以及依賴包到一個(gè)可移植的容器中,然后發(fā)布到任何流行的 Linux或Windows 操作系統(tǒng)的機(jī)器上,也可以實(shí)現(xiàn)虛擬化,容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口。 ??作者簡(jiǎn)介: 熱愛(ài)跑步的恒川 ,致力于

    2024年02月09日
    瀏覽(23)
  • Docker從認(rèn)識(shí)到實(shí)踐再到底層原理(二-1)|容器技術(shù)發(fā)展史+虛擬化容器概念和簡(jiǎn)介

    Docker從認(rèn)識(shí)到實(shí)踐再到底層原理(二-1)|容器技術(shù)發(fā)展史+虛擬化容器概念和簡(jiǎn)介

    那么這里博主先安利一些干貨滿滿的專欄了! 首先是博主的高質(zhì)量博客的匯總,這個(gè)專欄里面的博客,都是博主最最用心寫(xiě)的一部分,干貨滿滿,希望對(duì)大家有幫助。 高質(zhì)量博客匯總 然后就是博主最近最花時(shí)間的一個(gè)專欄《Docker從認(rèn)識(shí)到實(shí)踐再到底層原理》希望大家多多關(guān)

    2024年02月09日
    瀏覽(45)
  • Docker 基礎(chǔ)知識(shí)解析:容器與傳統(tǒng)虛擬化對(duì)比:資源利用、啟動(dòng)時(shí)間、隔離性和部署效率

    Docker 基礎(chǔ)知識(shí)解析:容器與傳統(tǒng)虛擬化對(duì)比:資源利用、啟動(dòng)時(shí)間、隔離性和部署效率

    ???? 博主 libin9iOak帶您 Go to New World.??? ?? 個(gè)人主頁(yè)——libin9iOak的博客?? ?? 《面試題大全》 文章圖文并茂??生動(dòng)形象??簡(jiǎn)單易學(xué)!歡迎大家來(lái)踩踩~?? ?? 《IDEA開(kāi)發(fā)秘籍》學(xué)會(huì)IDEA常用操作,工作效率翻倍~?? ???? 希望本文能夠給您帶來(lái)一定的幫助??文章粗淺,敬

    2024年02月16日
    瀏覽(58)
  • 【云計(jì)算學(xué)習(xí)教程】云計(jì)算虛擬化技術(shù)和容器技術(shù)詳解_云計(jì)算虛擬化技術(shù)與容器技術(shù)

    【云計(jì)算學(xué)習(xí)教程】云計(jì)算虛擬化技術(shù)和容器技術(shù)詳解_云計(jì)算虛擬化技術(shù)與容器技術(shù)

    這跟交通網(wǎng)絡(luò)很相似,連接兩個(gè)城市的交通網(wǎng)絡(luò)具備的第一個(gè)功能就是汽車(chē)從一個(gè)城市到達(dá)另一個(gè)城市;第二個(gè)功能是控制到底走哪條線路最好。前者就是由公路組成的交通網(wǎng)絡(luò),后者就是交通控制系統(tǒng)。 下面我們?cè)賮?lái)看看傳統(tǒng)的網(wǎng)絡(luò)設(shè)備(比如一臺(tái)路由器)的邏輯分層結(jié)構(gòu)

    2024年04月22日
    瀏覽(38)
  • 虛擬化和容器技術(shù)綜合實(shí)驗(yàn)

    虛擬化和容器技術(shù)綜合實(shí)驗(yàn)

    一、VMware workstation虛擬化平臺(tái)的搭建和使用 在VMware workstation中創(chuàng)建虛擬機(jī)并安裝CentOS。 完成虛擬機(jī)的網(wǎng)絡(luò)配置,添加1塊網(wǎng)絡(luò)適配器,第一塊網(wǎng)絡(luò)適配器采用橋接的方式接入網(wǎng)絡(luò),第二塊采用NAT的方式接入網(wǎng)絡(luò),并配置固定IP地址,使得虛擬機(jī)能夠ping通物理機(jī)并訪問(wèn)外網(wǎng)。

    2024年02月03日
    瀏覽(31)
  • 虛擬化容器化與docker

    虛擬化容器化與docker

    物理機(jī) : 實(shí)際的服務(wù)器或者計(jì)算機(jī)。相對(duì)于虛擬機(jī)而言的對(duì)實(shí)體計(jì)算機(jī)的稱呼。物理機(jī)提供給虛擬機(jī)以硬件環(huán)境,有時(shí)也稱為“寄主”或“宿主”。 虛擬化 :是指通過(guò)虛擬化技術(shù)將一臺(tái)計(jì)算機(jī)虛擬為多臺(tái)邏輯計(jì)算機(jī)。在一臺(tái)計(jì)算機(jī)上同時(shí)運(yùn)行多個(gè)邏輯計(jì)算機(jī),每個(gè)邏輯計(jì)算

    2024年02月16日
    瀏覽(27)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包