Docker容器互联
1、端口映射
docker create -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name hello-mysql mysql:5.7
-p HostPort:ContainerPort | IP:HostPort:ContainerPort | HostPort:ContainerPort
- 查看端口映射
- docker port hello-mysql
2、容器互联
--link name:alias
,name连接容器的名称,alias连接的别名
场景:我们无需暴露mysql的情况下,让web应用使用mysql;
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d --link mysql01:mysql --name tomcat tomcat:7
docker exec -it tomcat bash
cat /etc/hosts
# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3 mysql fe4d2abeea81 hello-mysql
172.17.0.4 445c0933d7b4
3.部署实例
1、部署Tomcat
docker pull tomcat:jdk8-openjdk-slim
#官方 docker exec -it
docker run -it --rm -p 8080:8080 tomcat:9.0
-it :交互模式
--rm:Automatically remove the container when it exits; 容器启动成功并且推出以后容器就自动移除;控制台ctrl-c自动删除。测试情况。dry-run.。容器就没有了
docker stop fe546673ee19 11e476bb37b6 #批量
docker ps -aq #找到所有容器的id
##默认删除的方式
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
##一步到位的
docker rm -f $(docker ps -aq)
docker run -d -p 8080:8080 --name tomcat -v /idata/tomcat/webapp:/usr/local/tomcat/webapps tomcat:9.0
以后在/idata/tomcat/webapp里面部署项目,war
镜像:
后缀:
-slim:瘦身的。
alpine:更瘦的。基础系统2.5
历史?
docker的所有镜像。最基础的镜像是什么?最起码是一个系统(小linux)
centos:debain;alpine。xxx
下载镜像(tomcat.,redis),优先推荐大家用 alpine后缀的。
2、Es+Kibana
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" \
-v /usr/share/elasticsearch/data \
-v /usr/share/elasticsearch/config \
-v /usr/share/elasticsearch/plugins \
-e ES_JAVA_OPTS="-Xms64m -Xmx512m" \
elasticsearch:7.6.2
# es能设置的环境变量,这里都能写。容器的名字必须唯一
docker stats 7dc #查看容器的cpu,内存,网络情况
# 必须考虑的
# 1、端口暴露问题
# 2、数据卷的挂载
# --net
解决的问题:
1、吃内存
2、数据卷的挂载?
es自己的所有数据都在 容器的/usr/share/elasticsearch
容器里的结构 bin config data jdk lib logs modules plugins
-v 容器里面的需要挂载的路径
#启动Kibana。kibana和es都安装在了一个一个机器
docker run -d --name kibana -p 5601:5601 -e ELASTICSEARCH_HOSTS="http://172.16.224.124:9200" kibana:7.6.2
#kibana怎么知道es在哪里。
#es地址,千万别127.0.0.1
3、RabbitMQ
# rabbitmq:3不带管理控制台的。rabbitmq:management
docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 -v /idata/rabbitmq:/var/lib/rabbitmq rabbitmq:management