1、 nigix 安装

#1、查看当前镜像
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE                                                                                             
mysql         latest    3218b38490ce   2 weeks ago    516MB                                                                                            
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB                                                                                           
centos        latest    5d0da3dc9764   3 months ago   231MB                                                      
#2、搜索nginx镜像
[root@localhost ~]# docker search nginx
NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED                                       
nginx                             Official build of Nginx.                        16098     [OK]                                                       
jwilder/nginx-proxy               Automated Nginx reverse proxy for docker con…   2106                 [OK]                                            
richarvey/nginx-php-fpm           Container running Nginx + PHP-FPM capable of820                  [OK]                                            
jc21/nginx-proxy-manager          Docker container for managing Nginx proxy ho…   307                                                                  
linuxserver/nginx                 An Nginx container, brought to you by LinuxS…   161                                                                  
tiangolo/nginx-rtmp               Docker image with Nginx using the nginx-rtmp…   149                  [OK]                                            
jlesage/nginx-proxy-manager       Docker container for Nginx Proxy Manager        148                  [OK]                                            
alfg/nginx-rtmp                   NGINX, nginx-rtmp-module and FFmpeg from sou…   112                  [OK]                                            
nginxdemos/hello                  NGINX webserver that serves a simple page co…   81                   [OK]                                            
privatebin/nginx-fpm-alpine       PrivateBin running on an Nginx, php-fpm & Al…   61                   [OK]                                            
nginx/nginx-ingress               NGINX and  NGINX Plus Ingress Controllers fo…   59                                                                   
nginxinc/nginx-unprivileged       Unprivileged NGINX Dockerfiles                  56                   
nginxproxy/nginx-proxy            Automated Nginx reverse proxy for docker con…   33                   
staticfloat/nginx-certbot         Opinionated setup for automatic TLS certs lo…   25                   [OK]
nginx/nginx-prometheus-exporter   NGINX Prometheus Exporter for NGINX and NGIN22                   
schmunk42/nginx-redirect          A very simple container to redirect HTTP tra…   19                   [OK]
centos/nginx-112-centos7          Platform for running nginx 1.12 or building …   16                   
centos/nginx-18-centos7           Platform for running nginx 1.8 or building n…   13                   
bitwarden/nginx                   The Bitwarden nginx web server acting as a r…   12                   
flashspys/nginx-static            Super Lightweight Nginx Image                   11                   [OK]
mailu/nginx                       Mailu nginx frontend                            10                   [OK]
sophos/nginx-vts-exporter         Simple server that scrapes Nginx vts stats a…   7                    [OK]
ansibleplaybookbundle/nginx-apb   An APB to deploy NGINX                          3                    [OK]
wodby/nginx                       Generic nginx                                   1                    [OK]
arnau/nginx-gate                  Docker image with Nginx with Lua enabled on …   1                    [OK]
[root@localhost ~]#

#3、pull nginx镜像
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    605c77e624dd   9 days ago     141MB
mysql         latest    3218b38490ce   2 weeks ago    516MB
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
centos        latest    5d0da3dc9764   3 months ago   231MB
#5、运行ngnix
#-d后台运行
#--name 给容器命名
#宿主机端口:容器内部端口
# --restart=always 设置容器自启动
# -v 实现容器外部的文件或文件夹同步到容器内部,通过 -v 或 --mount 标志将外部路径映射到容器内部的指定路径。

# 实现后台启动、开机自启动、实现容器外部的文件或文件夹同步到容器内部
docker run -d --restart=always -v /usr/local/nginx/:/usr/local/nginx/  -p 80:80 --name nginx nginx

[root@localhost ~]# docker run -d --name nginx01 -p 8080:80 nginx
add0a85b143131d46267fcdb953f0c6e7a2b0da0cb74b1a08f13d58a5d7ae7d8
[root@localhost ~]# curl localhost:8080
<!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 ~]# 

#进入容器内部

[root@localhost /]# docker exec -it add0a85b1431 /bin/bash
root@add0a85b1431:/# ls
bin  boot  dev	docker-entrypoint.d  docker-entrypoint.sh  etc	home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

#查看容器文件位置
root@add0a85b1431:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@add0a85b1431:/# cd etc/nginx/
root@add0a85b1431:/etc/nginx# ls
conf.d	fastcgi_params	mime.types  modules  nginx.conf  scgi_params  uwsgi_params
root@add0a85b1431:/etc/nginx# 

端口暴露的地址
在这里插入图片描述每次修改nginx配置文件,都需要进入容器内部?十分的麻烦,要是可以在容器外部提供一个映射的路径,达到容器修改文件名,容器内部就可以自动修改?-v数据卷

# 再次pull ngin发现没有存储空间
[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pulling fs layer 
a9edb18cadd1: Pulling fs layer 
589b7251471a: Pulling fs layer 
186b1aaa4aa6: Pulling fs layer 
b4df32aa5a72: Pulling fs layer 
a0bcbecc962e: Pulling fs layer 
latest: Pulling from library/nginx
a2abf6c4d29d: Pulling fs layer 
a9edb18cadd1: Pulling fs layer 
589b7251471a: Pulling fs layer 
186b1aaa4aa6: Pulling fs layer 
b4df32aa5a72: Pulling fs layer 
a0bcbecc962e: Pulling fs layer 
open /var/lib/docker/tmp/GetImageBlob876263017: no space left on device
#这个时候可以用df -hl,查看目录存储情况
#可以看到/dev/mapper/centos-root 存储空间100%,,是因为之前测试centos,跑了一个while死循环,导致日志占满

[root@localhost ~]# df -hl
文件系统                 容量  已用  可用 已用% 挂载点
devtmpfs                 475M     0  475M    0% /dev
tmpfs                    487M     0  487M    0% /dev/shm
tmpfs                    487M   51M  436M   11% /run
tmpfs                    487M     0  487M    0% /sys/fs/cgroup
/dev/mapper/centos-root   17G   17G   20K  100% /
/dev/sda1               1014M  138M  877M   14% /boot
tmpfs                     98M     0   98M    0% /run/user/0

#3、找到docke的日志文件路径,清除日志,一般docker默认安装路径是/var/lib/docker/containers

[root@localhost /]# cd /var/lib/docker/containers
[root@localhost containers]# ls
clean_containers_logs.sh  e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e
[root@localhost containers]# cd e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e
[root@localhost e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e]# ls
checkpoints     e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e-json.log  hostname  mounts       resolv.conf.hash
config.v2.json  hostconfig.json                                                            hosts     resolv.conf
[root@localhost e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e]# rm -rf e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e-json.log

#日志占满硬盘是很常见的情况,所以想新建一个文件来进行快速清理
#这时发现没有执行文件的权限
[root@localhost containers]# touch clean_containers_logs.sh
[root@localhost containers]# vi clean_containers_logs.sh

echo "======== start clean docker containers logs ========"

logs=$(find /var/lib/docker/containers/*/*-json.log)

for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done

echo "======== end clean docker containers logs ========"

#执行文件
[root@localhost containers]# ./clean_containers_logs.sh
-bash: ./clean_containers_logs.sh: 权限不够
#于是设置文件权限
[root@localhost containers]# chmod 700 //var/lib/docker/containers/clean_containers_logs.sh
[root@localhost containers]# ls
2a153a15ffa25e5b85acab283fa02b7888565bb3336fc803354cd3a951465e4c  e0f4bc7d37e77bb5803cfa994ec73f361be0a8cee6a8a3291a4a022eb56f366e
clean_containers_logs.sh
#执行清初日志文件
root@localhost containers]# ./clean_containers_logs.sh 
======== start clean docker containers logs ========
clean logs : /var/lib/docker/containers/2a153a15ffa25e5b85acab283fa02b7888565bb3336fc803354cd3a951465e4c/2a153a15ffa25e5b85acab283fa02b7888565bb3336fc803354cd3a951465e4c-json.log
======== end clean docker containers logs ========

2、tomcat 安装

#搜索tomcat镜像
[root@localhost ~]# docker search tomcat
NAME                          DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
tomcat                        Apache Tomcat is an open source implementati…   3212      [OK]       
tomee                         Apache TomEE is an all-Apache Java EE certif…   95        [OK]       
dordoka/tomcat                Ubuntu 14.04, Oracle JDK 8 and Tomcat 8 base…   57                   [OK]
kubeguide/tomcat-app          Tomcat image for Chapter 1                      32                   
consol/tomcat-7.0             Tomcat 7.0.57, 8080, "admin/admin"              18                   [OK]
cloudesire/tomcat             Tomcat server, 6/7/8                            15                   [OK]
aallam/tomcat-mysql           Debian, Oracle JDK, Tomcat & MySQL              13                   [OK]
arm32v7/tomcat                Apache Tomcat is an open source implementati…   11                   
andreptb/tomcat               Debian Jessie based image with Apache Tomcat…   10                   [OK]
arm64v8/tomcat                Apache Tomcat is an open source implementati…   7                    
rightctrl/tomcat              CentOS , Oracle Java, tomcat application ssl…   7                    [OK]
unidata/tomcat-docker         Security-hardened Tomcat Docker container.      5                    [OK]
amd64/tomcat                  Apache Tomcat is an open source implementati…   3                    
jelastic/tomcat               An image of the Tomcat Java application serv…   3                    
oobsri/tomcat8                Testing CI Jobs with different names.           2                    
cfje/tomcat-resource          Tomcat Concourse Resource                       2                    
fabric8/tomcat-8              Fabric8 Tomcat 8 Image                          2                    [OK]
ppc64le/tomcat                Apache Tomcat is an open source implementati…   1                    
picoded/tomcat7               tomcat7 with jre8 and MANAGER_USER / MANAGER1                    [OK]
camptocamp/tomcat-logback     Docker image for tomcat with logback integra…   1                    [OK]
99taxis/tomcat7               Tomcat7                                         1                    [OK]
chenyufeng/tomcat-centos      tomcat基于centos6的镜像                              1                    [OK]
secoresearch/tomcat-varnish   Tomcat and Varnish 5.0                          0                    [OK]
softwareplant/tomcat          Tomcat images for jira-cloud testing            0                    [OK]
s390x/tomcat                  Apache Tomcat is an open source implementati…   0                    
#拉取tomcat镜像
[root@localhost ~]# docker pull tomcat
Using default tag: latest
latest: Pulling from library/tomcat
0e29546d541c: Pull complete 
9b829c73b52b: Pull complete 
cb5b7ae36172: Pull complete 
6494e4811622: Pull complete 
668f6fcc5fa5: Pull complete 
dc120c3e0290: Pull complete 
8f7c0eebb7b1: Pull complete 
77b694f83996: Pull complete 
0f611256ec3a: Pull complete 
4f25def12f23: Pull complete 
Digest: sha256:9dee185c3b161cdfede1f5e35e8b56ebc9de88ed3a79526939701f3537a52324
Status: Downloaded newer image for tomcat:latest
docker.io/library/tomcat:latest
#查看镜像
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
nginx         latest    605c77e624dd   9 days ago     141MB
tomcat        latest    fb5657adc892   2 weeks ago    680MB
mysql         latest    3218b38490ce   2 weeks ago    516MB
hello-world   latest    feb5d9fea6a5   3 months ago   13.3kB
centos        latest    5d0da3dc9764   3 months ago   231MB

#启动运行
[root@localhost ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
005d746f224fec5771463ad9d844ab56211d2d75903d20fc9ac1e3e5d79773f9

#进入容器
[root@localhost ~]# docker exec -it tomcat01 /bin/bash                                          
root@005d746f224f:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work

#拷贝文件,项目部署文件webapps为空
root@005d746f224f:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@005d746f224f:/usr/local/tomcat# ls
BUILDING.txt  CONTRIBUTING.md  LICENSE	NOTICE	README.md  RELEASE-NOTES  RUNNING.txt  bin  conf  lib  logs  native-jni-lib  temp  webapps  webapps.dist  work
root@005d746f224f:/usr/local/tomcat# cd webapps
root@005d746f224f:/usr/local/tomcat/webapps# ls
ROOT  docs  examples  host-manager  manager


#发现问题:1、linux命令少了。2、没有webapps,阿里云镜像的原因。默认是最小的镜像,所以不必要的都剔除掉了。
#保证最小可运行的环境!

测试截图
在这里插入图片描述我们以后要部署项目,如果每次都要进入容器十分麻烦?我要是可以在容器外部提供一个映射路径,webapps,我们放在外部放置项目,就自动同步到内部就好!

优化

#实现容器外部的文件或文件夹同步到容器内部,通过 -v 或 --mount 标志将外部路径映射到容器内部的指定路径。
# --restart=always 设置容器自启动
docker run -d --restart=always -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps -p 8081:8080 --name tomcat tomcat

tomcat 启动报错问题排查

[root@localhost ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
e2219c7e35f6564a11751d26fd8501ac06f854576098652e90b1a226edb24f03
docker: Error response from daemon: driver failed programming external connectivity on endpoint tomcat01 (a7b010ef4b4087f6c3df83d6ff84f9aff3fcab230b71e1424fc9e66e0ef3396b):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3355 -j DNAT --to-destination 172.17.0.3:8080 ! -i docker0: iptables: No chain/target/match by that name.
 (exit status 1)).

#重启动docker容器
 
[root@localhost ~]# service docker restart
Redirecting to /bin/systemctl restart docker.service
[root@localhost ~]# docker run -d -p 3355:8080 --name tomcat01 tomcat
005d746f224fec5771463ad9d844ab56211d2d75903d20fc9ac1e3e5d79773f9

3、部署es+kibana

#es暴露 端口很多
#es 十分的耗内存
#es的数据一般需要放置到安全目录挂载!
#--net somenetwork 网络配置
#启动 elasticsearch
 docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2

#启动Linux就卡住,docker 	stats 查看cpu的状态

# docker stats查看cpu

#测试es
{
  "name" : "e42bfa9c45ad",
  "cluster_name" : "docker-cluster",
  "cluster_uuid" : "2H_QeMbSSLKKi4_Peo7-eA",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "docker",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}

#停止es。增加内存限制

在这里插入图片描述

#增加内存的限制,修改配置文件。-e环境变量配置
 docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2

在这里插入图片描述网络如何连接
在这里插入图片描述

4、可视化

  • portainer

说明是portainer?

docker图形化界面管理工具!提供一个后台的面板供我们操作!

docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer

访问测试
登陆
在这里插入图片描述选择仓库
在这里插入图片描述进入面板之后的页面
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐