centos:7,安装源码mysql版本5.7软件。要求启动默认无用户登录,用户可以使用 docker run -d centos-mysql:5.7 -u root -p登录。2、基于base镜像ubu
时间: 2023-03-15 13:35:47 浏览: 66
答:首先,你需要在基于Ubuntu的base镜像上安装CentOS 7,然后安装源码MySQL版本5.7软件,并设置默认无用户登录,然后用户可以使用docker run -d centos-mysql:5.7 -u root -p来登录。
相关问题
1、制作基于base镜像rockylinu9,安装源码mysql版本8.0软件。要求启动默认无用户登录,用户可以使用 docker run -d centos-mysql:8.0 -u root -p登录。
可以按照以下步骤来实现:
1. 创建一个 Dockerfile 文件,内容如下:
```
FROM rockylinux/rockylinux:8.4
RUN dnf update -y && \
dnf install -y wget && \
wget https://dev.mysql.com/get/mysql80-community-release-el8-1.noarch.rpm && \
rpm -ivh mysql80-community-release-el8-1.noarch.rpm && \
dnf install -y mysql-community-server && \
dnf clean all && \
rm -rf /var/cache/dnf/* && \
rm -rf /tmp/mysql80-community-release-el8-1.noarch.rpm && \
mkdir /docker-entrypoint-initdb.d
COPY ./my.cnf /etc/my.cnf
RUN chown -R mysql:mysql /var/lib/mysql /var/run/mysqld && \
chmod 777 /var/run/mysqld
VOLUME /var/lib/mysql
EXPOSE 3306
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["mysqld"]
```
2. 创建一个 my.cnf 文件,内容如下:
```
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_unicode_ci
default_authentication_plugin=mysql_native_password
max_allowed_packet=256M
```
3. 创建一个 docker-entrypoint.sh 文件,内容如下:
```
#!/bin/bash
set -eo pipefail
if [ ! -d "/var/lib/mysql/mysql" ]; then
echo "Initializing MySQL..."
/usr/sbin/mysqld --initialize-insecure --user=mysql
echo "MySQL initialized"
fi
echo "Starting MySQL..."
exec /usr/sbin/mysqld --user=mysql --console
```
4. 在 Dockerfile 所在目录下执行以下命令进行构建:
```
docker build -t centos-mysql:8.0 .
```
5. 执行以下命令运行容器:
```
docker run -d -p 3306:3306 -v /path/to/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=<your_password> --name mysql centos-mysql:8.0
```
其中,`/path/to/data` 是你想要将容器中的 MySQL 数据保存到本地的路径,`<your_password>` 是你为 MySQL root 用户设置的密码。运行成功后,你就可以使用以下命令登录到 MySQL:
```
docker run -it --rm --network container:mysql centos-mysql:8.0 mysql -u root -p
```
注意,这里使用了 `--network container:mysql` 参数,让容器使用已有的 MySQL 容器的网络命名空间,从而可以直接访问 MySQL。
docker run -it --name=centos7 -v my-vol:/opt centos:7 bash解析
### 回答1:
这是一个 Docker 命令,作用是在本地主机上启动一个名为 centos7 的容器,并将其绑定到一个名为 my-vol 的本地卷。
具体参数解析如下:
- `docker run`: 启动一个新的容器。
- `-it`: 表示以交互式模式运行容器。
- `--name=centos7`: 指定容器的名称为 centos7。
- `-v my-vol:/opt`: 将本地卷 my-vol 挂载到容器中的 /opt 目录下。
- `centos:7`: 指定要运行的镜像为 CentOS 7。
- `bash`: 在容器中运行 Bash 命令行 shell。
### 回答2:
docker run -it --name=centos7 -v my-vol:/opt centos:7 bash表示使用Docker运行一个基于CentOS 7基础镜像的容器,并且通过bind mount的方式将主机上的my-vol目录挂载到容器内的/opt目录上。
- `-it`参数是告诉Docker以交互式模式运行容器,并且分配一个伪终端。
- `--name=centos7`参数是给容器命名为centos7,方便后续对容器的管理和操作。
- `-v my-vol:/opt`参数是在容器启动时将主机上的my-vol目录挂载到容器内的/opt目录,这样容器内的/opt目录就可以直接访问主机上的my-vol目录的内容。
- `centos:7`表示使用CentOS 7作为基础镜像。
- `bash`表示容器启动后默认进入bash shell终端,可以在容器内执行命令。
综上所述,该命令的作用是在Docker中创建一个以CentOS 7为基础镜像的容器,该容器以交互式模式运行,并且将主机上的my-vol目录挂载到容器内的/opt目录,同时进入容器的bash shell终端。这样可以在容器内执行一些需要在CentOS 7环境下运行的命令或程序,并且可以直接访问主机上的my-vol目录的内容。
### 回答3:
`docker run -it --name=centos7 -v my-vol:/opt centos:7 bash`是一个Docker命令,用于在Docker容器中运行一个CentOS 7镜像并创建一个名为"centos7"的容器。
解析该命令的各个部分如下:
- `docker run`:运行一个新的容器。
- `-it`:以交互模式启动容器,在终端中可以执行命令并与容器进行交互。
- `--name=centos7`:指定容器的名称为"centos7",方便后续对容器的操作。
- `-v my-vol:/opt`:将本地主机的目录"my-vol"挂载到容器内部的"/opt"目录,实现主机目录和容器目录的数据共享。
- `centos:7`:指定使用的镜像为CentOS 7。
- `bash`:在容器中执行的启动命令,即在容器内启动一个Bash终端。
总结来说,该命令的作用是创建一个名为"centos7"的容器,使用CentOS 7镜像,并在容器内部启动一个Bash终端。同时,将本地主机的"my-vol"目录挂载到容器的"/opt"目录,以实现数据共享。这样可以通过交互式终端来执行命令,并且在容器内进行文件操作。