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 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(三):部署软件的更多相关文章
- 基于Ubuntu下以Docker方式gitlab软件的部署
基于Ubuntu下以Docker方式gitlab软件的部署 目录 基于Ubuntu下以Docker方式gitlab软件的部署 1.安装Docker Compose 1.1 下载curl 1.2 安装c ...
- 从头认识一下docker-附带asp.net core程序的docker化部署
从头认识一下docker-附带asp.net core程序的docker化部署 简介 在计算机技术日新月异的今天, Docker 在国内发展的如火如荼,特别是在一线互联网公司, Docker 的使用是 ...
- 私活利器,docker快速部署node.js应用
http://cnodejs.org/topic/53f494d9bbdaa79d519c9a4a 最近研究了几天docker的快速部署,感觉很有新意,非常轻量级和方便,打算在公司推广一下,解放运维, ...
- 基于Docker一键部署大规模Hadoop集群及设计思路
一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...
- 使用Docker镜像部署ELK日志系统
使用Docker部署elasticsearch.logstash.kibana 指定版本:6.7.1 (建议使用同一的版本.屏蔽三个软件间的不兼容性) 下载镜像: docker pull elasti ...
- 离线服务器下docker的部署与应用
一分钟内形成docker的模糊概念 网上很多文章避免将docker与虚拟机混为一谈,但对于初学者来说,完全可以将docker当做一种虚拟机技术,只需要牢牢记住一点最重要的区别:docker依赖于物理机 ...
- Linux 上安装Docker 并部署netcor2.1
述 容器,顾名思义是用来存放并容纳东西的器皿: 而容器技术伴着Docker的兴起也渐渐的映入大家的眼帘,它是一个抽象的概念,同时也是默默存在世上多年的技术,不仅能使应用程序间完全的隔离,而且还能在共享 ...
- Docker如何部署Python项目
Docker 部署Python项目 作者:白宁超 2019年5月24日09:09:00 导读: 软件开发最大的麻烦事之一就是环境配置,操作系统设置,各种库和组件的安装.只有它们都正确,软件才能运行.如 ...
- Docker 方式部署 Solo 博客系统总结
此篇为Docker部署方式,另有Tomcat部署方式,请参考文章<Tomcat 方式部署 Solo 博客系统总结> 最近搭建了一个博客系统,作为自己的主页,方便记录一些平时所见所闻 ...
随机推荐
- OAuth2.0 入门与进阶
一.基础知识 1.OAuth产生背景 很多网站.APP 弱化甚至没有搭建自己的账号体系,而是直接使用社会化登录的方式,这样不仅免去了用户注册账号的麻烦.还可以获取用户的好友关系来增强自身的社交功能. ...
- Android 马甲包制作流程
一.马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android { signingConfigs { confi ...
- Java NIO(二) Channel
Java NIO的通道类似流,但又有些不同: 既可以从通道中读取数据,又可以写数据到通道.但流的读写通常是单向的. 通道可以异步地读写. 通道中的数据总是要先读到一个Buffer,或者总是要从一个Bu ...
- Android 自定义View实现SegmentControlView(自定义多样式tablayout)
偷懒一下,不做过多阐述 参考资源: Android 自定义View实现SegmentControlView : https://blog.csdn.net/a512337862/article/det ...
- c#中abstract、override、new、virtual、sealed使用和示例
原文地址:http://blog.csdn.net/richerg85/article/details/7407544 abstract 修饰类名为抽象类,修饰方法为抽象方法.如果一个类为抽 ...
- visual studio 调试 不进断点 断点失效 提示当前不会命中该断点等问题解决
1.首先看一下 当前调试模式是否为debug 2. 点击[调试]>[选项和设置] 将[要求源文件与原始文件完全匹配]勾选掉 3.点击调试的最后一个选项 点击[web] 将调试器内部勾选上需要测 ...
- day008-File文件
1. File 文件和目录路径名的抽象表示形式. 一个File类对象就代表了一个文件或文件夹. 1.1 File类的作用 用来操作硬盘上的文件或文件夹 绝对路径:一般是以盘符开始的,比如:C:/Jav ...
- May 21st 2017 Week 21st Sunday
The smallest deed is better than the greatest intention. 最微小的行动胜过最伟大的打算. Several years ago, just aft ...
- 如何使用Putty登录安装在VirtualBox里的ubuntu
我是在Windows操作系统里用VirtualBox安装了ubuntu操作系统. 在VirtualBox里操作ubuntu的终端不是很方便,比如我想在Windows里复制一些命令到ubuntu的终端执 ...
- 从产品展示页面谈谈Hybris系列之二: DTO, Converter和Populator
文章作者:张健(Zhang Jonathan) 上一篇文章 从产品展示页面谈谈Hybris的特有概念和设计结构 我们讲解了Hybris一些特有的概念以及大体架构,并且介绍了Facade层里是如何定义D ...