Docker3
安装tomcat
官方使用
docker run -it --rm tomcat:9.0
之前启用的都是后台,停止了容器之后,容器还是可以查到。这个是用完即删,一般用来测试。

docker pull tomcat直接下载最新版

启动运行

进入容器
docker exec -it tomcat01 /bin/bash
发现Linux命令少了,没有webapps,阿里云镜像原因,默认是最小镜像,把不必要的都剔除了
部署es+kibana
es暴露的端口很多
es十分耗内存
es数据一般需要放置到安全目录!挂载
--net somenetwork ? 网络配置
下载容器
docker run -d --name elastcsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
启动了Linux就卡住了
docker stats查看cpu状态
停止整个docker

docker run -d --name elastcsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPS=“Xms64m -Xms512m" elasticsearch:7.6.2```限制占用内存
docker stop 3ad4b0691e33 关闭镜像
docker run -d -p 8088:9000
--restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
可视化
docker 镜像
得到镜像
- 从远程仓库下载
- 朋友拷贝
- 自己制作镜像DockerFile
docker镜像都是只读的,容器启动有一个新的可写层加到镜像顶部
这一层就是容器层,容器之下都是镜像层
提交自己的镜像
commit镜像
docker commit 提交容器成为一个新的副本
docker commit -m=“提交的描述信息 -a=“作者” 容器id 目标镜像名:[TAG]
入门
容器数据卷
什么是容器数据卷
docker 理念回顾
将应用和环境打包成一个镜像
如果数据都在容器中,容器删除,数据会丢失
容器之间可以有一个数据共享的技术
使用数据卷
1.直接使用命令来挂载
docker run -it -v 主机目录:容器内目录
容器内的数据都是同步的
安装MySQL
MySQL的数据持久化问题
获取镜像
docker search mysql
docker pull mysql:5.7
运行容器
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql101 mysql:5.7
启动
-d 后台运行
-P 端口映射
-v 卷挂载
-e 环境配置
--name 容器名字
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql101 mysql:5.7
容器删除数据也没丢失
具名和匿名挂载
匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx
查看容器内情况
docker volume ls
具名挂载
docker run -d -P --name nginx02 -v jumping-nginx:/etc/nginx nginx
通过 -v 卷名:容器内路径
查看卷
所有docker容器内的卷,没有指定目录情况下都是在/var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便找到我们的一个卷,大多数情况使用的‘具名挂载’
如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径::容器内路径 #指定路径挂载
初识Dockerfile
就是用来构造docker镜像的构造文件
通过脚本可以生成镜像,镜像是一层一层的
创建一个dockerfile文件,名字可以随机 建议 Dockerfile
文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
这里每个命令就是镜像的一层
数据卷容器
多个mysql同步数据
docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 --volumes-from mysql01 mysql:5.7
这时候可以实现两个容器数据同步
结论:容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止
但是一旦持久化到了本地,这个时候,本地数据是不会删除的

浙公网安备 33010602011771号