docker启动容器和挂载

本文详细介绍了如何在Linux环境下,分别通过Docker运行Nginx和Apache容器,包括端口映射80和8000/8001,数据卷挂载到/usr/share/nginx/html和/var/www/html。涉及操作包括创建目录、创建数据卷、容器启动和内容修改,以及通过curl验证Web服务。

 思维导图

先查看当前本地镜像利用命令 docker images

 1.运行一个nginx的容器,要求如下:将容器的80端口映射到宿主机的8000端口,并将数据卷my-olume挂载到/usr/share/nginx/html目录
    先创建目录/usr/share/nginx/html和数据卷  my-volume

[root@localhost ~]#   mkdir /usr/share/nginx/html -pv  先创建目录
mkdir: created directory ‘/usr/share/nginx’
mkdir: created directory ‘/usr/share/nginx/html’
[root@localhost ~]# docker volume create my-volume   
my-volume
[root@localhost ~]#

将容器的80端口映射到宿主机的8000端口映射,把数据卷挂载到/usr/share/nginx/html目录

[root@localhost ~]# docker run --name web -d -p 8000:80 -v my-volum:/usr/share/nginx/html nginx
535b6b2872acfac22b27b0ca22c966e75b9bdff381963fa2925c247c99152d3b

2.运行一个httpd的容器,要求如下:将容器的80端口映射到宿主机的8001端口,并将数据库my-volume挂载到/var/www/html

同上,创建目录  容器的80端口映射到宿主机的8001端口 挂载目录

[root@localhost ~]# mkdir /var/wwe/html -pv    创建目录
mkdir: created directory ‘/var/wwe’
mkdir: created directory ‘/var/wwe/html’
[root@localhost ~]# docker run --name web2 -d -p 8001:80 -v my-volume:/var/www/html httpd
6eefe6977b1da366daa89705443c7c05ac817a6764474168215ed1a828694173     映射和结果


4、进入容器httpd,修改/var/www/html/indexhtml文件的内容为welcome to httpd

[root@localhost ~]# docker  exec -it web2 bash   进入容器
root@6eefe6977b1d:/usr/local/apache2# cd /var/www/html 
root@6eefe6977b1d:/var/www/html# echo welcome to httpd > index.htm  文件内容修改为welcome to httpd


5、使用curl命令或者浏览器访问nginx容器和httpd容器的web页面

[root@localhost ~]# curl 192.168.171.132:8001   用8
<html><body><h1>It works!</h1></body></html>
[root@localhost ~]# curl 192.168.171.132:8000

检查

### Docker 容器启动时的卷挂载方法配置教程 在 Docker 中,卷挂载是一种将主机文件系统中的目录或文件映射到容器内的技术。通过这种方式,可以实现数据持久化、共享以及更灵活的配置管理。以下是关于如何在启动 Docker 容器时进行卷挂载的具体方法配置说明。 #### 1. 使用 `-v` 或 `--volume` 参数进行挂载 Docker 提供了 `-v` 或 `--volume` 参数用于挂载主机上的目录或文件到容器内。语法如下: ```bash docker run -v <主机路径>:<容器路径> <镜像名> ``` 例如,将主机的 `/data` 目录挂载容器的 `/var/lib/mysql` 目录中: ```bash docker run -v /data:/var/lib/mysql mysql:latest ``` 这种挂载方式支持以下几种形式: - **匿名卷**:不指定主机路径,Docker 自动创建一个卷并挂载容器中[^1]。 - **命名卷**:通过指定卷名称来挂载,便于管理复用。 #### 2. 命名卷的使用 命名卷允许为卷指定一个名称,方便后续引用管理。示例如下: ```bash docker run -v my-mysql-data:/var/lib/mysql mysql:latest ``` 上述命令会创建一个名为 `my-mysql-data` 的卷,并将其挂载容器的 `/var/lib/mysql` 目录中。可以通过以下命令查看卷的状态: ```bash docker volume inspect my-mysql-data ``` #### 3. 只读挂载 如果需要将主机上的目录或文件以只读方式挂载容器中,可以在挂载参数后添加 `:ro`。例如: ```bash docker run -v /config:/etc/config:ro nginx:latest ``` 这会将主机的 `/config` 目录以只读方式挂载容器的 `/etc/config` 目录中[^1]。 #### 4. 挂载单个文件 除了挂载整个目录外,还可以挂载单个文件。例如,将主机上的 `application.properties` 文件挂载容器中: ```bash docker run -v /host/path/application.properties:/container/path/application.properties my-app:latest ``` #### 5. 使用 Docker Compose 进行挂载 在实际开发中,通常使用 Docker Compose 来定义启动容器应用。以下是一个简单的 `docker-compose.yml` 配置示例,展示如何挂载卷: ```yaml version: '3' services: app: image: my-app:latest volumes: - ./data:/var/lib/app # 将主机的 ./data 目录挂载容器的 /var/lib/app - config:/etc/config # 使用命名卷 volumes: config: ``` #### 6. 注意事项 - 挂载主机目录时,确保主机路径存在且权限正确。 - 如果容器内已有相同路径的数据,挂载后会被主机数据覆盖。 - 在 Windows 系统上使用 Docker Desktop 时,需确保主机目录已共享给 Docker。 ```python # 示例代码:验证挂载是否成功 import os def check_mount(path): if os.path.exists(path): print(f"Mount successful at {path}") else: print(f"Mount failed for {path}") check_mount("/mnt/host_data") ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值