美文网首页Docker
Linux安装ping\ifconfig工具、Docker部署M

Linux安装ping\ifconfig工具、Docker部署M

作者: greye | 来源:发表于2020-10-31 13:37 被阅读0次

    docker是十分方便的开发环境,可以节约大量的环境配置时间,让开发者更加专注于代码部分,而不是环境配置问题。但是在实际的使用过程中依然还是会有很多问题存在,比如:Linux的docker版本服务器优化后缺少ping工具,缺少ifconfig工具等。

    1、安装ping工具

    比如常用的网络连通测试工具ping,就被精简掉了。
    如何再安装上呢?请使用下面的命令:

    apt-get install inetutils-ping
    

    2、安装ifconfig工具

    如何再安装上ifconfig呢?请使用下面的命令:

    apt-get install net-tools
    

    3、使用docker部署MySQL并配置

    (1)拉镜像

    docker pull mysql/mysql-server
    如果想要安装5.8版本的,可以执行以下命令:
    docker pull mysql/mysql-server:5.8
    等待之后,安装成功,我们查看在本地存储的镜像。

    REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
    mysql/mysql-server                              latest              467687877063        1 weeks ago         305MB
    

    接下来执行创建容器的命令。

    (2)创建容器

    注意:配置环境变量MYSQL_ROOT_PASSWORD。
    docker run --name mysql1 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:latest
    在这里要注意-p 33306:3306,前面是宿主机端口,后面是容器Linux本地端口;还有注意最后的:latest,这个是可省略的。如果刚才安装的是指定版本,比如5.8,那么我们就需要执行以下命令了:

    docker run --name mysql1 -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql/mysql-server:5.8
    好了,安装完成,进行连接测试了。

    (3)配置mysql

    如提示下错误:

    Host '172.17.0.1' is not allowed to connect to this MySQL server
    

    那么我们需要登录mysql进行修改权限。
    首先是登录mysql,密码就是我们设置的123456:

    $ docker exec -it mysql1 mysql -uroot -p
    Enter password:
    

    然后执行如下命令:

    use mysql;
    update user set host = '%' where user = "root";
    flush privileges;(运行后,mysql缓存数据会更新。)
    

    连接测试,发现就正常了。

    (4)查看mysql版本号

    在命令行登录mysql,即可看到mysql的版本号

    $ docker exec -it mysql1 mysql -uroot -p
    Enter password:
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 268
    Server version: 8.0.22 MySQL Community Server - GPL
    
    Copyright (c) 2000, 2020, 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,使用select查询:

    mysql> select version();
    +-----------+
    | version() |
    +-----------+
    | 5.8.1    |
    +-----------+
    1 row in set (0.01 sec)
    

    (5)mysql版本过高认证失败

    mysql 安装了最新版本8.0.11后创建用户并授权后,授权的用户连接数据库提示

    The server requested authentication method unknown to the client
    

    查阅一些相关的资料后发现是由于新版本的mysql账号密码解锁机制不一致导致的

    (6)MySQL的相关配置信息

    找到MySQL的数据目录,以及配置文件my.cnf、错误日志的位置。

    mysql> show variables like 'datadir%';
    +---------------+-----------------+
    | Variable_name | Value           |
    +---------------+-----------------+
    | datadir       | /var/lib/mysql/ |
    +---------------+-----------------+
    1 row in set (0.03 sec)
    
    mysql> show variables like 'log_error';
    +---------------+---------------------+
    | Variable_name | Value               |
    +---------------+---------------------+
    | log_error     | /var/log/mysqld.log |
    +---------------+---------------------+
    1 row in set (0.01 sec)
    mysql> 
    
    [root@XXXX ~]$ whereis my.cnf
    
    my: /etc/my.cnf
    

    (6)给数据库做个备份

    以备不时之需。当然,你也可以用其它方式备份。

    [root@XXXX  ~]$ service mysqld stop
    Redirecting to /bin/systemctl stop mysqld.service
     
    [root@XXXX  ~]$ cp -rp /var/lib/mysql  /tmp/coldbackup
    
    解决办法:

    方法1
    删除创建的用户和授权,找到mysql配置文件并加入
    default_authentication_plugin=mysql_native_password
    变为原来的验证方式,然后从新创建用户并授权即可

    方法2

    $ mysql -uroot -p
    
    > use mysql;
    
    > ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';
    

    4、使用docker部署配置常见问题

    (1)docker传输文件

    docker cp thinksaas1:/var/www/html/   /thinksaas_data/
    

    直接使用cp命令,从指定容器内:指定目录,拷贝到本地目录。

    (2)docker挂载本地目录

    docker run --name thinksaas -v /thinksaas_data/html:/var/www/html  -it -p 80:80 thinksaas/thinksaas /bin/bash
    

    直接使用-v参数,把本地目录:挂载到docker目录下。

    (3)docker挂载本地目录后没有权限

    docker run --name thinksaas -v /thinksaas_data/html:/var/www/html --privileged=true  -it -p 80:80 thinksaas/thinksaas /bin/bash
    

    直接使用--privileged=true参数,给docker本地目录权限。


    测试

    相关文章

      网友评论

        本文标题:Linux安装ping\ifconfig工具、Docker部署M

        本文链接:https://www.haomeiwen.com/subject/fdqsvktx.html