Ywc's blog

docker的学习

Word count: 644Reading time: 2 min
2019/05/06

前言(踩过的坑)

这几天国赛赛区出题,start.sh一直没启动成功,卡壳了两天,后来才知道在windows下编写的脚本文件,放到Linux中无法识别格式,用vi打开脚本文件,在命令模式下输入set ff=unix或者set fileformat=unix保存退出即可。
docker安装apache2服务启动起来后,php文件没有渲染,要安装一个apache扩展apt-get install -y libapache2-mod-php

docker一些常用指令:

  • docker ps 查看正在运行的容器
  • docker image ls/docker images 列出本地镜像
  • docker -it
    docker -i 以交互模式运行容器,通常与 -t 同时使用
    docker -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
  • docker -d 后台运行容器,并返回容器ID;
  • docker -p 端口映射,格式为:主机(宿主)端口:容器端口
  • docker exec -it 9df70f9a0714 /bin/bash 进入ID为9df70f9a0714的容器中去,可以执行bash指令。

使用docker运行服务

前提是在一个写好dockerfile的文件夹中
首先需要创建一个docker镜像:

1
docker build -t php .      //php可以随便取一个名字,最后面要记得加空格和一个.号

然后运行这个镜像

1
docker run -it -d -p 2019:80 php  

这是时候即可在本地:127.0.0.1:2019 访问这个服务

删除本地镜像

参考链接:文章

1.查询镜像:docker images
docker
2.查询容器:docker ps -a
docker
3.先删除容器:docker rm +ID
docker
4.再删除镜像:docker rmi +ID
docker
注意点:

  1. 删除前需要保证容器是停止的 stop
  2. 需要注意删除镜像和容器的命令不一样。 docker rmi ID ,其中 容器(rm) 和 镜像(rmi)
  3. 顺序:需要先删除容器,在删除镜像
    参考链接:http://www.runoob.com/docker/docker-command-manual.html

实战:

SUCTF题目的docker环境搭建
SUCTF题目的docker镜像:

1
2
3
4
5
6
7
8
9
10
11
12
13
suctf/2018-web-multi_sql suctf/2018-web-homework
suctf/2018-web-hateit
suctf/2018-web-getshell
suctf/2018-web-annonymous suctf/2018-pwn-note
suctf/2018-pwn-noend
suctf/2018-pwn-lock2
suctf/2018-pwn-heapprint suctf/2018-pwn-heap
suctf/2018-misc-padding
suctf/2018-misc-game
suctf/2018-misc-rsagood
suctf/2018-misc-rsa
suctf/2018-misc-enjoy
suctf/2018-misc-pass

启动doker

1
sudo service docker start

查看SUCTF,发现只有一个开放。。

1
sudo docker search suctf

docker
题目是在80端口开放,运行即可。

1
sudo docker run -d -p 80:80 suctf/2018-web-getshell

docker
在VPS中输入0.0.0.0:80即可看到题目,也可以ifconfig查看虚拟机ip,在虚拟机或者主机中 ip加上端口即可看到题目。
docker
docker

CATALOG
  1. 1. 前言(踩过的坑)
  2. 2. docker一些常用指令:
  3. 3. 使用docker运行服务
  4. 4. 删除本地镜像
  5. 5. 实战: