• docker常用安装:mysql+redis+nginx


    docker安装mysql5.7

    1.docker hub寻找镜像:docker search mysql

    [root@izbp13m488196e5hna361rz /]# docker search mysql
    NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   10545     [OK]       
    mariadb                           MariaDB is a community-developed fork of MyS…   3937      [OK]       
    mysql/mysql-server                Optimized MySQL Server Docker images. Create…   773                  [OK]
    percona                           Percona Server is a fork of the MySQL relati…   527       [OK]       
    centos/mysql-57-centos7           MySQL 5.7 SQL database server                   86                   
    mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   79                   
    centurylink/mysql                 Image containing mysql. Optimized to be link…   59                   [OK]
    bitnami/mysql                     Bitnami MySQL Docker Image                      48                   [OK]
    deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                   [OK]
    databack/mysql-backup             Back up mysql databases to... anywhere!         38                   
    prom/mysqld-exporter                                                              37                   [OK]

    2.从docker hub上拉取mysql 5.7镜像,注意tag为5.7:docker pull mysql:5.7

    [root@izbp13m488196e5hna361rz /]# docker pull mysql:5.7
    5.7: Pulling from library/mysql
    a076a628af6f: Already exists 
    f6c208f3f991: Pull complete 
    88a9455a9165: Pull complete 
    406c9b8427c6: Pull complete 
    7c88599c0b25: Pull complete 
    25b5c6debdaf: Pull complete 
    43a5816f1617: Pull complete 
    1831ac1245f4: Pull complete 
    37677b8c1f79: Pull complete 
    27e4ac3b0f6e: Pull complete 
    7227baa8c445: Pull complete 
    Digest: sha256:b3d1eff023f698cd433695c9506171f0d08a8f92a0c8063c1a4d9db9a55808df
    Status: Downloaded newer image for mysql:5.7
    docker.io/library/mysql:5.7
    [root@izbp13m488196e5hna361rz /]# docker images mysql
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    mysql        5.7       a70d36bc331a   5 weeks ago   449MB

    3.使用mysql5.7镜像创建容器

    docker run -p 3306:3306 
    --name mysql57 
    -v /nick/mysql/conf:/etc/mysql/conf.d 
    -v /nick/mysql/logs:/logs 
    -v /nick/mysql/data:/var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=123456 
    -d 
    mysql:5.7
    # 命令说明:
    -p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
    --name mysql57:运行容器的名字
    -v /nick/mysql/conf:/etc/mysql/conf.d :将主机/nick/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d
    -v /nick/mysql/logs:/logs:将主机/nick/mysql目录下的 logs 目录挂载到容器的 /logs。
    -v /nick/mysql/data:/var/lib/mysql :将主机/nick/mysql目录下的data目录挂载到容器的 /var/lib/mysql 
    -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。
    -d mysql:5.7 : 后台程序运行mysql5.7

    查看容器:

    [root@izbp13m488196e5hna361rz nick]# docker ps
    CONTAINER ID   IMAGE       COMMAND                  CREATED              STATUS              PORTS                               NAMES
    fbcdf7813a1b   mysql:5.7   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp, 33060/tcp   mysql57

    4.进入容器中的mysql,进行添加库、添加表、添加数据的操作:

    [root@izbp13m488196e5hna361rz nick]# docker exec -it fbcdf7813a1b /bin/bash
    root@fbcdf7813a1b:/# mysql -uroot -p123456
    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or g.
    Your MySQL connection id is 4
    Server version: 5.7.33 MySQL Community Server (GPL)
    
    Copyright (c) 2000, 2021, Oracle and/or its affiliates.
    
    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> create database db01; 
    Query OK, 1 row affected (0.00 sec)
    
    mysql> use db01;
    Database changed
    
    mysql> create table t_book(id int not null primary key, bookName varchar(20));
    Query OK, 0 rows affected (0.23 sec)
    
    mysql> insert into t_book values(1,"python");
    Query OK, 1 row affected (0.11 sec)
    
    mysql> show tables;
    +----------------+
    | Tables_in_db01 |
    +----------------+
    | t_book         |
    +----------------+
    1 row in set (0.00 sec)
    
    mysql> select * from t_book; 
    +----+----------+
    | id | bookName |
    +----+----------+
    |  1 | python   |
    +----+----------+
    1 row in set (0.00 sec)

    5.客户端使用工具连接数据库

    新建的库、表、数据都正常。

    6.进行数据库备份

     进行数据库的全量备份:docker exec fbcdf7813a1b mysqldump --all-databases -uroot -p123456 > /nick/mysql/backup/all-databases.sql

    [root@izbp13m488196e5hna361rz mysql]# docker exec fbcdf7813a1b mysqldump --all-databases -uroot -p123456 > /nick/mysql/backup/all-databases.sql
    mysqldump: [Warning] Using a password on the command line interface can be insecure.
    [root@izbp13m488196e5hna361rz mysql]# ll backup/
    total 3492
    -rw-r--r-- 1 root root 3573909 Mar  4 16:22 all-databases.sql
    [root@izbp13m488196e5hna361rz mysql]# vi backup/all-databases.sql 
    
    -- MySQL dump 10.13  Distrib 5.7.33, for Linux (x86_64)
    --
    -- Host: localhost    Database:
    -- ------------------------------------------------------
    -- Server version       5.7.33
    
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8 */;
    /*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
    /*!40103 SET TIME_ZONE='+00:00' */;
    /*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
    /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
    /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
    /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
    
    --
    -- Current Database: `mysql`
    
    。。。。。。。。。。

    docker安装redis

    1.从docker hub上拉取redis 3.2镜像,注意tag为3.2:docker pull redis:3.2

    [root@izbp13m488196e5hna361rz ~]# docker pull redis:3.2
    3.2: Pulling from library/redis
    Digest: sha256:7b0a40301bc1567205e6461c5bf94c38e1e1ad0169709e49132cafc47f6b51f3
    Status: Downloaded newer image for redis:3.2
    docker.io/library/redis:3.2
    [root@izbp13m488196e5hna361rz ~]# docker images redis
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    redis        3.2       87856cc39862   2 years ago   76MB

    2.使用redis 3.2镜像创建容器

    docker run -p 6379:6379 
    -v /nick/redis/data:/data 
    -d redis:3.2 redis-server --appendonly yes
    命令说明:
    -p 6379:6379 : 将容器的6379端口映射到主机的6379端口
    -v /nick/redis/data:/data : 将宿主机中目录下的data挂载到容器的/data
    redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置
    [root@izbp13m488196e5hna361rz ~]# docker run -p 6379:6379 
    > -v /nick/redis/data:/data 
    > -d redis:3.2 redis-server --appendonly yes
    a44f0c71a099000c26e525136fef9a437d98f7abddbdd66ff8ce4f5cdee30afa
    [root@izbp13m488196e5hna361rz ~]# docker ps 
    CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                               NAMES
    a44f0c71a099   redis:3.2   "docker-entrypoint.s…"   6 seconds ago   Up 4 seconds   0.0.0.0:6379->6379/tcp              pedantic_williamson
    fbcdf7813a1b   mysql:5.7   "docker-entrypoint.s…"   7 days ago      Up 7 days      0.0.0.0:3306->3306/tcp, 33060/tcp   mysql57

    3.用客户端redis-cli连接测试,插入数据并关闭redis

    [root@izbp13m488196e5hna361rz ~]# docker exec -it a44f0c71a099 redis-cli
    127.0.0.1:6379> set k1 v1
    OK
    127.0.0.1:6379> set k2 v2
    OK
    127.0.0.1:6379> shutdown

    4.查看宿主机中的/nick/redis/data数据文件

    [root@izbp13m488196e5hna361rz data]# ll /nick/redis/data/
    total 4
    -rw-r--r-- 1 systemd-bus-proxy input 81 Mar  5 15:18 appendonly.aof
    [root@izbp13m488196e5hna361rz data]# cat appendonly.aof 
    *2
    $6
    SELECT
    $1
    0
    *3
    $3
    set
    $2
    k1
    $2
    v1
    *3
    $3
    set
    $2
    k2
    $2
    v2

    docker安装nginx

     1.从docker hub上拉取nginx 1.8镜像,注意tag为1.8:docker pull nginx:1.8

    [root@izbp13m488196e5hna361rz data]# docker images nginx
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        1.8       0d493297b409   4 years ago   133MB

    2.使用nginx 1.8镜像创建容器

    [root@izbp13m488196e5hna361rz data]# docker run -p 8888:80 -d nginx:1.8
    d5920f13fd0c8ca2d49c930a3b0a80ca64e2e0f967ddbee809d7614f0f8365fe
    [root@izbp13m488196e5hna361rz data]# docker ps
    CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                               NAMES
    d5920f13fd0c   nginx:1.8   "nginx -g 'daemon of…"   5 seconds ago   Up 4 seconds   443/tcp, 0.0.0.0:8888->80/tcp       blissful_bartik
    a44f0c71a099   redis:3.2   "docker-entrypoint.s…"   2 hours ago     Up 2 hours     0.0.0.0:6379->6379/tcp              pedantic_williamson
    fbcdf7813a1b   mysql:5.7   "docker-entrypoint.s…"   7 days ago      Up 7 days      0.0.0.0:3306->3306/tcp, 33060/tcp   mysql57

    3.浏览器测试

    4.实际工作中一般会准备好nginx的配置文件,并在宿主机中挂载配置文件和日志

    docker run -p 8888:80 
    -v /nick/nginx/nginx.conf:/etc/nginx/nginx.conf 
    -v /nick/nginx/log:/var/log/nginx 
    -v /nick/nginx/conf.d:/etc/nginx/conf.d 
    -d nginx:1.8
    命令说明:
    -p 8888:80 : 将容器的80端口映射到主机的8888端口
    -v /nick/nginx/nginx.conf:/etc/nginx/nginx.conf : 将宿主机中目录下的nginx.conf覆盖到容器的nginx.conf文件
    -v /nick/nginx/log:/var/log/nginx : 日志目录挂载
    -v /nick/nginx/conf.d:/etc/nginx/conf.d : 配置文件目录挂载
    -d nginx:1.8 后台启动
    [root@izbp13m488196e5hna361rz log]# docker ps
    CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                               NAMES
    d23f24e8efaf   nginx:1.8   "nginx -g 'daemon of…"   19 minutes ago   Up 19 minutes   443/tcp, 0.0.0.0:8888->80/tcp       cool_hoover

    验证一下配置文件nginx.conf是否覆盖(这里宿主机准备好的文件中worker_processes为2)

    [root@izbp13m488196e5hna361rz log]# grep worker_processes /nick/nginx/nginx.conf 
    worker_processes  2;
    [root@izbp13m488196e5hna361rz log]# docker exec d23f24e8efaf grep worker_processes /etc/nginx/nginx.conf 
    worker_processes  2;

    很重要的一点:

    当 -v 后面是 文件a:文件b 时,是文件的覆盖,需要在宿主机中事先准备好文件a(不然会报错),一般用来设置容器的启动配置项。

    当 -v 后面是 路径a:路径b 时,是文件夹的挂载,一般用于数据、日志等目录的同步,方便在宿主机中查询与跟踪。

    
    
  • 相关阅读:
    solr jvm参数内存自动计算
    记一次使用Chrome修改useragent
    如何查看本机中已安装的.Net Framework版本
    经典实例 PetShop 4.0 For .NET 2.0 下载
    Web.Config配置节加密工具
    some command for Nokia IP 740
    JNCIP进阶OSPF MultiArea Configuration
    寒武纪
    Symantec AntiVirus Corporate Edition 10.0 Error: "Can't communicate with the Server Group..."
    心房客
  • 原文地址:https://www.cnblogs.com/xulan0922/p/14448551.html
Copyright © 2020-2023  润新知