Docker精通,部署nginx
入门
入门: https://blog.youkuaiyun.com/YoonBongChi/article/details/111408385.
最常用的容器和镜像命令
使用docker部署Nginx
第一步 搜索镜像
方法一:
官网找: https://hub.docker.com/
.
建议用方法一,这要可以看帮助文档,更详细。
方法二:
命令
docker search nginx
第二步 下载
命令
docker pull nginx
第三步 运行测试
查看镜像有几个镜像
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 11 days ago 133MB
centos latest 300e315adb2f 2 weeks ago 209MB
运行
-d是后台
–name 是给容器命名
-p 宿主机端口:容器内部端口
[root@192 ~]# docker run -d --name nginx01 -p 3344:80 nginx
c7c3b830a1f62473ebf61611aa86fcef721e4f678f50b1e526fb0e6f1c4de34e
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7c3b830a1f6 nginx "/docker-entrypoint.…" 6 seconds ago Up 4 seconds 0.0.0.0:3344->80/tcp nginx01
访问端口
[root@192 ~]# curl localhost:3344
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
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>
端口暴露的概念
通过外网访问
注意:nginx容器必须启动的情况下,关闭容器则无法访问
命令:
docker stop 容器id
进入容器
[root@192 ~]# docker exec -it nginx01 /bin/bash
root@c7c3b830a1f6:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@c7c3b830a1f6:/# ls
bin docker-entrypoint.d home media proc sbin tmp
boot docker-entrypoint.sh lib mnt root srv usr
dev etc lib64 opt run sys var
root@c7c3b830a1f6:/#
问题:
思考问题:我们每次改动nginx配置文件,都需要进入容器内部?十分的麻烦,我要是可以在容器外部提供一个映射路径,达到在容器修改文件名,容器内部就可以自动修改?
数据卷技术。
部署Tomcat
第一步 直接下载
官方的
docker run -it --rm tomcat:9.0
docker run -it --rm 一般用来测试,用完即删。
上面的一般用于测试,不过只是删除了容器
照常下载在运行
下载
docker pull tomcat:9.0
后台启动
docker run -d -p 3355:8080 --name tomcat01 tomcat
第二步 进入容器
[root@192 ~]# docker exec -it tomcat01 /bin/bash
root@bd9b088fbed4:/usr/local/tomcat# ls
BUILDING.txt NOTICE RUNNING.txt lib temp work
CONTRIBUTING.md README.md bin logs webapps
LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
root@bd9b088fbed4:/usr/local/tomcat# ll
root@bd9b088fbed4:/usr/local/tomcat# ls -al
total 128
drwxr-xr-x. 1 root root 30 Dec 18 08:57 .
drwxr-xr-x. 1 root root 20 Dec 18 08:52 ..
-rw-r--r--. 1 root root 18982 Dec 3 11:48 BUILDING.txt
-rw-r--r--. 1 root root 5409 Dec 3 11:48 CONTRIBUTING.md
-rw-r--r--. 1 root root 57092 Dec 3 11:48 LICENSE
-rw-r--r--. 1 root root 2333 Dec 3 11:48 NOTICE
-rw-r--r--. 1 root root 3257 Dec 3 11:48 README.md
-rw-r--r--. 1 root root 6898 Dec 3 11:48 RELEASE-NOTES
-rw-r--r--. 1 root root 16507 Dec 3 11:48 RUNNING.txt
drwxr-xr-x. 2 root root 4096 Dec 18 08:58 bin
drwxr-xr-x. 1 root root 22 Dec 27 09:24 conf
drwxr-xr-x. 2 root root 4096 Dec 18 08:57 lib
drwxrwxrwx. 1 root root 177 Dec 27 09:24 logs
drwxr-xr-x. 2 root root 134 Dec 18 08:57 native-jni-lib
drwxrwxrwx. 2 root root 30 Dec 18 08:57 temp
drwxr-xr-x. 2 root root 6 Dec 18 08:57 webapps
drwxr-xr-x. 7 root root 81 Dec 3 11:45 webapps.dist
drwxrwxrwx. 2 root root 6 Dec 3 11:43 work
root@bd9b088fbed4:/usr/local/tomcat# cd webapps
root@bd9b088fbed4:/usr/local/tomcat/webapps# ls
root@bd9b088fbed4:/usr/local/tomcat/webapps# ll
bash: ll: command not found
root@bd9b088fbed4:/usr/local/tomcat/webapps#
发现问题: 1、 linux令少了, 2,没有webapps。 阿里云镜像的原因。默认是最小的镜像,所有不必要的都剔除掉。
保证最小可运行的环境!
第三部 将webapps.dist中的配置cp到webapps.dist中
root@bd9b088fbed4:/usr/local/tomcat# cp -r webapps.dist/* webapps
root@bd9b088fbed4:/usr/local/tomcat#
查看cp进去没
root@bd9b088fbed4:/usr/local/tomcat/webapps# ls
ROOT docs examples host-manager manager
root@bd9b088fbed4:/usr/local/tomcat/webapps#
看可以了
思考问题:我们以后要部罢项目,如果每次都要进入容器是不是十分麻烦?我要是可以在容器外部提供一个映射路径, webapps.我们在外部放置项目,就自动同步到内部就好了!
部署es + kibanal
部署es+kiana
#1.环境需要:docker启动:systemctl start docker
# es 暴露的端口太多
# es 十分的耗内存
# es 的数据一般需要存放的安全的目录! 挂载
# --net somenetwork ? 网络配置
# 下载启动
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
# 1.启动后一瞬间就linux就卡了。
#es 是十分耗内存的 1.核 2个G
# 测试一下es是否成功了
curl localhost:9200
#docker stats 查看cpu的状态
docker stats 容器id
用docker stats 查看发现本机就1.716G内存,他一下就站1.232G
# 赶紧关掉
docker stop 容器id
#增加内存限制,修改配置文档 -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.6.2
#在查看容器cpu状态,这个时候就小了很多
docker stats 容器id
#看看能不能访问成功
curl localhost:9200
#成功了
[root@localhost /]# curl localhost:9200
{
"name" : "e8f87f9af8bc",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "ZsvICehRRvOEEAoFWg1LQQ",
"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"
}
#
Porainer(先用这个)可视化工具安装
# Docker图形化界面管理工具! 提供一个后台面板供我们操作。
docker run -d -p 8088:9000 \
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
访问测试http://192.168.136.138:8088/#/init/admin 虚拟机ip
中文翻译后的
1.设置密码