提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 一、安装msyql
- 1.安装msyql
- 2.测试连接本机的mysql
- 3.改字符集
- 4.改mysql密码
- 4.自动启动
- 5.docker常用命令
- 二、安装redis
- 1.安装redis
- 2.安装桌面端
- 三、安装nginx
- 1.下载nginx镜像
- 2.创建Nginx配置文件
- 3.创建Nginx容器并运行
- 4.nginx加端口
- 4.1 、nginx容器端口映射配置
[其他教程]()
一、安装msyql
1.安装msyql
在搜索 mysql
启动虚拟机 连接虚拟机 vagrant ssh ,查看当前账号 whoami
下载镜像文件:sudo docker pull mysql:5.7;
查找镜像 images ID :sudo docker images
登录管理员账号 su root 密码 vagrant
创建实例并启动:
docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
命令说明:
-p 3306:3306:将容器的3306端口映射到主机的3306端口
-v /mydata/mysql/log:/var/log/mysql\ 将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql\
-v /mydata/mysql/conf:/etc/mysql\ 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=123456:初始化root用户的密码
-d: 后台运行容器,并返回容器ID
查看运行的容器:docker ps
2.测试连接本机的mysql
注意是 192.168.56.10
3.改字符集
进入容器 : docker exec -it mysql /bin/bash ,
whereis mysql
exit
cd /mydata/
ls
cd mysql/
ls
cd conf
ls
vi my.cnf 进入 敲i ,复制粘贴
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
按ESC ,敲:wq 退出
重启Mysql : docker restart mysql
进入容器 : docker exec -it mysql /bin/bash
cd /etc/mysql/
查看文件 cat my.cnf
4.改mysql密码
进入容器 : docker exec -it mysql /bin/bash
登录MySQL :mysql -uroot -p
修改MySQL密码:SET PASSWORD FOR ‘root’ = PASSWORD(‘密码’);
flush privileges;
4.自动启动
docker update mysql --restart=always
5.docker常用命令
//重启实例
docker restart ebc54f9f98e2(容器 ID)/ (容器名字)
//停止实例
docker stop ebc54f9f98e2(容器 ID)/ (容器名字)
//移除一个容器
docker rm ba51fc8d04e1(CONTAINER ID)
//删除docker上的镜像
docker rmi 7bb2586065cd(IMAGE ID)
1. docker search mysql 这条命令表示查询mysql的所有镜像信息
2. docker pull mysql 表示从官方下载默认版本的mysql,latest
docker pull mysql:5.5 表示下载mysql版本5.5的
3. docker images 查看当前本地的所有镜像
4. docker rmi image-id 删除制定镜像,image-id是每个镜像独有的id
5. docker run ...... 根据镜像启动容器
6. docker ps 查看运行中的容器
7. docker ps -a 查看所有容器
8. docker start 容器id 启动容器
9. docker stop 容器id 停止容器
10. docker rm 容器id 删除容器
11. service firewalld status 查看防火墙状态
12. service firewalld stop 关闭防火墙
二、安装redis
1.安装redis
在https://hub.docker.com 搜索 redis
启动虚拟机 连接虚拟机 vagrant ssh ,查看当前账号 whoami
登录管理员账号 su root 密码 vagrant
下载镜像文件: docker pull redis
创建实例并启动:
mkdir -p /mydata/redis/conf
cd /mydata/
ls
cd redis
ls
cd conf/
ls
touch redis.conf
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf -d redis redis-server /etc/redis/redis.conf
检查:docker ps
使用redis镜像执行 redis-cli命令连接,设置持久化:
docker exec -it redis redis-cli
exit
pwd
ls
vi redis.conf
输入 i 进入插入模式
appendonly yes
按Esc :wq 保存
重启redis: docker restart redis ,
docker ps , docker exec -it redis redis-cli , set aa bb , get aa bb
exit ,
docker restart redis ,
docker ps ,
docker exec -it redis redis-cli ,
get aa
自动启动 docker update redis --restart=always
修改redis密码 查看redis密码
config get requirepass
修改密码:
在配置文件/mydata/redis/conf/redis.conf中加入:
requirepass 你的密码
重启redis 输入 docker restart redis
登录后需要验证:
redis 127.0.0.1:6379> auth 你的密码
2.安装桌面端
(1)安装 redis-desktop-manager-0.8.8.384.exe (安装软件已有)
安装目录:D:\javaruanjian01\samll\redis
三、安装nginx
来到 mydata 文件夹
创建nginx文件夹,将nginx的东西放到nginx文件夹。
mkdir nginx
ls
docker run -p 80:80 --name nginx -d nginx:1.10
docker ps
将容器内的配置文件拷贝到当前目录:docker container cp nginx:/etc/nginx .
ls
cd nginx/
查看复制出来的文件
复制出来就可以把nginx停掉了docker stop nginx
docker rm nginx
ls
cd …/
ls
给nginx文件夹改名,改成conf:mv nignx conf
ls
重新创建nginx文件夹
mkdir nginx
把conf文件夹移动到nginx文件夹里:mv conf nginx/
ls
cd nginx/
ls
docker run -p 80:80 --name nginx
-v /mydata/nginx/html:/usr/share/nginx/html
-v /mydata/nginx/logs:/var/log/nginx
-v /mydata/nginx/conf:/etc/nginx
-d nginx:1.10
ls
docker ps
pwd
ls
cd html/
ls
vi index.html
输入i
GuliMall
退出::wq
测试:http://192.168.56.10/
开机自启动
docker update nginx --restart=always
配置文件的坑:
要将前端文件放在映射的/mydata/nginx/html 文件夹下
然后改/mydata/nginx/conf 的nginx.conf 配置文件
可将include改为映射文件地址,也可不改。
root 这里改为映射前的nginx的路径:/usr/share/nginx/html,因为这个路径 映射到了 /mydata/nginx/html
下面的先不看了
1.下载nginx镜像
在https://hub.docker.com 搜索 redis
启动虚拟机 连接虚拟机 vagrant ssh ,查看当前账号 whoami
登录管理员账号 su root 密码 vagrant
下载镜像文件:
| 命令 描述
命令 | 描述 |
docker pull nginx:xxx | 下载指定版本的Nginx镜像 (xxx指具体版本号) |
docker pull nginx | 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest docker pull nginx:1.10 ) |
2.创建Nginx配置文件
启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf)
之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件
当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。
# 创建挂载目录
mkdir -p /mydata/nginx/conf
mkdir -p /mydata/nginx/log
mkdir -p /mydata/nginx/html
容器中的nginx.conf文件和conf.d文件夹复制到宿主机
# 生成容器
docker run --name nginx -p 80:80 -d nginx
# 将容器nginx.conf文件复制到宿主机
docker cp nginx:/etc/nginx/nginx.conf /mydata/nginx/conf/nginx.conf
# 将容器conf.d文件夹下内容复制到宿主机
docker cp nginx:/etc/nginx/conf.d /mydata/nginx/conf/conf.d
# 将容器中的html文件夹复制到宿主机
docker cp nginx:/usr/share/nginx/html /mydata/nginx/html
# 将容器中的日志文件夹复制到宿主机
docker cp nginx:/var/log/nginx /mydata/nginx/log
3.创建Nginx容器并运行
Docker 创建Nginx容器
# 直接执行docker rm nginx或者以容器id方式关闭容器
# 找到nginx对应的容器id
docker ps -a
# 关闭该容器
docker stop nginx
# 删除该容器
docker rm nginx
# 删除正在运行的nginx容器
docker rm -f nginx
docker run -p 80:80 --name nginx \
-v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /mydata/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /mydata/nginx/log:/var/log/nginx \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:latest
docker run --name nginx -p 80:80
-v /home/docker-nginx/nginx.conf:/etc/nginx/nginx.conf
-v /home/docker-nginx/log:/var/log/nginx
-v /home/docker-nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf
-d nginx
命令 | 描述 |
–name nginx | 启动容器的名字 |
-d | 后台运行 |
-p 9002:80 | 将容器的 9002(后面那个) 端口映射到主机的 80(前面那个) 端口 |
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf | 挂载nginx.conf配置文件 |
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d | 挂载nginx配置文件 |
-v /home/nginx/log:/var/log/nginx | 挂载nginx日志文件 |
-v /home/nginx/html:/usr/share/nginx/html | 挂载nginx内容 |
nginx:latest | 本地运行的版本 |
\ | shell 命令换行 |
5、结果检测
curl 127.0.0.1:80
6、自启动
docker update nginx --restart=always
7.删除文件 rm - rf /文件目录
rm -rf /home/wd/1
4.nginx加端口
4.1 、nginx容器端口映射配置
在上述操作步骤中,我只将80端口与宿主机进行了映射,也就意味着只能使用80端口访问nginx,如果要使用nginx启动多个前端项目的时候,则需要将容器里的多个端口映射到宿主机。有两种方式可以实现。
方式一:启动容器时挂载多个端口
docker run \
-p 80:80 \
-p 8080:8080 \
-p 8081:8081 \
-p 8082:8082 \
--name nginx \
--restart=always \
-v /usr/local/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /usr/local/docker/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /usr/local/docker/nginx/log:/var/log/nginx \
-v /usr/local/docker/nginx/html:/usr/share/nginx/html \
-d nginx:latest
此方式需要一开始就指定好要映射的端口,后面如有增减需要重新运行容器,重新指定,不够灵活
方式二:修改配置文件
1、查看容器ID
# 获取容器/镜像的元数据
docker inspect nginx
输出
[
{
"Id": "135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87", # hash_of_the_container
"Created": "2020-08-21T09:41:36.597993005Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
...
2、修改之前一定要先停掉容器,否则自动还原
docker stop nginx
3、进入到容器目录(用前面获取的容器id),修改配置文件hostconfig.json
cd /var/lib/docker/containers/135254e3429d1e75aa68569137c753b789416256f2ced52b4c5a85ec3849db87 # container id
vim hostconfig.json
找到端口绑定,添加端口
... # 略
"PortBindings": {
"80/tcp": [
{
"HostIp": "",
"HostPort": "80"
}
],
"8080/tcp": [
{
"HostIp": "",
"HostPort": "8080"
}
],
"8189/tcp": [
{
"HostIp": "",
"HostPort": "8189"
}
]
},
... # 略
修改config.v2.json
同路径下打开config.v2.json,修改:ExposedPorts
"ExposedPorts": {
"80/tcp": {},
"8080/tcp": {},
"8189/tcp": {}
},
... # 略
很多文章中提到还要修改Ports,实际上是不需要的,只有在你没有stop容器时,Ports才会有值,如果关闭了容器,就是null。当然如果你修改了也无所谓,因为重启容器后,就会被刷新。
4、保存、退出、重启容器
# 重启docker服务
sudo systemctl restart docker.service
# 启动容器
docker start nginx
至此,端口添加成功,可以配置端口进行访问啦!!!