一、mysql
参考资料:https://hub.docker.com/_/mysql/
1.下载mysql镜像
sudo docker pull mysql
2.启动mysql容器
sudo docker run -d -p 3306:3306 --name dbmysql -e MYSQL_ROOT_PASSWORD=password -v /mysql/datadir:/var/lib/mysql -v /mysql/conf:/etc/mysql/conf.d docker.io/mysql:latest -e MYSQL_ROOT_PASSWORD=password :指定root密码 -v /mysql/datadir:/var/lib/mysql :指定数据库本地存储路径,如果系统没有关闭SELinux,会启动失败,原因是本地目录不允许挂载到容器,需要先执行chcon -Rt svirt_sandbox_file_t /mysql/datadir -v /mysql/conf:/etc/mysql/conf.d :指定使用自定义的mysql配置文件启动数据库,比如在该路径下创建一个my-config.cnf vi my-config.cnf [mysqld] port=3306 character-set-server=utf8 wait_timeout=288000 # 链接超时,默认为8小时,单位为秒 lower_case_table_names=1 # 不去分大小写
3.docker-compose方式:
转到root用户
mkdir -p /docker-compose-dir/mysql
cd /docker-compose-dir/mysql
vi docker-compose.yml
dbmysql: image: docker.io/mysql:latest ports: - 3306:3306 environment: MYSQL_ROOT_PASSWORD: password volumes: - /mysql/datadir:/var/lib/mysql - /mysql/conf:/etc/mysql/conf.d:ro
[root@centos-linux-agent mysql]# docker-compose up -d Creating mysql_dbmysql_1 [root@centos-linux-agent mysql]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 087f4e32cd29 docker.io/mysql:latest "docker-entrypoint.sh" 4 seconds ago Up 3 seconds 0.0.0.0:3306->3306/tcp mysql_dbmysql_1
4.数据库脚本初始化
有时候,需要先执行数据库初始化脚本才能运行项目容器,可以采用如下方式:
脚本路径:/mysql_sql/mysql.sql
sudo docker run -it --rm --link=mysql_dbmysql_1:db -v /mysql_sql:/mysql_sql mysql:latest mysql -hdb -uroot -ppassword -Ddbname
说明:如果脚本中包含建库语句,则可以去掉-D参数
进入容器后执行:
mysql> source /mysql_sql/mysql.sql;
mysql> exit
退出容器后,容器将自动删除。
二、tomcat
参考资料:https://hub.docker.com/_/tomcat/
下载镜像:
sudo docker pull tomcat
目前最新版为8.0.X,可以通过上面的官方地址,找到需要的jre+tomcat的tag版本
启动容器:
sudo docker run -d -p 8080:8080 -v /usr/local/tomcat tomcat:latest
查看容器中的tomcat目录被挂载到本机的路径:
sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ef993d0f48c1 tomcat:latest "catalina.sh run"22 minutes ago Up9 minutes 0.0.0.0:8080->8080/tcp goofy_blackwell
sudo docker inspect -f "{{.Mounts}}" ef9
[{bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59 /var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data /usr/local/tomcat local true }]
可以看到:
/var/lib/docker/volumes/bbc41e0bbc97ae32839e876f291eb60173b6b1fc2867dd11a5381f85a85b8a59/_data
然后可以修改conf下的配置文件,将war包拷贝到webapps下,等等,修改后要重启容器:sudo docker restart ef9
也可以直接映射宿主机上的war包路径:
sudo docker run -d -p 8080:8080 -v /tomcat/webapps:/usr/local/tomcat/webapps tomcat:latest
这样,只需要将war包拷贝到宿主机的/tomcat/webapps下即可。
这样做和在本机使用tomcat并没有实际的区别,它的优势就是宿主机不需要安装jdk和tomcat。
docker-compose:
可以使用docker-compose一次启动多个tomcat容器,并建立起他们之间的关联关系。
mkdir -p /docker-compose-dir/tomcat
cd /docker-compose-dir/tomcat
vi docker-compose.yml
version: '2' services: db: image: docker.io/mysql:latest volumes: - /mysql/datadir_tomcat:/var/lib/mysql - /mysql/conf:/etc/mysql/conf.d:ro restart: always environment: MYSQL_ROOT_PASSWORD: password tomcat01: depends_on: - db image: docker.io/tomcat:latest volumes: - /tomcat01/webapps:/usr/local/tomcat/webapps links: - db:db ports: - "8081:8080" restart: always tomcat02: depends_on: - db image: docker.io/tomcat:latest volumes: - /tomcat02/webapps:/usr/local/tomcat/webapps links: - db:db - tomcat01:tomcat01 ports: - "8082:8080" restart: always
docker-compose up -d
上面这种方式,随便进入任何一个容器,执行ping命令,都可以互相ping通
ping tomcat01
ping db
但是查看各自的/etc/hosts,却看不到相应的配置,就是这么神奇。
所以war里使用上面的链接别名配置好互相要访问的地址,然后拷贝到对应的部署路径下,并重启。
docker-compose restart
Dockerfile:
也可以使用Dockerfile,将war包等直接封装为一个新的镜像。
sudo mkdir /dockerfile
sudo vi Dockerfile
FROM tomcat:latest MAINTAINER "hanqunfeng <hanqf2008@163.com>" ADD web.war /usr/local/tomcat/webapps/
将web.war拷贝到当前路径下
生成镜像:sudo docker build -t web/tomcat8 . :注意最后面那个点,代表当前路径
启动:sudo run -p 8080:8080 -d web/tomcat8
docker-compose:
tomcat01: depends_on: - db build: /dockerfile links: - db:db ports: - "8081:8080" restart: always
如果该镜像已经被创建了,再次执行时要加上--build:docker-compose up --build -d,此时会重新创建该镜像。
相关推荐
Docker:进阶与实战
docker-compose php7.3.4-fpm+nginx+mysql配置
docker+jenkins+tomcat+mysql+redis+nginx,实现jenkins自动构建部署。Java+maven是单独搭建的。
详解Git分支操作细节,Gitlab账户注册,Gitlab的SSH配置,Git操作远程仓库
docker-compose部署mysql+redis+sentinel1主2从+rabbitmq+nginx负载
docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的文件夹路径:/var/lib/mysql mysql:5.7 redis: docker run -p 6379:6379 -d -v /windows盘符/指定的文件夹路径:/data redis:...
主机名IP地址操作系统组件备注环境说明架构图目录结构配置文件docker-compose配置文件keepalived配置文件keepalived检测脚本hapr
第三章:Docker容器进阶--创建镜像、数据管理、网络一、Docker镜像创建方法--基于已有镜像、基于本地模板;二、Docker镜像创建方法--基于dock
docker-elk-教程docker-elk-教程 :memo:进阶 简介码头工人麋鹿 :red_question_mark:这是什么 :red_question_mark:他可以吃吗 :confused_face:重点在ELK ,他是由三个东西所组成的。 (E) (L) (K)基本上,整个...
码头工人组成烧瓶 +-------------+ +------------+ +--------------+ +-----------+ | | | | | | | | | nginx +-------+ gunicorn +---------+ flask app +-----+ redis | | | | | |
Docker-Radicale (CalDAV / CardDAV服务器)的增强型Docker映像。特征 :locked_with_key: 安全:以普通用户身份而非root用户身份运行 :fire: 安全:容器是只读的,只能访问其数据目录,并且没有多余的特权 :...
基于docker-compose构建filebeat + Logstash +Elasticsearch+ kibana日志系统 对nginx日志进行正则切割字段。 https://www.jianshu.com/p/f7927591d530
环境配置: Jdk1.8 + Tomcat8.5 + mysql + Eclispe (IntelliJ IDEA,Eclispe,MyEclispe,Sts 都支持) 项目技术: JSP +Spring + SpringMVC + MyBatis + html+ css + JavaScript + JQuery + Ajax + layui+ maven等等。
基于 javalin 包装的 java MSF,适用于各种微服务项目. java -jar ./paoding.admin-1.0-SNAPSHOT.jar -Xms100m ...docker run -p 3306:3306 --name mysql8 --restart=always -e MYSQL_ROOT_PASSWORD=1qaz2wsx -d mysql
docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,docker学习笔记,...
CentOS7 自动化搭建Nginx+PHP7+Mysql+Docker+Docker-Compose Shell脚本,Docker version 18.06.1-ce,docker-compose version 1.22.0
《Docker进阶与实战》(高清文字版 & 高清影印版) 本书由一个真正钻研容器技术的团队写作,他们不仅仅是在使用Docker,更多的是在探索容器的未来之路,希望把“代码与产品,理论与实践”完美结合。本书内容从...
解决docker报错dial tcp lookup registry-1.docker.io
本镜像源自于DockerHub镜像。 版本 当前版本 tomcat 8.0.39, java8 说明 容器启动后会自动创建一个具有所有权限的admin用户,并自动生成随机密码。你可以通过查看容器log获得密码,比如 => Creating and admin user ...
基于springboot+vue深度学习的人流量检测系统源码+数据库文件+文档说明.zip技术栈 前端: vue3 + element-ui + Echarts + 高德地图api 后端: spring boot + mysql 人工智能: pytorch + yolov5 + deepsort 部署: ...