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.0使用了新的密码加密方式: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

请添加图片描述

  1. 查看本地仓库镜像是否下载成功
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;
	}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要启动MySQLRedisDocker容器,可以按照以下步骤操作: 启动MySQL容器: 1. 拉取MySQL镜像:使用命令`docker pull mysql:5.7`或`docker pull mysql:8`,分别拉取MySQL 5.7和MySQL 8镜像。 2. 运行MySQL容器:使用命令`docker run -d -p 3306:3306 -v E:/DB/MySQL5.7/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD='1qaz@WSX3edc' --name mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci`,该命令会创建一个名为mysql容器,并将宿主机的数据目录映射到容器内的/var/lib/mysql目录,同时设置MySQL的根密码为'1qaz@WSX3edc'。 启动Redis容器: 1. 拉取Redis镜像:可以在Docker Hub上找到Redis的各个版本号,使用命令`docker pull redis:版本号`来拉取相应版本的Redis镜像。 2. 运行Redis容器:使用命令`docker run -d --name redis redis:版本号`,将版本号替换为你想要启动的Redis版本号。该命令会创建一个名为redis容器,使用指定的Redis版本。 这样,你就成功启动了MySQLRedisDocker容器。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Dockerdocker启动MySQLRedis、Linux等应用](https://blog.csdn.net/qq_45277554/article/details/129292385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [docker安装启动redisnginxmysql8详解](https://blog.csdn.net/qq_45473439/article/details/117191207)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值