一、准备工作:
准备一台虚拟机,这里使用的是Ubuntu
二、下载docker
如果是新装的虚拟机建议先更新工具
apt-get update
下载docker
sudo apt install -y docker.io
三、配置阿里加速器(建议配置速度会快点,可以跳过)
在阿里云中有教程:(下面是连接)
//操作以阿里云为主
//这是样式
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["这里用自己的"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
四、介绍docker的基础命令
启动docker服务 systemctl start docker [stop restart]
列出镜像:docker images
列出容器: docker ps -a
docker container ls -a
删除镜像: docker rmi [image id]
删除容器: docker rm [container id]
镜像搜索; docker search dvwa //搜索dvwa
下载镜像: docker pull vulnerables/web-dvwa
启动镜像: docker run ...
五、步骤
1、启动docker
//启动docker服务
sudo systemctl start docker
扩展:
//停止
systemctl stop docker
//重启
systemctl restart docker
2、查询mysql
docker search mysql
3、拉取镜像
-
方法一:默认拉取
docker pull mysql
-
方法二:指定版本拉取
sudo docker pull mysql:5.7
4、查看镜像
docker images
5、启动mysql容器(创建镜像实例)
默认启动:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:latest
指定版本启动:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d mysql:5.7
命令含义:
-
容器=完整Linux
-
docker run:在docker中启动一个容器实例
-
-d:该容器在后台运行
-
-p 3306:3306:容器与主机映射端口为,主机3306,容器3306
-
--name mysql:容器运行后的名称
-
-e MYSQL_ROOT_PASSWORD=root:设置当前mysql实例的密码为root
-
mysql:5.7:需要运行的容器名称以及版本号
查看mysql进程获取
docker ps -a
6、进入mysql容器—并登陆mysql
docker exec -it mysql bash
//登录mysql命令:
mysql -u root -p
//输入密码:root
7、 配置 MySQL 允许远程访问
这是sql代码
命令:use mysql;
//创建一个账号,用来进行远程访问;
CREATE USER 'root'@'%' IDENTIFIED BY 'my-secret-pw';
//赋予所有权限给之前创建的账号:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
//刷新权限
FLUSH PRIVILEGES;
//可以不设置
docker exec -it my-mysql bash vi /etc/mysql/my.cnf
//找到 [mysqld] 部分,添加或修改以下行:
[mysqld] bind-address = 0.0.0.0
//然后重启 MySQL 容器:
docker restart my-mysql
到这里MySQL就相当于下载好了
8、主机下在Navicat
尝试连接数据库:
地址、主机名是虚拟机的ip地址
端口在上面设置的是3306
账号密码上面都是root
如有不同按自己的来
六、常见问题
连不上话,首先使用ping命令进行检查虚拟机和主机互,其次检查虚拟机的防火墙以及端口是否冲突。
检查防火墙设置
sudo ufw disable # 对于使用 UFW 的系统
sudo systemctl stop firewalld # 对于使用 firewalld 的系统
扩展
//远程连接不上
在你的 虚拟机上,确认 SSH 服务是否已经启动:
sudo systemctl status ssh
//如果服务未运行,可以启动它:
sudo systemctl start ssh
//确保 SSH 服务在系统启动时自动启动:
sudo systemctl enable ssh
//检查防火墙设置
使用 iptables 作为防火墙工具,默认情况下可能阻止了 SSH 连接。检查并允许端口 22:
sudo iptables -L
//如果发现阻止了端口 22,可以添加规则允许 SSH 连接:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEP
//检查 SSH 配置文件
//确认 SSH 配置文件 /etc/ssh/sshd_config 中没有阻止连接的配置。以下是一些关键配置项:
# 确保 SSH 监听所有接口
ListenAddress 0.0.0.0
# 确保端口是 22
Port 22
修改配置文件后,重启 SSH 服务:
sudo systemctl restart ssh
//确认没有其他服务占用端口
//确保端口 22 没有被其他服务占用。可以使用以下命令检查:
sudo netstat -tuln | grep :22