docker下载httpd 2.4镜像,运行httpd镜像配置映射卷和端口生成容器
1.下载httpd镜像docker pull httpd:2.4.432.运行httpd镜像并配置好端口和映射卷1.设置宿主机httpd映射目录cd /opt/#进入目录ls#list 列出文件mkdir usteel_docker_httpd#新建httpd 文件夹cd usteel_docker_httpd/#进入文件夹pwd#打印当前位置 ps:/opt/usteel_docker_
·
1.下载httpd镜像
docker pull httpd:2.4.43
2.运行httpd镜像并配置好端口和映射卷
1.设置宿主机httpd映射目录
cd /opt/ #进入目录
ls #list 列出文件
mkdir usteel_docker_httpd #新建httpd 文件夹
cd usteel_docker_httpd/ #进入文件夹
pwd #打印当前位置 ps:/opt/usteel_docker_httpd
echo $PWD #声明变量$PWD = /opt/usteel_docker_httpd
2.运行httpd镜像生成容器
docker run -itd -p 81:80 --name usteel_httpd -v $PWD/htdocs/:/usr/local/apache2/htdocs/ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $PWD/logs/:/usr/local/apache2/logs/ httpd:2.4.43
然后我们发现docker报错
docker: Error response from daemon: OCI runtime create failed: container_linux.go:345: starting container process caused "process_linux.go:430: container init caused \"rootfs_linux.go:58: mounting \\\"/opt/usteel_docker_httpd/conf/conf/httpd.conf\\\" to rootfs \\\"/var/lib/docker/overlay2/ac5ecdaa089a0969c65b176f95792746ed9c56d68bd42e7452a95efb6eeba047/merged\\\" at \\\"/var/lib/docker/overlay2/ac5ecdaa089a0969c65b176f95792746ed9c56d68bd42e7452a95efb6eeba047/merged/usr/local/apache2/conf/httpd.conf\\\" caused \\\"not a directory\\\"\"": unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type.
这个错误与我们用到的 ‘-v’ 参数有关,是系统在生成我们所需映射卷文件时,发生问题,造成运行失败!然后本人做了很多尝试,都没有让容器正常运行,所以我们要进行一个骚操作:
- 首先:我们先找到我们运行失败的容器
docker ps -a #查看所有容器,不加-a 只查看所有运行的容器
- 第二步:删除创建失败的容器
docker rm usteel_httpd #大家需要记住,如果容器没有运行rm 后不需要加参数,如果容器正在运作,我们又不想关掉容器,就在 rm 后边加个‘-f’参数 ‘-f’ 表示强制删除
docker 关掉容器命令: docker stop 容器名称
- 第三步:清空/opt/usteel_docker_httpd 下生成的文件
rm -rf /opt/usteel_docker_httpd/* #友情提示:这个命令用错了就准备跑路吧!!哈哈
- 第四步 :生成一个httpd临时容器
docker run -d httpd:2.4.43
通过 docker ps 命令可以看到已经生成成功
- 第五步:进入httpd 临时容器,查看我们要映射卷的文件目录位置
docker exec -it zen_mcclintock bash #进入容器
我们可以看到我们所需文件位置:
- 第六步:将容器中我们所需文件拷贝到宿主机上
docker cp zen_mcclintock:/usr/local/apache2/logs /opt/usteel_docker_httpd/
docker cp zen_mcclintock:/usr/local/apache2/conf /opt/usteel_docker_httpd/
docker cp zen_mcclintock:/usr/local/apache2/htdocs /opt/usteel_docker_httpd/
docker cp 用法: docker cp 容器名称:容器内文件目录 宿主机文件目录
- 第七步:我们再运行我们的命令
docker run -itd -p 81:80 --name usteel_httpd -v $PWD/htdocs/:/usr/local/apache2/htdocs/ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf -v $PWD/logs/:/usr/local/apache2/logs/ httpd:2.4.43
查看容器
docker ps
- 最后一步:我们访问宿主机 81端口,看看是否成功
通过外网访问服务器:**...:81
如果外网访问不到,请百度设置服务器端口安全组!
大功告成!!
不积跬步,无以至千里
更多推荐
已为社区贡献1条内容
所有评论(0)