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 days ago MB

启动tomcat程序,如下命令会在后台执行tomcat。并将tomcat默认的8080端口指向系统的8080端口。

[root@localhost ~]# docker run -d -p 8080:8080 tomcat

如果想打开多个Tomcat则直接,如上一样的名并将8080端口改为8081则,两个tomcat互不干扰,可同时存在。

docker run -d -p : tomcat

使用docker ps 查看正在运行的程序

[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d64f362c40a tomcat "catalina.sh run" seconds ago Up seconds 0.0.0.0:->/tcp gracious_bohr
39d01b39e8d3 tomcat "catalina.sh run" minutes ago Up minutes 0.0.0.0:->/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 days ago MB
docker.io/mysql latest 8d99edb9fd40 days ago MB

启动镜像文件,执行如下命令,会在后台启动mysql,暴露3306端口,并命名为 my-mysql 且设置root密码为123456。

[root@localhost ~]#  docker run -p 3306:3306 --name my-mysql -e MYSQL_ROOT_PASSWORD= -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
Server version: 8.0. MySQL Community Server - GPL Copyright (c) , , 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$$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 |
+-----------+------------------+------------------------------------------------------------------------+-----------------------+
rows in set (0.00 sec)

执行如下命令进行修改加密方式。

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '';
Query OK, 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 |
+-----------+------------------+-------------------------------------------+-----------------------+
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 days ago MB
docker.io/mysql latest 8d99edb9fd40 days ago MB
docker.io/wnameless/oracle-xe-11g latest 698cc7361de4 weeks ago 2.13 GB

启动命令如下:

[root@localhost ~]# docker run --name oracle -d -p : -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g

默认用户信息如下:

hostname: localhost
port:
sid: xe
username: system
password: oracle

SYS&SYSTEM的密码
oracle

测试效果如下:

Docker(三):部署软件的更多相关文章

  1. 基于Ubuntu下以Docker方式gitlab软件的部署

    基于Ubuntu下以Docker方式gitlab软件的部署 目录 基于Ubuntu下以Docker方式gitlab软件的部署 1.安装Docker Compose 1.1 下载curl 1.2 安装c ...

  2. 从头认识一下docker-附带asp.net core程序的docker化部署

    从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...

  3. 私活利器,docker快速部署node.js应用

    http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...

  4. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  5. 使用Docker镜像部署ELK日志系统

    使用Docker部署elasticsearch.logstash.kibana 指定版本:6.7.1 (建议使用同一的版本.屏蔽三个软件间的不兼容性) 下载镜像: docker pull elasti ...

  6. 离线服务器下docker的部署与应用

    一分钟内形成docker的模糊概念 网上很多文章避免将docker与虚拟机混为一谈,但对于初学者来说,完全可以将docker当做一种虚拟机技术,只需要牢牢记住一点最重要的区别:docker依赖于物理机 ...

  7. Linux 上安装Docker 并部署netcor2.1

    述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共享 ...

  8. Docker如何部署Python项目

    Docker 部署Python项目 作者:白宁超 2019年5月24日09:09:00 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如 ...

  9. Docker 方式部署 Solo 博客系统总结

      此篇为Docker部署方式,另有Tomcat部署方式,请参考文章<Tomcat 方式部署 Solo 博客系统总结>   最近搭建了一个博客系统,作为自己的主页,方便记录一些平时所见所闻 ...

随机推荐

  1. Java实现队列结构的详细代码

    一.什么是队列结构 一种线性结构,具有特殊的运算法则[只能在一端(队头)删除,在另一端(队尾)插入]. 分类: 顺序队列结构 链式队列结构 基本操作: 入队列 出队列 二.准备数据 static fi ...

  2. wxPython控件学习之wx.grid.Grid 表格控件

    wxPython控件学习之wx.grid.Grid (包括对GridCellEditor和GridCelRender的扩展,以支持更多的grid cell 样式, 以GridCellColorEdit ...

  3. SQL还原数据库后孤立用户问题处理(SQL 数据库 拥有对象 无法删除)

    所谓孤立帐户,就是某个数据库的帐户只有用户名而没有登录名,这样的用户在用户库的sysusers系统表中存在,而在master数据库的syslogins中却没有对应的记录 孤立帐户的产生一般是一下两种: ...

  4. 浅谈SQL Server中的事务日志(五)----日志在高可用和灾难恢复中的作用

    简介 日志的作用是保证持久性和数据一致性,通过日志可以实现数据的Undo与Redo,因此通过日志,SQL Server不仅仅可以实现灾难恢复,还可以通过日志的Redo来实现高可用性.本篇文章主要讲述日 ...

  5. idea打jar包经验总结

    关于在idea下打jar问题,在日常工作中经常用到,这里总结下流程. 1.在项目上鼠标右键 --> Open Module Settings 2.如下图,点击 '+' 3. 选择JAR --&g ...

  6. HTML:一个form表单有两个按钮,分别提交到不同的页面

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. c++中的const用法(很详细)——转

    http://www.cnblogs.com/ymy124/archive/2012/04/16/2451433.html const给人的第一印象就是定义常量. (1)const用于定义常量. 例如 ...

  8. OAuth 2.0协议在SAP产品中的应用

    阮一峰老师曾经在他的博文理解OAuth 2.0里对这个概念有了深入浅出的阐述. http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html 本文会结合我 ...

  9. OC 内存管理(retain和release)

    内存管理 retain和release简单使用 #import "Student.h" @implementation Student @synthesize age = _age ...

  10. 设置IE浏览器的默认下载路径

    实现效果: 知识运用: Default Download Directory键 实现代码: private void button2_Click(object sender, EventArgs e) ...