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
| FROM ubuntu:14.04
MAINTAINER yourname
ENV REFRESHED_AT 2018-01-01
ENV LANG C.UTF-8
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
RUN apt-get -y install mysql-server
RUN apt-get -yqq install apache2
RUN apt-get -yqq install php7 libapache2-mod-php7
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
RUN sed -i 's/Options Indexes FollowSymLinks/Options None/' /etc/apache2/apache2.conf
ADD html.tgz /var/www
RUN chown root:root /var/www/html/x.php
COPY start.sh /root/start.sh
RUN chmod +x /root/start.sh
ENTRYPOINT cd /root; ./start.sh
EXPOSE 80
|
基本操作
进入终端
进入容器
| docker exec -it <容器ID> /bin/bash
|
运行
| docker run -d -p 本机端口:容器端口 <镜像名>
|
拷贝
| 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也写的简单。
| 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
|