前置条件
一台安装好 Docker 的 Ubuntu 机器, 如果你还不知道如何安装 Docker 的话, 请戳这里 https://itweknow.cn/detail?id=43 .
一, 拉取 Ubuntu 和 MySQL 基础镜像
1, 获取 MySQL 镜像
docker pull MySQL:latest
2, 获取 Ubuntu 镜像
docker pull Ubuntu
2, 查看镜像是否被拉取到
- root@gancy:/# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- MySQL latest 7666f75adb6b 4 weeks ago 406 MB
3, 创建并运行容器
- root@gancy:/# docker run --name MySQL -v /data/MySQL:/var/lib/MySQL -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d MySQL:latest
- root@gancy:/# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- b7e8a431a310 MySQL:latest "docker-entrypoint..." 18 minutes ago Up 6 minutes 0.0.0.0:3306->3306/tcp MySQL
二, 下载 jdk 和 Tomcat
1, 切换到存放的目录 (与后面建的 Dockerfile 在同一目录)
cd /docker/java/javaweb
2, 下载 jdk
wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u111-b14/jdk-8u111-linux-x64.tar.gz
3, 下载 Tomcat
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar.gz
三, 编写 Dockerfile
1, 构建 javaweb 镜像的 Dockerfile(我存放目录为:/docker/java/javaweb/)
- FROM Ubuntu:latest
- MAINTAINER gancy "18451117878@163.com"
- # 刷新包缓存, 安装 wget 工具
- RUN apt-get update
- # 安装并配置 java 环境
- ADD jdk-8u101-Linux-x64.tar.gz /usr/local/java
- # 配置环境变量
- ENV JAVA_HOME /usr/local/java/jdk1.8.0_101
- ENV PATH $JAVA_HOME/bin;$PATH
- ENV CLASSPATH .:$JAVA_HOME/lib
- # 配置运行环境
- ENV LANG C.UTF-8
- # 配置 Tomcat
- ADD apache-tomcat-8.5.11.tar.gz /usr/local/tomcat/
- RUN chmod +x /usr/local/tomcat/apache-tomcat-8.5.11/bin/*.sh
- EXPOSE 8080
- ENTRYPOINT /usr/local/tomcat/apache-tomcat-8.5.11/bin/startup.sh && /bin/bash
2, 构建 utf-8 编码格式的 MySQL 镜像的 Dockerfile(我存放目录为:/docker/MySQL/)
- FROM MySQL:latest
- MAINTAINER gancy "18451117878@163.com"
- # 修改编码方式
- RUN echo "character-set-server=utf8">> /etc/MySQL/MySQL.conf.d/mysqld.cnf
- RUN service MySQL restart
- EXPOSE 3306
四, 根据 Dockerfile 构建镜像
注: 构建镜像前先切换到 Dockerfile 所在目录
1, 构建 MySQL
docker build -t="gancy/mysql" .
2, 构建 javaweb 基础镜像
docker build -t="gancy/javaweb" .
3, 查看构建的镜像
- root@VM-71-179-Ubuntu:/docker/java/javaweb# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- gancy/javaweb latest 69fdf275136e 55 seconds ago 548 MB
- gancy/MySQL latest f898d7b9976d 4 minutes ago 406 MB
- MySQL latest 22be5748ecbe 2 days ago 406 MB
- Ubuntu latest 0ef2e08ed3fa 3 days ago 130 MB
五, 运行 MySQL 和 javaweb 镜像
- root@VM-71-179-Ubuntu:/docker/java/javaweb# docker run --name MySQL -v /data/MySQL:/var/lib/MySQL -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d gancy/MySQL
- ff26f0d854ea1e1e36b592070c85d911b6501de4e1292b637749bcb28ced6520
- root@VM-71-179-Ubuntu:/docker/java/javaweb# docker run -i -t -d -p 8088:8080 --name="javawebtest" gancy/javaweb
- 3315b161443c2b47b8205a5469ad4a3bf515d9494b93c91ae47f4fee94f2aa21
- root@VM-71-179-Ubuntu:/docker/java/javaweb# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 3315b161443c gancy/javaweb "/bin/sh -c'/usr/..." 21 seconds ago Up 20 seconds 0.0.0.0:8088->8080/tcp javawebtest
- ff26f0d854ea gancy/MySQL "docker-entrypoint..." 2 minutes ago Up 2 minutes 0.0.0.0:3306->3306/tcp MySQL
run 运行容器.
-name 命名容器, 如果不命名会是一长串的 Hash 值, 不美观.
-v 数据卷存储, 如果不存储容器关闭后数据会全部销毁. 将本地的某个文件夹, 映射到容器的文件夹.
-p 端口映射, 将本地的 3306 端口映射到容器中的 3306, 感觉数据库就在本地一样, 2333
-e 设置变量值, 在此处设置了数据库 root 的密码, 很多变量可以自己设置, 具体访问 https://hub.docker.com
-d 后台运行
六, 测试
Java Web 测试
Web 测试结果
MySQL 测试
MySQL 测试结果
来源: http://www.jianshu.com/p/6c88d8c55308