zoukankan      html  css  js  c++  java
  • 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

    测试效果如下:

  • 相关阅读:
    Windows-快速预览文件-QuickLook
    Chrome简洁高效管理下载项
    有Bug?你的代码神兽选对了吗
    保护视力-刻不容缓
    一次看懂 Https 证书认证
    Web前端助手-功能丰富的Chrome插件
    Chrome自动格式化Json输出
    网络爬虫
    彻底搞懂Cookie,Session,Token三者的区别
    Redis内存满了的解决办法
  • 原文地址:https://www.cnblogs.com/peter1018/p/9259454.html
Copyright © 2011-2022 走看看