首页 > 其他分享 >构建包含 SSH 和 LAMP 服务的 Docker 镜像

构建包含 SSH 和 LAMP 服务的 Docker 镜像

时间:2024-08-08 16:07:56浏览次数:13  
标签:sshd LAMP SSH && php5 Docker password root

容器构建概述

  • 容器配置有SSHD服务,且root密码为启动容器是随机生成,加强安全性
  • 更新容器内软件源为国内镜像源,加快软件安装
  • 容器有安装LAMP服务(版本5.5.x),安装有各类php插件,可以用作安全靶场练习
  • 部分情况下,资源缺少,可把容器模拟为虚拟机

entrypoint.sh文件内容

#!/bin/bash

# 生成随机 SSH 密码
PASSWORD=$(openssl rand -base64 12)

# 输出密码到日志文件
echo "Generated SSH password: $PASSWORD" > /root/password.log

# 设置 root 用户密码
echo "root:$PASSWORD" | chpasswd

# 启动 SSH 服务
/usr/sbin/sshd -D

Dockerfile文件

# 配置基础镜像
FROM ubuntu:14.04

# 设置维护人信息
LABEL maintainer="jianhua <[email protected]>"

# 配置为免交互模式
ENV DEBIAN_FRONTEND=noninteractive

# 配置时区
ENV TZ=Asia/Shanghai

# 安装软件和配置软件
RUN sed -i -e 's#archive.ubuntu.com#mirrors.ustc.edu.cn#g' -e 's#security.ubuntu.com#mirrors.ustc.edu.cn#g' /etc/apt/sources.list \
    && apt-get -y update \
    && apt-get -y --no-install-recommends install openssl apache2 php5 php5-mysql php5-gd php5-readline php5-xmlrpc php5-xsl mariadb-server wget unzip curl supervisor openssh-server \
    && mkdir -p /var/run/sshd \
    && sed -i 's#PermitRootLogin without-password#PermitRootLogin yes#g' /etc/ssh/sshd_config \
    && sed -i 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd \
    && sed -i 's/allow_url_include = Off/allow_url_include = On/g' /etc/php5/apache2/php.ini \
    && echo "ServerName localhost:80" >> /etc/apache2/apache2.conf \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf /var/cache/apt/* \
    && rm -rf /var/log/* \
    && rm -rf /tmp/*

# 添加启动脚本
COPY entrypoint.sh /usr/local/bin/entrypoint.sh

# 设置权限
RUN chmod +x /usr/local/bin/entrypoint.sh

# 暴露端口
EXPOSE 80 3306 22

# 运行服务
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]

构建镜像

➜  php559 ls ../php559 
Dockerfile  entrypoint.sh
➜  php559 docker build -t lnmp-sshd:v1 .
➜  ~ docker image ls -a | grep lamp-sshd
lamp-sshd          v1        ac2b8e93d625   7 hours ago     391MB
➜  ~ 

启动容器

➜  php559 docker run --name test -d -p 12222:22 -p 18080:80 -p 13306:3306 lnmp-sshd:v1
c692d503b006967e223e85b1a52274e28752bea49c105e936551703db23aaf3e
➜  php559 
➜  ~ docker exec test cat /var/log/password.log
Generated SSH password: Ue53dj7xEH0wGB5m
➜  ~ 

登录容器SSH

➜  ~ ssh -p 12222 [email protected]
The authenticity of host '172.17.0.4 (172.17.0.4)' can't be established.
ED25519 key fingerprint is SHA256:3DRPreVDfWugXpQwwy42MW7SUHMX2X0mimn7eKFgj80.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '172.17.0.4' (ED25519) to the list of known hosts.
[email protected]'s password: 
Welcome to Ubuntu 14.04 LTS (GNU/Linux 4.4.0-170-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

root@4a96098b91ca:~# 

标签:sshd,LAMP,SSH,&&,php5,Docker,password,root
From: https://www.cnblogs.com/amsilence/p/18347603

相关文章

  • docker仓库管理
    一、Harbor介绍Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,由VMware开源,其通过添加一些企业必需的功能特性,例如安全、标识和管理等,扩展了开源DockerDistribution。作为一个企业级私有Registry服务器,Harbor提供了更好的性能和安全。提升用户使用Registry构建......
  • 书生.浦江大模型实战训练营——(一)InternStudio+Vscode SSH连接远程服务器+Linux基础指
    最近在学习书生.浦江大模型实战训练营,所有课程都免费,以关卡的形式学习,也比较有意思,提供免费的算力实战,真的很不错(无广)!欢迎大家一起学习,打开LLM探索大门:邀请连接,PS,邀请有算力哈哈。文章目录一、InternStudio使用二、VscodeSSH连接远程服务器三、Linux基础指令一......
  • 关于在firewall防火墙无法阻止Docker 容器映射端口被外部访问问题的回顾
    这个问题是很早之前处理的,我自己已经没有印象了,今天同事拿了一个处理安全的文档来找我,上面赫然出现了我的名字,比较懵逼。。。这个问题的现象实际上是 docker映射的端口,通过firewalld 防火墙禁用端口不生效,外部还是能访问到,公司在进行安全扫描的时候总是被抓。。。。在firewall......
  • docker 简单入门1
     这里写自定义目录标题DockerDocker安装(centos)Docker启动、停止、查看状态Docker其他命令(常用)查询镜像安装镜像在线安装镜像离线安装镜像(说明可能不标准)启动容器重启容器停止容器修改容器中的配置文件(说明可能不标准)dockercomimtdockersavedockerlo......
  • centos7.9 安装docker-ce
    #step1:安装必要的一些系统工具sudoyuminstall-yyum-utilsdevice-mapper-persistent-datalvm2#Step2:添加软件源信息sudoyum-config-manager--add-repohttps://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#Step3sudosed-i's+download.docker.c......
  • 离线win/mac下vscode客户端通过ssh连接linux服务器
    1、下载vscode,这个网上教程一大堆就不一一介绍了,自行百度建议安装蓝色的版本,最后图标是蓝色的。下载网址:VisualStudioCode-CodeEditing.Redefined2、win系统或mac系统安装openssh,这个也一大堆教程,可以自行百度3、安装vscode插件下载网址:ExtensionsforVisual......
  • Docker 镜像拉取失败(error pulling image configuration:download failed)
     修改daemon.json配置vim/etc/docker/daemon.json 输入i替换为:{"builder":{"gc":{"defaultKeepStorage":"20GB","enabled":true}},"experimental":true,"f......
  • docker 删除包含某个字符串的镜像
    要删除以swr开头的Docker镜像,你可以使用以下步骤结合命令行操作来实现:列出所有以swr开头的镜像:首先,你需要找到所有以swr开头的镜像。使用dockerimages命令结合grep来过滤结果:dockerimages--format"{{.Repository}}:{{.Tag}}"|grepswr删除这些镜像:使用上一步的命......
  • 容器引擎-Docker
    Docker是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级、可移植的、自给自足的容器。Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将......
  • DockerCompose中使用自定义网络的方式实现部署SpringBoot+Mysql+Redis
    场景Docker中Docker网络-理解Docker0与自定义网络的使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140788458Docker中使用自定义网络方式实现Redis集群部署与测试流程:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/140797109上面介绍了D......