资讯详情

docker安装mysql,redis,nginx

docker

注:本文docker安装在服务器上

0. linux部分常用指令

1.结束进程 kill 进程号 例子 kill 32621 2.检查指定的过程 ps -ef|grep 进程号 例子 ps -ef|grep 32621 3.启动指定名称的服务 service 服务名 start 例子 service mysql start 4.检查指定服务名称的状态 service 服务名 status 例子 service mysql status 5.关闭指定名称的服务 service 服务名 stop 例子 service mysql stop 6.查看目录 ll 7.查询根目录(包括子目录),B的目录和文件 find / -name 'b' 8.查询B开头的根目录(包括子目录)的目录和文件 find / -name 'b*' 

1. docker常用指令

docker search 镜像名称 ///搜索镜像 docker pull 镜像名称:版本号 ////拉相应版本的镜像 docker pull 镜像名称 ///默认拉取最新镜像 docker images ///查看本地下载的镜像 docker ps ///检查正在运行的容器 docker ps -a ///检查所有容器(包括run、stop、exited状态的) docker container ls ///检查正在运行的容器 docker rm 容器ID ///只能删除未运行的容器 docker rm -f 容器ID ///可以删除正在运行的容器 docker run -p 本地主机端口号:容器服务端口号: --name 容器名字 [-e 配置信息修改] -d 镜像名字 docker start 容器ID //启动容器 docker stop 容器ID //终止容器 docker rmi 镜像名称orID ///删除镜像 

2. docker安装mysql

  1. docker仓库搜索mysql
docker search mysql 

请添加图片描述

  1. docker仓库拉取mysql8.0
拉取8.0版本 docker pull mysql:8.0 不指定版本 拉去最新版本 docker pull mysql 

3.检查当地仓库镜像是否成功下载

docker images mysql:8.0 

4.安装容器

需要注意的

在没有加

--privileged=true 

安装容器后,容器启动失败

查看日志中的信息

[root@VM-0-9-centos ~]# docker logs -f 85e630fdff69 2022-07-22 01:15:40 00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started. 2022-07-22 01:15:40 00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql' 2022-07-22 01:15:40 00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.29-1.el8 started. ls: cannot access '/docker-entrypoint-initdb.d/': Operation not permitted 

添加后,容器启动成功

docker run -p 3307:3306 --name mysql8.0 --privileged=true  -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0 

语句啥意思

docker run -p 3307:3306 --name mysql8.0 --privileged=true  -e MYSQL_ROOT_PASSWORD=123456  -d mysql:8.0  -p 服务器端口号:服务器docker中mysql容器端口号  将服务器端口映射到docker容器端口(因为服务器的3306端口已经被使用mysql占用,所以使用3307) 还安装了服务器mysql 占用3306端口  --name 自定义容器名   --priviledge=true  容器内的root拥有真正的root否则,容器中的权限root只是外部普通用户权限  -e 配置信息,配置ROOT的密码 -e MYSQL_ROOT_PASSWORD=用户密码   -d 镜像名 
  1. docker登录mysql
docker exec -it mysql8.0 bash mysql -uroot -p 输入数据库密码 

  1. 使用navicat登录mysql

因为要连接服务器docker中安装的mysql 所以主机为 服务器ip地址

本地端口号3306运行 计算机的mysql

因此,3307端口用于映射服务器docker中的mysql3306端口

点击"确定",连接失败,报错为

navicat不支持caching_sha_password加密方式 

原因:mysql8.使用新的密码加密方法:caching_sha_password

修改解决方案root@localhost对于旧的加密方法,并重置密码

操作步骤

1.cmd运行mysql 键入密码 mysql -h localhost -u root -p 

2.查看root用户加密 select user,plugin from user where user='root'; 

3.查看root用户的ip位置(host) select user,host from user; 发现为localhost 本地 

4.修改root的加密方式 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456'  root'@'localhost 修改用户名和ip地址 mysql_native_password 为加密方式 123456 为 修改的密码 
5.再次查看root用户加密 select user,plugin from user where user='root';  root已修改为mysql_native_password 

6.点击navicat中新建连接"确定",连接成功 

3. docker安装redis

  1. docker仓库搜索redis
docker search redis 

  1. docker仓库拉取redis6.2.4
docker pull redis:6.2.4 

  • 查看本地仓库镜像是否下载成功
  • docker images redis:6.2.4
    

    1. 安装并启动redis容器
    docker run --name redis6.2.4 -p 6380:6379 -d --restart=always redis:6.2.4 redis-server --appendonly yes --requirepass "123456"
    

    上面语句啥意思

    -d 让容器在后台运行
    
    --name 自定义容器名
    
    -p 服务器本地端口号:服务器的docker中redis容器端口号 
    将服务器的端口映射到docker容器端口(因为服务器的6379端口已被redis占用,所以使用6380)
    服务器也安装了redis 占用6379端口
    
    --restart=always
    重启docker时,自动启动该容器
    
    redis:6.2.4 为容器使用的镜像名
    
    redis-server 在容器内执行redis-server命令
    
    --appendonly yes
    开启redis持久化
    
    --requirepass 访问redis的密码
    

    1. docker登录redis
    进入redis6.2.4容器
    docker exec -it redis6.2.4 /bin/bash
    打开redis客户端
    redis-cli
    执行ping命令
    ping
    输入密码
    auth 密码
    再ping
    ping
    

    4. docker安装nginx

    1. docker仓库拉取nginx1.18.0
    docker pull nginx:1.18.0
    

    1. 查看本地仓库镜像是否下载成功
    docker images nginx:1.18.0
    

    1. 安装并启动nginx容器
    docker run --name nginx1.18.0 -p 80:80 -d nginx:1.18.0
    

    1. 容器的重启,重新加载
    docker exec -t 容器id nginx -t
    docker exec -t 容器id nginx -s reload
    

    4.11 nginx的配置

    1. 创建文件目录
    需要找到docker文件夹在哪
    find / -name 'docker'
    

    在docker文件夹下 创建文件夹
    mkdir -p /xxx/docker/nginx/conf/conf.d    存放你自己的项目的nginx配置的文件夹
    mkdir -p /xxx/docker/project    存放你自己的项目文件的文件夹
    mkdir -p /xxx/docker/nginx/html 存放静态文件
    mkdir -p /xxx/docker/nginx/ssl   存放你的域名SSL证书的文件夹
    mkdir -p /xxx/docker/nginx/logs    存放nginx的日志文件的文件夹
    (xxx:是你自己存放这些文件的根目录)
    本服务器的 /xxx/为 /var/lib/
    

    查看文件夹是否成功建立
    cd /var/lib/docker
    ll
    

    1. 获取之前安装并启动的nginx容器id
    查看指定服务名称的信息
    docker ps|grep nginx1.18.0
    

    1. 将该容器的默认配置 拷贝到建立的文件夹中
    docker cp 41018cb2483c:/etc/nginx/nginx.conf /xxx/docker/nginx/conf/nginx.conf
    docker cp 41018cb2483c:/etc/nginx/conf.d /xxx/docker/nginx/conf
    docker cp 41018cb2483c:/usr/share/nginx/html /xxx/docker/nginx
    
    /xxx/ 本服务器的路径为 /var/lib
    
    docker cp 41018cb2483c:/etc/nginx/nginx.conf /var/lib/docker/nginx/conf/nginx.conf
    docker cp 41018cb2483c:/etc/nginx/conf.d /var/lib/docker/nginx/conf
    docker cp 41018cb2483c:/usr/share/nginx/html /var/lib/docker/nginx
    
    拷贝之后,停止并删除容器
    docker stop 41018cb2483c
    docker rm 41018cb2483c
    

    1. 创建nginx容器并启动服务
    docker run \
    -p 80:80 \
    --name 自定义nginx服务名 \
    --restart=always \
    -v /xxx/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    -v /xxx/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    -v /xxx/docker/nginx/html:/usr/share/nginx/html \
    -v /xxx/docker/nginx/logs:/var/log/nginx \
    -v /xxx/docker/project:/root/project \
    -d \
    nginx的镜像名
    
    -v -> 宿主机与容器的映射关系,即-v 宿主机的目录:容器的目录
    
    (/xxx/ 在本服务器中为 /var/lib/)
    
    实例
    [root@VM-0-9-centos docker]# docker run \
    > -p 80:80 \
    > --name nginx1.18.0 \
    > --restart=always \
    > -v /var/lib/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
    > -v /var/lib/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
    > -v /var/lib/docker/nginx/html:/usr/share/nginx/html \
    > -v /var/lib/docker/nginx/logs:/var/log/nginx \
    > -v /var/lib/docker/project:/root/project \
    > -d \
    > nginx:1.18.0
    d1a7b528da05fcf1738fe7ed201a40a6f9a68ab5779926f8048bc0da07d6b689
    [root@VM-0-9-centos docker]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    d1a7b528da05        nginx:1.18.0        "/docker-entrypoint.…"   6 seconds ago       Up 6 seconds        0.0.0.0:80->80/tcp                  nginx1.18.0
    947d1a4c1914        redis:6.2.4         "docker-entrypoint.s…"   About an hour ago   Up About an hour    0.0.0.0:6380->6379/tcp              redis6.2.4
    a562042b80ed        mysql:8.0           "docker-entrypoint.s…"   6 hours ago         Up 6 hours          33060/tcp, 0.0.0.0:3307->3306/tcp   mysql8.0
    

    注意

    nginx启动时将 容器内的目录 和 宿主机的目录 添加了映射关系,即/etc/nginx/conf.d 等同于 /xxx/docker/nginx/conf/conf.d
    

    1. 部署项目时的nginx配置

    执行以下命令,查看nginx.conf文件内容

    cd /var/lib/docker/nginx/conf
    ll
    vim nginx.conf
    

    文件内容

    user  nginx;
    worker_processes  1;
    
    error_log  /var/log/nginx/error.log warn;
    pid        /var/run/nginx.pid;
    
    
    events {
        worker_connections  1024;
    }
    
    
    http {
        include       /etc/nginx/mime.types;
        default_type  application/octet-stream;
    
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';
    
        access_log  /var/log/nginx/access.log  main;
    
        sendfile        on;
        #tcp_nopush     on;
    
        keepalive_timeout  65;
    
        #gzip  on;
    
        include /etc/nginx/conf.d/*.conf;
    }
    

    分析

    文件的最下方
    include /etc/nginx/conf.d/*.conf;
    nginx加载配置文件时 会加载conf.d文件夹下的所有带.conf后缀的配置文件。
    容器中的nginx配置路径为 /etc/nginx/conf.d 
    之前在配置时 为 容器的目录和宿主机的目录添加了映射关系 即/etc/nginx/conf.d/*.conf 等同于 /xxx/docker/nginx/conf/conf.d
    

    在添加项目的nginx的配置时,只需要在/xxx/docker/nginx/conf/conf.d目录下新增一个 配置文件名.conf文件,文件格式必须为

    server{
    	xxx;
    	location / {
    		xxxx;
    	}
    }
    .
    .
    server{
    	xxx;
    	location / {
    		xxxx;
    	}
    }
    

    标签: pcb传感器进口201a75

    锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

    锐单商城 - 一站式电子元器件采购平台