如何在用exec启动docker容器时,挂载主机的目录?
时间: 2024-05-05 14:16:01 浏览: 365
在使用exec启动docker容器时,可以使用-v参数来挂载主机的目录,格式如下:
```
docker exec -it <容器名称或ID> -v <主机目录>:<容器目录> <命令>
```
例如,将主机的/home/user目录挂载到容器的/opt/data目录:
```
docker exec -it my_container -v /home/user:/opt/data sh
```
这样,在容器中执行命令时,就可以访问主机的/home/user目录了。
相关问题
查找Docker Hub上的mysql镜像。运行mysql:latest镜像,容器名称为mysql,将容器的3306端口映射到宿主机的3306端口,将宿主机当前目录下的logs目录挂载到容器的/logs,将宿主机当前目录下的data目录挂载到容器的/var/lib/mysql,初始化root用户的密码为000000。docker exec命令进入mysql容器,再用root账号登录mysql。查看数据库信息,新建一个db1数据库。
您可以使用以下命令查找Docker Hub上的mysql镜像:
```
docker search mysql
```
然后,您可以使用以下命令运行mysql:latest镜像,将容器名称设置为mysql,并将容器的3306端口映射到主机的3306端口,将宿主机当前目录下的logs目录挂载到容器的/logs目录,将宿主机当前目录下的data目录挂载到容器的/var/lib/mysql目录,并将root用户的密码初始化为000000:
```bash
docker run -d -p 3306:3306 -v $(pwd)/logs:/logs -v $(pwd)/data:/var/lib/mysql --name mysql -e MYSQL_ROOT_PASSWORD=000000 mysql:latest
```
接下来,您可以使用以下命令进入mysql容器并使用root账号登录mysql:
```bash
docker exec -it mysql mysql -uroot -p000000
```
一旦成功登录,您可以使用以下命令查看数据库信息:
```sql
SHOW DATABASES;
```
然后,您可以使用以下命令新建一个名为db1的数据库:
```sql
CREATE DATABASE db1;
```
这样就在mysql容器中新建了一个名为db1的数据库。请注意,命令中的$(pwd)将当前目录的路径插入命令中,确保在运行命令时您处于正确的目录下。
docker 挂载目录
Docker挂载目录是指将主机系统的某些目录映射到容器内的文件系统,以便容器能够访问这些目录。这使得数据持久化,并允许容器在运行过程中访问共享的数据资源。以下是基本的挂载流程:
1. **创建镜像时**:使用`docker run -v`选项,例如:
```bash
docker run -it --rm -v /host/path:/container/path your_image_name
```
这里`-v`表示volume,`/host/path`是你主机上的路径,`/container/path`是在容器内部可以访问的路径。
2. **运行容器时**:可以在启动时动态添加挂载,也可以在运行后使用`docker exec`或`docker cp`命令进行挂载。
3. **读写权限**:默认情况下,容器对挂载目录只有读写权限。如果需要其他权限,可以在`docker run`时指定,例如`ro`代表只读。
4. **数据卷管理**:对于更复杂的场景,推荐使用`docker volume create`创建独立的数据卷,然后`docker run`时指定数据卷名。
阅读全文