1.创建一个php服务需要的dockfile
vim php_dockerfile
# Use the latest Ubuntu image as the base image.
FROM ubuntu:
20.04
# Set environment variables.
ENV DEBIAN_FRONTEND=noninteractive
# Update and install necessary packages.
RUN apt-get update && \
apt-get install -y \
apache2 \
php \
libapache2-mod-php \
curl \
vim \
&& apt-get clean
# Open port
for
Apache service.
EXPOSE
80
# Specify the command to run the web server.
CMD [
"apache2ctl"
,
"-D"
,
"FOREGROUND"
]
# Add a web shell.
RUN echo
"<?php system('cat /etc/hosts');?>"
> /var/www/html/webshell.php
2.通过php_dockerfile文本文件,生成一个docker镜像
docker build -f php_dockerfile -t my-app-php .
docker images #查看刚生成的my-app-php镜像
docker build -t: -t 参数用于为构建的Docker镜像指定一个标签(tag)。标签通常包括仓库名称、镜像名称和版本号,例如 repository_name/image_name:tag。通过使用 -t参数,你可以为构建的镜像赋予一个易于识别和管理的名称和标签。例如: docker build -t myapp:1.0 . 这个命令将构建一个名为 myapp,版本号为 1.0的Docker镜像,并将当前目录作为构建上下文。 docker build -f: -f 参数用于指定Dockerfile的路径。Dockerfile是包含构建镜像指令的文本文件,它告诉Docker如何构建镜像。默认情况下,Docker会在当前目录查找名为 Dockerfile的文件。但是,如果你的Dockerfile位于不同的位置,你可以使用 -f参数来指定它的路径。例如: docker build -f /path/to/Dockerfile . 这个命令将使用 /path/to/Dockerfile中定义的指令来构建Docker镜像,而不是默认的 Dockerfile。 总结: -t 参数用于为构建的镜像指定标签,以便于标识和管理镜像。 -f 参数用于指定要使用的Dockerfile的路径,允许你在不同的位置使用不同的Dockerfile来构建镜像。
如果是想把镜像上传到远程仓库中,需要先登录仓库,然后push这个镜像到仓库中:
要把镜像上传到远程仓库,需要执行以下步骤: 1.登录远程仓库 首先,使用docker login命令登录到目标远程仓库。例如,如果要推送到Docker Hub,可以执行docker login命令,并根据提示输入用户名和密码进行登录。
如果目标仓库是阿里云镜像仓库或其他私有仓库,需要使用正确的用户名和密码进行登录。 2.给镜像打标签 使用docker tag命令给要推送的镜像打上标签。
标签的格式通常为<registry-url>/<repository>/<image-name>:<tag>
其中<registry-url>是远程仓库地址,<repository>是仓库名,<image-name>是远程仓库中的镜像名,<tag>是标签。
例如,如果要将本地的镜像myimage打上标签username/myimage,则执行docker tag myimage username/myimage命令。 3.推送镜像 使用docker push命令将标记后的镜像推送到远程仓库。
例如,将标记为username/myimage的镜像推送到Docker Hub,执行docker push username/myimage命令。根据镜像大小和网络情况,推送过程可能需要一些时间。 4.验证推送结果 推送完成后,可以在远程仓库中查看并使用推送的镜像,确保镜像已经成功上传。 这些步骤适用于大多数远程仓库服务,包括Docker Hub、阿里云镜像仓库等。确保在执行这些步骤时,网络连接稳定,并且具有正确的访问权限
等镜像push到远端仓库成功以后,其他任何地方都可以使用这个镜像了。
3.用镜像启动一个容器
把镜像作为一个容器,启动起来后,这个服务就也一起启动了,php服务就可以正常访问了
docker run -d -p 8080:80 my-python-app
其中my-python-app就是容器名称了。然后就可以正常访问服务了: http://xxx.xx.xx.xx:8080/webshell.php
使用Docker启动一个容器的基本命令是docker run。
这个命令用于从Docker镜像启动一个新的容器实例。
以下是使用docker run命令的一些基本用法和选项: 1.基本用法:docker run命令的基本语法是 docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
其中,IMAGE是你想要运行的Docker镜像的名字,而[COMMAND]和[ARG...]是进入容器后想要执行的命令和参数。
例如,如果你想要运行一个基于Ubuntu的Docker镜像,并进入容器的交互式Shell,你可以使用命令docker run -it ubuntu /bin/bash
这个命令会启动一个新的容器,并以交互模式运行bash shell1。 2.指定容器名称:使用 --name 参数可以指定容器的名称,这样可以在后续操作中通过名称来引用该容器。
例如,docker run --name my-container ubuntu /bin/bash 会启动一个新的容器,并将其命名为 my-container。 3.端口映射:使用 -p 参数可以进行端口映射,将容器内部的端口映射到主机上,以便从主机访问容器内部的服务。
例如,docker run -p 8080:80 my-web-app 会将容器内部的80端口映射到主机的8080端口上。 4.后台运行:使用 -d 参数可以让容器在后台运行。
这对于需要长时间运行的服务非常有用,因为即使你关闭了终端或SSH连接,容器也会继续运行。
例如,docker run -d my-redis-container redis 会使redis容器在后台运行。 5.环境变量:使用 -e 参数可以设置环境变量,这些变量可以在容器内部被应用程序使用。
例如,docker run -e MY_VAR=myvalue my-image 会在启动容器时设置一个名为 MY_VAR 的环境变量,其值为 myvalue2。 通过这些选项,你可以灵活地控制Docker容器的启动方式和环境配置,以满足不同的应用需求。
标签:容器,部署,仓库,镜像,docker,php,dockerfile,Docker From: https://www.cnblogs.com/pingguomang/p/18311355