-e
代表添加环境变量,MYSQL_ROOT_PASSWORD
是root用户的登录密码
- 进入MySQL容器,登录MySQL
1 | [root@localhost ~]# docker exec -it docker_mysql /bin/bash |
登录MySQL
1 | mysql -u root -p |
- 远程连接MySQL
Tomcat部署
- 拉取Tomcat-8 && JDK-8 镜像
1 | [root@localhost ~]# docker pull tomcat:8-jre8 |
- 部署Web应用
为了更好的演示Docker部署Tomcat的使用方式,我们可以先将需要部署的web项目发送到服务器的某个路径下,我这里在/root/
目录下创建了/root/site/
目录作为项目的根目录,在其中创建index.html
文件并写入:
1 2 3 4 5 6 7 8 | <html> <head> <title>Hello</title> </head> <body> <h2>Hello Docker-Tomcat!</h2> </body> </html> |
- 创建Tomcat容器
1 | [root@localhost ~]# docker run -di --name=docker_tomcat -p 9000:8080 -v /root/site/:/usr/local/tomcat/webapps/ROOT --privileged=true tomcat:8-jre8 |
以上就创建一个Tomcat容器,其容器名称Wiedocker_tomcat
,-di
表示是一个守护式容器;-p 9000:8080
表示此容器端口映射为9000->8080
,即对外的端口是9000,映射到容器里Tomcat服务器的端口8080,--privileged
是以root权限运行。
通过命令看到,当我们启动了容器,其中的Tomcat服务器也自动启动了。当然对于部署Nginx或MySQL的Docker容器,当启动容器时都会启动对应的服务。
注意
上面我们指定了宿主机的/root/site/
目录映射到docker_tomcat
容器的/usr/local/tomcat/webapps/ROOT
目录,为什么是这个目录呢?
Docker虚拟化,它会在内部虚拟一个操作系统,是在其宿主机内核上的一层空间,所有有一定的目录结构,我们可以通过docker exec -it docker_tomcat /bin/bash
命令进入到docker_tomcat
容器内部,通过ls
命令查看目录会发现其Tomcat服务器确实安装在docker_tomcat
容器的/usr/local/tomcat
目录下。
最后,我们在浏览器上访问:http://192.168.148.132:9000/
,即发现页面展示了我们刚才在/root/site/
目录下创建的index.html
网页:
所以,如果你想要修改容器中Tomcat的端口号,直接进入容器的/usr/local/tomcat/conf/server.xml
自改即可。
Nginx部署
- 拉取Nginx镜像
1 | docker pull nginx |
- 创建Nginx容器
1 | docker run -di --name=docker_nginx -p 80:80 nginx |
- 测试
在浏览器上访问:http://192.168.148.132/
可以进入到Nginx的欢迎页。
其他
以上我们介绍了MySQL、Tomcat、Nginx容器的创建,对于其他的服务,如Redis等操作基本相同,不再阐述。
备份与迁移
- 容器保存为镜像
可以通过以下命令将我们已创建(配置好的)容器打包为镜像,这样我们以后就能用该镜像再次创建新的容器了:
1 | docker commit docker_tomcat my_tomcat |
docker_tomcat
是容器名称;my_tomcat
是新的镜像名称。
- 镜像备份
通过以下命令可以将镜像打包为tar文件:
1 | docker save -o my_tomcat.tar my_tomcat |
-o
输出到的文件
- 镜像恢复与
当我们删除了docker_tomcat
镜像后,可以通过以下命令将刚才打包备份的.tar
镜像文件恢复成一个Docker镜像:
1 | docker load -i my_tomcat.tar |
-i
输入的文件。