Docker(三):部署软件
Docker的镜像文件可以在镜像仓库中进行搜索。
部署软件目录导航:
- 常用命令
- 部署 Tomcat
- 部署 MySQL
- 部署 Oracle
常用命令
docker的常用命令如下:
- docker -v , --version : 输出当前docker的版本信息。
- docker images : 查看镜像,-a 表示查看所有 ,-q 只显示镜像ID。
- docker ps : 查看所有运行中的容器列表,-a 表示查看所有(包括已退出的容器),-q 只显示ID,-s显示文件大小。
- docker pull : 从镜像仓库下载镜像,默认的镜像仓库地址:(https://hub.docker.com),可以直接下载镜像仓库中有的镜像文件,默认下载latest版本,也使用:tag指定下载哪个版本。
- docker rm: 删除容器,后面带指定容器的ID,即可删除对应的容器。
- docker rmi: 删除奖项文件,后面可以是镜像文件的名称或则ID,都可删除镜像文件。
- docker run: 启动镜像并创建一个新容器实例,-a 可以添加STDIN、STDOUT或STDERR,-d 表示容器在后台执行(比较常用),-e 可以设置环境变量,-m 可以设置内存大小, -p 可以将系统端口指向容器端口,使其可以在容器外进行访问,(例如 -p 80:8080 可以将系统的80端口与容器的8080端口绑定。则容器外可以对80端口访问到容器的8080端口,比较常用), -v 可以将宿主的文件挂载到容器上,如 -v /test:/soft 将会把宿主的 /test 目录挂载到容器的 /soft目录下,如果test目录不存在则会新建一个test目录。
- docker stop: 停止容器的运行。
- docker logs: 显示容器的日志信息,-f 跟踪容器实施日志信息,-t 显示日志的时间信息。
- docker search: 在Docker Hub 中搜索镜像文件。
具体的执行命令,还可以去参考镜像仓库对应镜像的详细介绍。
部署 Tomcat
下载Tomcat镜像文件,如下命令会下载latest版本的tomcat。
[root@localhost ~]# docker pull tomcat
下载完成后可以使用 docker images 查看下载后的镜像文件信息。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/tomcat latest df50c9d355cf 6 days ago 463 MB
启动tomcat程序,如下命令会在后台执行tomcat。并将tomcat默认的8080端口指向系统的8080端口。
[root@localhost ~]# docker run -d -p 8080:8080 tomcat
如果想打开多个Tomcat则直接,如上一样的名并将8080端口改为8081则,两个tomcat互不干扰,可同时存在。
docker run -d -p 8081:8080 tomcat
使用docker ps 查看正在运行的程序
[root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d64f362c40a tomcat "catalina.sh run" 8 seconds ago Up 7 seconds 0.0.0.0:8081->8080/tcp gracious_bohr 39d01b39e8d3 tomcat "catalina.sh run" 4 minutes ago Up 4 minutes 0.0.0.0:8080->8080/tcp wizardly_davinci
其中有两个Tomcat程序。如下访问结果:
部署 MySQL
下载最新版Mysql。
[root@localhost ~]# docker pull mysql
查看镜像是否下载成功。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/tomcat latest df50c9d355cf 6 days ago 463 MB docker.io/mysql latest 8d99edb9fd40 6 days ago 445 MB
启动镜像文件,执行如下命令,会在后台启动mysql,暴露3306端口,并命名为 my-mysql 且设置root密码为123456。
[root@localhost ~]# docker run -p 3306:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
执行如下命令可以进入mysql 的 client。第一条 docker exec -it my-mysql bash。 可以进入到mysql的bash shell界面,然后执行 mysql -uroot -p是输入密码即可进入到mysql client。
[root@localhost ~]# docker exec -it my-mysql bash root@f3f79ca4eae1:/# mysql -uroot -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 35 Server version: 8.0.11 MySQL Community Server - GPL Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
可以通过日志看到安装的 mysql 版本是 8.0.11。这个版本使用navicat连接时,会报如下错误:
执行select host, user, authentication_string, plugin from user;命令可以查询
- host : 允许用户登录的IP,%表示可远程登录。
- user : 当前数据库的用户名。
- authentication_string: 用户的密码。
- plugin : 密码的加密方式。
导致如上问题就是因为 'root'@'%' 的密码加密方式 使用的是 caching_sha2_password。我们需要修改它的加密方式。
mysql> select host, user, authentication_string, plugin from user; +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | host | user | authentication_string | plugin | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ | % | root | $A$005$bx9?Rgb:Y0&7q7:;Ef8isqjh0JQzsp6bJXk4eL/ibgbXx8zwdntsl0qxGA8 | caching_sha2_password | | localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password | +-----------+------------------+------------------------------------------------------------------------+-----------------------+ 5 rows in set (0.00 sec)
执行如下命令进行修改加密方式。
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456'; Query OK, 0 rows affected (0.09 sec) mysql> select host, user, authentication_string, plugin from user; +-----------+------------------+-------------------------------------------+-----------------------+ | host | user | authentication_string | plugin | +-----------+------------------+-------------------------------------------+-----------------------+ | % | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password | | localhost | mysql.infoschema | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | | localhost | root | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | mysql_native_password | +-----------+------------------+-------------------------------------------+-----------------------+ 5 rows in set (0.00 sec)
执行完毕后查看加密方式已修改,现使用navicat连接测试如下。
部署 Oracle
第一步还是下载Oracle数据库镜像仓库搜索的oracle 11g 可以找到 wnameless/oracle-xe-11g 镜像文件。
[root@localhost ~]# docker pull wnameless/oracle-xe-11g
查看下载后的镜像文件有2.13GB,比较大。
[root@localhost ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/tomcat latest df50c9d355cf 6 days ago 463 MB docker.io/mysql latest 8d99edb9fd40 7 days ago 445 MB docker.io/wnameless/oracle-xe-11g latest 698cc7361de4 5 weeks ago 2.13 GB
启动命令如下:
[root@localhost ~]# docker run --name oracle -d -p 1521:1521 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g
默认用户信息如下:
hostname: localhost port: 1521 sid: xe username: system password: oracle
SYS&SYSTEM的密码 oracle
测试效果如下: