外貿(mào)建站費用安卓手機優(yōu)化神器
一.Docker 部署 Nginx 以及端口映射
Docker 部署 Nginx,首先需要下載nginx鏡像,然后啟動這個鏡像,就運行了一個nginx的容器了
1.下載 nginx 鏡像并啟動容器
#查看是否存在nginx鏡像:發(fā)現(xiàn)沒有nginx鏡像
[root@localhost zph]# docker images | grep nginx#下載nginx鏡像
[root@localhost zph]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a378f10b3218: Pull complete
5b5e4b85559a: Pull complete
508092f60780: Pull complete
59c24706ed13: Pull complete
1a8747e4a8f8: Pull complete
ad85f053b4ed: Pull complete
3000e3c97745: Pull complete
Digest: sha256:add4792d930c25dd2abf2ef9ea79de578097a1c175a16ab25814332fe33622de
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest#再次查看是否存在nginx鏡像:發(fā)現(xiàn)下載成功了nginx鏡像
[root@localhost zph]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 593aee2afb64 22 hours ago 187MB#啟動nginx容器,在后臺運行,不用加/bin/bash命令,因為nignx底層會執(zhí)行相關命令
[root@localhost zph]# docker run -it -d --name mynginx 593aee2afb64
e0773deea60048d82729038535fad45308204e181da6c7a35fb44090cc552077#查看啟動的容器:發(fā)現(xiàn)nginx已經(jīng)啟動
[root@localhost zph]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0773deea600 593aee2afb64 "/docker-entrypoint.…" 5 seconds ago Up 2 seconds 80/tcp mynginx
[root@localhost zph]#
啟動nginx容器成功后,這樣就創(chuàng)建了一個web服務了,驗證這個容器是否成功:?進入nginx容器訪問url,驗證nginx
#進入nginx容器訪問url,驗證nginx
[root@localhost zph]# docker exec -it e0773deea600 /bin/bash#curl 驗證是否可以打印出nginx相關html:發(fā)現(xiàn)可以打印,說明nginx容器創(chuàng)建成功
root@e0773deea600:/# curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
root@e0773deea600:/#
nginx容器創(chuàng)建成功后,那么怎么在外部訪問這個容器的url呢?
2.?-p 映射端口
想在外部訪問容器里面的 nginx 這個時候就需要映射端口
可以通過 -p 參數(shù)來映射端口,語法:
????????docker run -p 容器外端口:容器內(nèi)端口 容器名/容器ID
#查看運行的容器
[root@localhost zph]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e0773deea600 593aee2afb64 "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 80/tcp mynginx#查看鏡像
[root@localhost zph]# docker images | grep nginx
nginx latest 593aee2afb64 23 hours ago 187MB# 再運行一個nginx容器(一個鏡像可以運行多個容器),并進行端口映射,讓外部也可以訪問nginx容器中的html
[root@localhost zph]# docker run -it -d --name mynginx_port -p 81:80 593aee2afb64
36bf218c9754446319299c61f919d54aeebf0d3734ecc0de56183972ea7d6614#查看運行的容器:發(fā)現(xiàn)mynginx_port容器已在運行了
[root@localhost zph]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
36bf218c9754 593aee2afb64 "/docker-entrypoint.…" 5 seconds ago Up 3 seconds 0.0.0.0:81->80/tcp, :::81->80/tcp mynginx_port
e0773deea600 593aee2afb64 "/docker-entrypoint.…" 16 minutes ago Up 16 minutes 80/tcp mynginx#在linux系統(tǒng)中訪問nginx中的html:發(fā)現(xiàn)成功訪問了
[root@localhost zph]# curl 127.0.0.1:81
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>#查看當前l(fā)inux對外的ip:發(fā)現(xiàn)是ens33中的:192.168.0.6
[root@localhost zph]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether 00:0c:29:c3:3d:27 brd ff:ff:ff:ff:ff:ffinet 192.168.0.6/24 brd 192.168.0.255 scope global dynamic noprefixroute ens33valid_lft 171516sec preferred_lft 171516secinet6 fe80::20c:29ff:fec3:3d27/64 scope link noprefixroute valid_lft forever preferred_lft forever#在linux中,通過192.168.0.6本地ip訪問發(fā)現(xiàn)訪問成功
[root@localhost zph]# curl 192.168.0.6:81
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@localhost zph]#
二.Docker 部署 Nginx 掛載數(shù)據(jù)卷
1.-v 指定路徑掛載數(shù)據(jù)卷
掛載數(shù)據(jù)卷后,當容器外的數(shù)據(jù)發(fā)生變化,容器內(nèi)的數(shù)據(jù)也會跟隨變化,當容器內(nèi)的數(shù)據(jù)發(fā)生變化后,也會同步到容器外基本語法:????????docker run -v 容器外目錄 : 容器內(nèi)目錄 容器 ID
#查看鏡像
[root@localhost www]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 593aee2afb64 37 hours ago 187MB#端口映射以及掛載數(shù)據(jù)
[root@localhost www]# docker run -it -d --name mynginx_pv -p 82:80 -v /var/www/:/usr/local/nginx/html 593aee2afb64
ce47906a57afb7c24a1847211f60e7d778e86a2e0b3c65bbf2bed7cb48123ad8#查看var/www下文件
root@localhost www]# ll
總用量 12
-rw-r--r-- 1 root root 5 10月 26 07:37 index.html
-rw-r--r-- 1 root root 10 10月 25 07:54 test2.txt
-rw-r--r-- 1 root root 12 10月 25 07:51 test.txt#查看運行的容器
[root@localhost www]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ce47906a57af 593aee2afb64 "/docker-entrypoint.…" 45 seconds ago Up 42 seconds 0.0.0.0:82->80/tcp, :::82->80/tcp mynginx_pv#進入容器
[root@localhost www]# docker exec -it ce47906a57af /bin/bash#進入掛載的數(shù)據(jù)目錄
root@ce47906a57af:/# cd /usr/local/nginx/html#查看文件
root@ce47906a57af:/usr/local/nginx/html# ls
index.html test.txt test2.txt#刪除一個文件
root@ce47906a57af:/usr/local/nginx/html# rm -rf test.txt
root@ce47906a57af:/usr/local/nginx/html# ls
index.html test2.txt#退出
root@ce47906a57af:/usr/local/nginx/html# exit#查看外面數(shù)據(jù)文件是否被刪除:發(fā)現(xiàn)已經(jīng)被刪除了,操作成功
[root@localhost www]# ll
總用量 8
-rw-r--r-- 1 root root 5 10月 26 07:37 index.html
-rw-r--r-- 1 root root 10 10月 25 07:54 test2.txt
2.docker inspect 命令查看容器運行的細節(jié)
查看詳細的映射關系
[root@localhost wwwroot]# docker inspect 3408e7d7a430
3.-v 匿名掛載數(shù)據(jù)卷
基本語法:
????????docker run -v 容器內(nèi)目錄 容器 ID
-P 表示隨機映射端口
docker run -d -P --name nginx01 -v /etc/nginx nginx
[root@localhost ~]# docker run -d -P --name nginx01 -v /etc/nginx nginx
e6aea0a9c58cf4f31ce0ebdd43b071845ba5b1ee772949a5cf02da5f40e2245c
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATU
S PORTS NAMES
e6aea0a9c58c nginx "/docker-entrypoint.…" 2 seconds ago Up 1 second
0.0.0.0:49155->80/tcp, :::49155->80/tcp nginx01
?查看掛載詳情
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 3f55b08bbafb39845c98efe1cf18dfa7fedea21c2fad24cb14759dced3872ba2
local 4de46af05120a375cb5270af59790f432c64758517352963f55e67cd3bfa56d8
local 5a8a57ea0fe775429577c451d23687f76634b5ee845c95e6e30a099b888ac2c1
local 5c97447224de838eab94272de4cb556cea8e79a4469b618c00cba1b826e0d37e
local 6b8cfbcf9727dc2c3f404cf9d830de7971fe7d46a56c5a0a42222182917fd6ae
local 6b9adae890deb91efcf5a52913f6ab61d8c22a83c2130fc21c9a3f44f32919
[root@localhost ~]# docker inspect e6aea0a9c58c | grep volume
"Type": "volume", "Source": "/var/lib/docker/volumes/3f55b08bbafb39845c98efe1cf18dfa7fed
ea21c2fad24cb14759dced3872ba2/_data
4.-v 具名掛載數(shù)據(jù)卷
基本語法:
????????docker run -v 卷名稱:容器內(nèi)目錄 容器 ID
docker run -d -P --name nginx01 -v juming:/etc/nginx nginx
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATU
S PORTS NAMES
57764c6d6901 nginx "/docker-entrypoint.…" 5 seconds ago Up 4 seconds
0.0.0.0:49156->80/tcp, :::49156->80/tcp nginx01
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 3f55b08bbafb39845c98efe1cf18dfa7fedea21c2fad24cb14759dced3872ba2
local fdf7b0c7847f62ffe2326ef8a11b746efbb8b9fd212970cd31ccca5385fc9865
local juming查看掛載詳情
[root@localhost ~]# docker volume inspect juming
[
{ "CreatedAt": "2021-07-28T05:09:13-04:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/juming/_data",
Name": "juming", "Options": null, "Scope": "local"
}
]
?5.Docker 運行容器傳遞環(huán)境變量
語法:????????docker run -e 變量名 = 變量值 容器 ID??????? ?printenv: 打印出環(huán)境變量
#傳遞一個環(huán)境變量
[root@localhost www]# docker run --rm --name centos8_env -e TEST_DOMAIN=www.xxx.com 5d0da3dc9764 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=1d078b1e2069
TEST_DOMAIN=www.xxx.com
HOME=/root#傳遞多個環(huán)境變量
[root@localhost www]# docker run --rm --name centos8_env -e TEST_DOMAIN=www.xxx.com -e TEST_ADDR=192.68.1.111 5d0da3dc9764 printenv
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=1c3d6eaef5b7
TEST_DOMAIN=www.xxx.com
TEST_ADDR=192.68.1.111
HOME=/root
6.Docker 容器內(nèi)安裝軟件
Docker 容器內(nèi)安裝軟件和linux 中安裝軟是一樣的,Centos 系列用yum安裝,Ubuntu 系列用apt-get 安裝
#進入容器
[root@localhost ~]# docker exec -it centos_v /bin/bash#查看
[root@095f45520b1e /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin
srv sys tmp usr var#使用ifocnfig容器ip:發(fā)現(xiàn)沒有ifconfig包以及命令
[root@095f45520b1e /]# ifconfig
bash: ifconfig: command not found#安裝net-tools
[root@095f45520b1e /]#yum install -y net-tools#查看容器的 ip
[root@095f45520b1e /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 7805 bytes 14138450 (13.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4715 bytes 259714 (253.6 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0
[上一節(jié)][Docker]二.Docker 鏡像,倉庫,容器介紹以及詳解