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