◄返回
Docker,启动! | @a1375625918

Docker,启动!

2023/05/24 16:39

分类:编程


我希望写个 Dockerfile,并让它跑起来。

遇事不决先看文档。先看看 Best practices for writing Dockerfiles 吧。

1
2
3
4
5
6
7
8
9
# syntax=docker/dockerfile:1
#从这个镜像开始
FROM ubuntu:18.04
#把文件复制进去
COPY . /app
#把程序构建起来
RUN make /app
#开始运行程序
CMD python /app/app.py

这里的每一行都是一个指令 (instruction),每条指令会创建一个层 (layer)。将需要的文件准备好,且 DockerFile 编写完成后,在终端运行下列命令,稍等片刻,镜像应该就能完成构建,并在容器里运行了。

1
2
docker build -t my-image .
docker run my-image

整个过程就像给电脑装软件那样,先从官方安装操作系统,然后再在上面安装应用程序。众所周知,电脑城(x)学校机房或者网吧这样的地方很需要一套标准化的软件安装流程,用来给每台电脑安装一样的操作系统和应用,提供一样的服务。于是,有人将常用的软件打包进系统,使用这样的整合包进行装机就方便了不少。同样,有了 Dockerfile 的指引,Docker 能简单、快速地准备好运行应用所需的环境,应用的部署和缩放变得更快更方便了。

在整合包安装完成后,我们也可以再额外安装自己需要的应用程序。如果乐意,还可以做个属于自己的整合包。Docker 也是这样,引用已有的镜像能省去我们不少的时间,很多时候还能节省储存空间。在下面这个例子中,我们从一个带 php 的 apache 开始,直接将我们的网站文件复制进去,就比直接从操作系统开始安装网站服务器方便许多。

1
2
3
4
5
6
7
FROM php:8.1.18-apache
COPY . /app
ENV APACHE_DOCUMENT_ROOT /app
RUN chown -R www-data:www-data /app && \
sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \
sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
EXPOSE 80

别忘了,我们正在容器里运行一个网站服务器。要想在容器外访问到它,还得把端口暴露出来。运行下面的命令,就可以完成构建和启动了。

1
2
docker build -t my-image .
docker run -p 80:80 my-image

这篇文章大概就写这么多了。希望你也可以迈出启动 Docker 的第一步!


© 2023 @a1375625918

findway.top 蜀ICP备2023008060号-1