写点什么

Docker 实用技巧三

作者:Nick
  • 2022 年 6 月 18 日
  • 本文字数:1478 字

    阅读完需:约 5 分钟

Docker 实用技巧三

运行第一个 Dockerfile

上一篇的 Dockerfile 我们停留在构建阶段,现在来把它跑起来


docker run -d -p 80 --name static_web nicksxs/static_web \nginx -g "daemon off;"
复制代码


这里的-d表示以分离模型运行 docker (detached),然后-p 是表示将容器的 80 端口开放给宿主机,然后容器名就叫 static_web,使用了我们上次构建的 static_web 镜像,后面的是让 nginx 在前台运行



可以看到返回了个容器 id,但是具体情况没出现,也没连上去,那我们想看看怎么访问在 Dockerfile 里写的静态页面,我们来看下 docker 进程



发现为我们随机分配了一个宿主机的端口,32768,去服务器的防火墙把这个外网端口开一下,看看是不是符合我们的预期呢



好像不太对额,应该是 ubuntu 安装的 nginx 的默认工作目录不对,我们来进容器看看,再熟悉下命令docker exec -it 4792455ca2ed /bin/bash记得容器 id 换成自己的,进入容器后得找找 nginx 的配置文件,通常在/etc/nginx,/usr/local/etc等目录下,然后找到我们的目录是在这



所以把刚才的内容复制过去再试试



目标达成,give me five✌️

第二个 Dockerfile

然后就想来动态一点的,毕竟写过 PHP,就来试试 PHP 再建一个目录叫 dynamic_web,里面创建 src 目录,放一个 index.php 内容是


<?phpecho "Hello World!";
复制代码


然后在 dynamic_web 目录下创建 Dockerfile,


FROM trafex/alpine-nginx-php7:latestCOPY src/ /var/www/htmlEXPOSE 80
复制代码


Dockerfile 虽然只有三行,不过要着重说明下,这个底包其实不是 docker 官方的,有两点考虑,一点是官方的基本都是 php apache 的镜像,还有就是 alpine 这个,截取一段中文介绍


Alpine 操作系统是一个面向安全的轻型 Linux 发行版。它不同于通常 Linux 发行版,Alpine 采用了 musl libc 和 busybox 以减小系统的体积和运行时资源消耗,但功能上比 busybox 又完善的多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine 还提供了自己的包管理工具 apk,可以通过 https://pkgs.alpinelinux.org/packages 网站上查询包信息,也可以直接通过 apk 命令直接查询和安装各种软件。Alpine 由非商业组织维护的,支持广泛场景的 Linux 发行版,它特别为资深/重度 Linux 用户而优化,关注安全,性能和资源效能。Alpine 镜像可以适用于更多常用场景,并且是一个优秀的可以适用于生产的基础系统/环境。


Alpine Docker 镜像也继承了 Alpine Linux 发行版的这些优势。相比于其他 Docker 镜像,它的容量非常小,仅仅只有 5 MB 左右(对比 Ubuntu 系列镜像接近 200 MB),且拥有非常友好的包管理机制。官方镜像来自 docker-alpine 项目。


目前 Docker 官方已开始推荐使用 Alpine 替代之前的 Ubuntu 做为基础镜像环境。这样会带来多个好处。包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。


一方面在没有镜像的情况下,拉取 docker 镜像还是比较费力的,第二个就是也能节省硬盘空间,所以目前有大部分的 docker 镜像都将 alpine 作为基础镜像了然后再来构建下



这里还有个点,就是上面的那个镜像我们也是 EXPOSE 80 端口,然后外部宿主机会随机映射一个端口,为了偷个懒,我们就直接指定外部端口了docker run -d -p 80:80 dynamic_web打开浏览器发现访问不了,咋回事呢因为我们没看trafex/alpine-nginx-php7:latest这个镜像说明,它内部的服务是 8080 端口的,所以我们映射的暴露端口应该是 8080,再用 docker run -d -p 80:8080 dynamic_web这个启动,



本文使用署名 4.0 国际 (CC BY 4.0)许可协议,欢迎转载、或重新修改使用,但需要注明来源。

本文作者: Nicksxs

创建时间: 2020-03-21

本文链接: Docker 实用技巧三

发布于: 刚刚阅读数: 3
用户头像

Nick

关注

还未添加个人签名 2017.12.22 加入

写代码的阿森 https://nicksxs.me https://nicksxs.com 也可以看我的博客

评论

发布
暂无评论
Docker 实用技巧三_Docker_Nick_InfoQ写作社区