CentOS7系统上部署Docker,mysql,nginx
未完,持续更新中···
更新软件包索引:
首先,确保你的CentOS系统是最新的。你可以通过运行以下命令来更新你的系统:
yum update
安装Docker:
CentOS的软件仓库中包含Docker软件包,但可能不是最新版本。为了安装最新版本的Docker,我们将安装Docker的官方仓库,然后从那里安装Docker。运行以下命令来添加Docker的官方仓库,并安装Docker:
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
启动Docker服务:
安装完成后,启动Docker服务,并设置为开机启动:
systemctl start docker
systemctl enable docker
验证Docker安装:
通过运行Hello World镜像来验证Docker是否正确安装:
docker run hello-world
如果安装正确,你将看到一条消息,说明你的Docker安装正常工作。
运行MySQL容器
- 拉取MySQL镜像:
docker pull mysql:5.7
拉取结束后,查看本地是否存在
docker images
要删除本机上的所有Docker镜像,你可以使用以下命令:
docker rmi $(docker images -q) -f
这里的命令解释如下:
docker images -q:列出所有镜像的ID。-q参数表示仅显示镜像ID,不显示其他信息。
docker rmi:删除一个或多个镜像。rmi是remove image的缩写。
$(…):命令替换,docker images -q的结果(即所有镜像的ID)将作为docker rmi命令的参数。
-f:强制删除。即使有容器(无论是运行中还是已停止)使用这些镜像,也会将它们删除。
注意:这个命令会删除你机器上的所有Docker镜像,包括那些可能正在使用的镜像。请确保你确实想要这样做,或者已经备份了需要保留的镜像。
如果你只想删除未被任何容器使用的镜像,可以使用清理命令:
docker image prune -a
docker image prune:删除未被任何容器使用的镜像。
-a:表示删除所有未被使用的镜像,
而不仅仅是临时的。
这个命令会在执行前请求确认,你需要输入y来确认操作。如果你想跳过确认,可以添加-f或–force参数。
请谨慎使用这些命令,确保不会删除重要的镜像。
使用docker拉取服务时出现失败的情况
解决方案:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://yxzrazem.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
要验证 MySQL 是否已经安装好并正确运行,你可以执行以下几个简单的步骤:
步骤:
- 运行 MySQL 容器:
使用以下命令来运行 MySQL 5.7 容器,并设置 root 用户的密码:
这里的参数解释如下:
–name :为你的容器指定一个名称,这里是 root。
-e MYSQL_ROOT_PASSWORD=123456:设置环境变量 MYSQL_ROOT_PASSWORD,这是必需的,用于指定 root 用户的密码。
-d:以后台模式运行容器。
mysql:5.7:指定要运行的镜像和标签。 - 查看运行中的容器:
使用 docker ps 命令来查看当前正在运行的容器:
3. 连接到 MySQL 容器:
使用以下命令来连接到正在运行的 MySQL 容器,并进入 MySQL 命令行客户端:
问题:之前把容器名称变成了root 我想变成studymysql ,怎么操作?
- 停止容器:
首先,停止正在运行的 MySQL 容器。使用以下命令停止容器:
docker stop root
- 重命名容器:
使用docker rename
命令来将容器名称从root
修改为studymysql
:
docker rename root studymysql
- 启动容器:
重新启动已经重命名的 MySQL 容器 studymysql:
docker start studymysql
- 验证更改:
使用docker ps
命令检查容器名称是否已成功更改为studymysql
:
docker ps -a
结果验证:够看到容器名称已成功更改为 studymysql
,则说明修改操作已经成功完成。
配置数据持久化和端口映射
-
创建数据卷:
- 首先,创建一个数据卷,用于持久化存储MySQL容器中的数据。您可以使用以下命令创建一个数据卷:
docker volume create mysql_data
- 首先,创建一个数据卷,用于持久化存储MySQL容器中的数据。您可以使用以下命令创建一个数据卷:
-
运行MySQL容器并配置数据持久化和端口映射:
- 运行MySQL容器时,将数据卷挂载到容器的数据目录,并配置端口映射。例如,运行以下命令:
docker run -d --name studymysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql_data:/var/lib/mysql mysql:5.7
- 运行MySQL容器时,将数据卷挂载到容器的数据目录,并配置端口映射。例如,运行以下命令:
docker run
: 运行一个新的Docker容器。-d
: 在后台(detached mode)运行容器。--name studymysql
: 为容器指定名称为"studymysql"。-p 3307:3306
: 将主机的端口3307映射到容器的端口3306,允许通过主机的3307端口访问MySQL服务。-e MYSQL_ROOT_PASSWORD=123456
: 设置MySQL的root用户密码为"123456"。-v mysql_data:/var/lib/mysql
: 将名为"mysql_data"的Docker数据卷挂载到容器的/var/lib/mysql目录,用于持久化存储MySQL数据。mysql:5.7
: 使用MySQL 5.7的Docker镜像来运行容器。
通过这条命令,您创建了一个名为"studymysql"的MySQL容器,将主机的端口3307映射到容器的端口3306,设置了MySQL的root用户密码为"123456",并将名为"mysql_data"的数据卷挂载到容器的/var/lib/mysql目录,以便持久化存储MySQL数据。
3.如何让本地环境访问容器中的数据库?
答:给容器中的数据库添加端口映射,不能与虚拟机中的数据库端口重叠。
4.如何让mysql可以使用重启命令service mysql start``service mysql restart
报错:Failed to start mysql.service: Unit not found.
该问题出现在启动 mysql 时,找不到对应的服务
答:手动添加 mysql.server
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql
service mysql start
运行Nginx容器
1.拉取Nginx镜像:
docker pull nginx
2.运行Nginx容器:
将容器的80端口映射到主机的80端口。
docker run --name studynginx -d -p 80:80 nginx
-name studynginx: 为容器指定一个名称,这里是"studynginx"。
-d: 在后台运行容器。
-p 80:80: 将主机的80端口映射到容器的80端口,这样可以通过主机的IP地址访问Nginx服务。
nginx: 指定要运行的镜像,这里是Nginx。
3.访问Nginx:
在浏览器中访问http://192.168.16.129,你应该能看到Nginx的欢迎页面。
利用Docker安装Kubernetes (Minikube)
安装Kubernetes的一个简单方法是使用Minikube,它是一个轻量级的Kubernetes实现,适合在本地环境进行测试和学习。Minikube可以作为一个虚拟机运行在Docker之上。
安装Minikube:
请参考Minikube的官方安装指南来安装Minikube。
启动Minikube:
使用Docker驱动启动Minikube。