docker出题

docker

Docker 不是虚拟机,容器中的应用都应该以前台执行,而不是像虚拟机、物理机里面那样,用 upstart/systemd 去启动后台服务,容器内没有后台服务的概念。

对于容器而言,其启动程序就是容器应用进程,容器就是为了主进程而存在的,主进程退出,容器就失去了存在的意义,从而退出,其它辅助进程不是它需要关心的东西。

dockerfile模板

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# 第一行写跟第1点中一样的基本镜像
FROM ubuntu:14.04
# 这里可以写上你的姓名/昵称
MAINTAINER yourname
# 这里可以写上你的制作时间
ENV REFRESHED_AT 2018-01-01
# 使用utf-8编码
ENV LANG C.UTF-8

# 先写 修改源/更新 【如果必须的话】
# 替换源(这里可用sed或者直接COPY一个完整的sources.list来替换)
RUN sed -i 's/http:\/\/archive.ubuntu.com\/ubuntu\//http:\/\/mirrors.163.com\/ubuntu\//g' /etc/apt/sources.list
# 进行更新
RUN apt-get update -y
# 将环境变量设置为非交互的 【这个看个人】
ENV DEBIAN_FRONTEND noninteractive

# 再写 各种安装
# 如 安装mysql
RUN apt-get -y install mysql-server
# 安装apache2
RUN apt-get -yqq install apache2
# 安装php7
RUN apt-get -yqq install php7 libapache2-mod-php7
# 安装php扩展
RUN apt-get install -yqq php7-mysql php7-curl php7-gd php7-intl php-pear php7-imagick php7-imap php7-mcrypt php7-memcache php7-ming php7-ps php7-pspell php7-recode php7-snmp php7-sqlite php7-tidy php7-xmlrpc php7-xsl

# 再 修改一些配置
# 对于文件中的替换字符串,多使用sed命令
# 例如去掉apache2的列目录漏洞
RUN sed -i 's/Options Indexes FollowSymLinks/Options None/' /etc/apache2/apache2.conf

# 然后才是复制文件,不推荐挂载卷
# ADD会自动解压压缩包,而COPY不会
ADD html.tgz /var/www

# 剩下一些操作(权限要控制好)
# 例如修改某个文件的所有者
RUN chown root:root /var/www/html/x.php

# start.sh为开机启动脚本,里面包含容器开启后要启动的命令
COPY start.sh /root/start.sh
# 加上执行权限
RUN chmod +x /root/start.sh
# 使用ENTRYPOINT而不使用CMD(CMD容易受run命令最后的命令给影响)
ENTRYPOINT cd /root; ./start.sh
# WEB开放端口默认为80,一般为一个,若有特殊情况,请写明
EXPOSE 80

基本操作

进入终端

1
docker run -it id bash

进入容器

1
docker exec -it <容器ID> /bin/bash

运行

1
docker run -d -p 本机端口:容器端口 <镜像名>

拷贝

1
docker cp [本地路径] [container id]:[container 路径]

配环境

自己安装web环境感觉好麻烦呀,看了看网上的还有别人配好的镜像

在这里插入图片描述

拉了第一个看看,中途3306可能会被占用kill掉就行

docker pull mattrayner/lamp

docker run --name test-lamp -p 12345:80 -p 3306:3306 -d mattrayner/lamp

进去看了一下,确实比较齐全,但就是拉镜像的时候安装太慢了。但dockerfile也写的简单。

1
2
3
4
5
6
7
8
9
10
11
12
13
from mattrayner/lamp

MAINTAINER KKfine

ENV REFRESHED_AT 2021-8-1

ENV LANG C.UTF-8

ADD ctfweb.tar.gz /var/www/html

COPY hint.php /tmp

RUN echo '设置的flag' > /home/flaaag.txt && rm -rf /var/www/html/* && tar -zcvf ctfweb.tar.gz var/www/html

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!