二、安装镜像
2.1 安装Nginx
# 搜索Nginx
docker search nginx
# 根据版本选择相应的nginx拉取镜像
docker pull nginx:[版本号]
# docker pull nginx 不带版本号默认选择最新的镜像拉取
# 查看所有=镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 0e901e68141f 2 weeks ago 142MB
centos latest 5d0da3dc9764 9 months ago 231MB
# 开启宿主机的3344端口
firewall-cmd --zone=public --add-port=3344/tcp --permanent
systemctl restart firewalld.service
firewall-cmd --list-ports
# 运行nginx容器
docker run -d --name nginx01 -p 3344:80 nginx
### 运行测试
# -d 后台运行
# --name 给容器命名
# -p 宿主机端口:容器内部端口
curl localhost:3344
<!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>
端口暴露的概念
# 交互模式进入容器
docker exec -it nginx01 /bin/bash
root@e5347a513358:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@e5347a513358:/# cd /etc/nginx
root@e5347a513358:/etc/nginx#
问题:每次改动 Nginx 配置文件,都需要进入容器内部,十分麻烦!要是可以在容器外部提供一个映射路径,达到在容器内修改文件的效果,那么容器内部就可以自动修改 -v 数据卷
2.2 安装Tomcat
# 官方的使用
docker run -it --rm tomcat:9.0
# 我们之前的启动都是后台运行,停止了容器之后,容器还是可以查到 docker run -it --rm ===> 一般用来测试,用完旧删除
# 下载再启动
docker pull tomcat:9.0
# 启动运行
[root@vinjcent ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat 9.0 ae6026892279 5 days ago 680MB
nginx latest 0e901e68141f 2 weeks ago 142MB
centos latest 5d0da3dc9764 9 months ago 231MB
# 运行tomcat容器
[root@vinjcent ~]# docker run -d -p 3355:8080 --name tomcat01 ae6026892279
# 测试访问没有问题
curl localhost:3355
# 进入容器
[root@vinjcent ~]# docker exec -it tomcat01 /bin/bash
# 发现问题: 1、Linux命令少了 2、没有webapps(是空的) ===> 阿里云镜像的原因,默认是最小镜像,将所有不必要的都剔除掉
# 这保证最小的可运行环境
# 将当前tomcat容器中的文件夹 webapps.dist/ 下的所有文件复制到 webapps/ 下
root@fe4bc497e6e0:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@fe4bc497e6e0:/usr/local/tomcat# cd webapps
root@fe4bc497e6e0:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
# 再次在本地访问
2.3 部署 ES + Kibana
# es 暴露的端口很多
# es 十分的耗内存
# es 的数据一般需要防止安全目录,挂载
# --net somenetwork 网络配置
docker run -d --name elasticsearch --net somenetwork -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
# 启动elasticsearch
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.17.4
# 启动了elasticsearch就卡了
# es 是十分耗内存的
[root@vinjcent ~]# docker stats # 查看docker容器CPU的运行效率
# 测试es是否成功
[root@vinjcent ~]# curl localhost:9200
{
"name" : "6dfb9c60988f",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "CgNbOfhfQbWi03Fra_w6rg",
"version" : {
"number" : "7.17.4",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "79878662c54c886ae89206c685d9f1051a9d6411",
"build_date" : "2022-05-18T18:04:20.964345128Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
# 增加内存限制,修改配置文件 -e 环境配置修改
docker run -d --name elasticsearch02 -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.17.4
# 警告
WARNING: IPv4 forwarding is disabled. Networking will not work.
# 查看状态 docker stats
装完了Docker,然后启动镜像,发现没有网络,而且不能使用ifconfi,因网桥配置完后,需要开启转发,不然容器启动后,就会没有网络,配置/etc/sysctl.conf,添加net.ipv4.ip_forward=1即可,操作如下:
vim /etc/sysctl.conf
#配置转发
net.ipv4.ip_forward=1
#重启服务,让配置生效
systemctl restart network
#查看是否成功,如果返回为“net.ipv4.ip_forward = 1”则表示成功
sysctl net.ipv4.ip_forward
# 设置JVM后再访问
[root@vinjcent ~]# curl localhost:9200
{
"name" : "e1393351711e",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "CxdcMtKmT3aIbH3vjEzL6Q",
"version" : {
"number" : "7.17.4",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "79878662c54c886ae89206c685d9f1051a9d6411",
"build_date" : "2022-05-18T18:04:20.964345128Z",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
# 开启9200防火墙端口
[root@vinjcent ~]# firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重启防火墙
[root@vinjcent ~]# systemctl restart firewalld.service
# 查看开放端口
[root@vinjcent ~]# firewall-cmd --list-ports
# 关闭9200防火墙端口
[root@vinjcent ~]# firewall-cmd --zone=public --remove-port=9200/tcp --permanent
2.4 可视化
- portainer
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
- Rancher(CI/CD再用)
什么是 portainer
Docker 图形化界面管理工具!提供一个后台面板
在本机访问http://ip:8088/
需要自己创建一个用户
选择本地