(点击查看大图)
参考:https://github.com/yeasy/docker_practice/blob/master/SUMMARY.md
http://n4tsu.top/2019/06/04/Docker%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0/#more
安装docker
1、更新apt
1 | sudo apt-get update |
2、安装docker
1 | sudo apt-get install docker-ce |
3、查看docker是否安装成功
1 | docker -v |
若显示“Docker version xx.xx.x-ce, build afdb6d4” 安装成功
4、更新docker源为国内源
1 | vi /etc/docker/daemon.json |
加上以下代码
1 | { |
Docker的使用
开启docker服务
1 | sudo service docker start |
停止重启服务
1 | sudo service docker stop |
拉取镜像
1 | docker pull [image] |
查看当前镜像。
1 | docker images |
新建一个docker容器,并映射端口号
1 | docker run -d -p [host port]:[docker port] [image] |
查看运行中的docker容器
1 | docker ps |
进入一个docker容器。
1 | docker exec -it [container id] bash |
拷贝本地文件到docker。
1 | docker cp [本地路径] [container id]:[container 路径] |
启动/停止docker容器
1 | docker stop [container id] |
删除docker容器
1 | docker rm [container id] |
删除docker镜像
1 | docker rmi [image id] |
CTF题目搭建
先安装好了tutum/lamp镜像
直接使用该镜像开启容器
1 | docker run -d -p 100:80 tutum/lamp |
100表示本机端口,若有占用可自行更改
查看运行的容器,找到容器的ID
将ctf题目源码复制进容器中
1 | docker cp HELLO.php 0d9b6ee67f88:/app |
进入容器查看,复制成功
Dockerfile的使用
我们对一些固定的docker设置如何保存呢? 如何保存我们的一系列docker操作呢?由此便有了Dockerfile来构建镜像,便于更好保存我们的操作,dockerfile本质上是一个存储多行命令的文件。
利用Dockerfile构建镜像
在源码同目录下新建Dockerfile文件
编写Dockerfile文件
在该目录开启终端
1 | docker build -t [镜像名] . |
1 | docker run -d -p [host port]:[docker port] [容器名] |
编写Dockerfile指令
FROM 基于哪个镜像的基础开发
1 | FROM tutum/lamp:latest |
RUN 容器构建时需要运行的命令
1 | RUN rm -fr /app \ |
换行注意加\
EXPOSE 用于指定容器将要监听的端口
1 | EXPOSE 80 3306 |
COPY 将主机的文件复制到镜像内,如果目的位置不存在,Docker会自动创建所有需要的目录结构 (注意:需要复制的目录一定要放在Dockerfile文件的同级目录下)
1 | COPY ./[本地文件] /[docker路径] |
ADD 同上类似
CMD 用于执行目标镜像中包含的软件和任何参数。CMD 几乎都是以CMD ["executable", "param1", "param2"...]
的形式使用。因此,如果创建镜像的目的是为了部署某个服务(比如 Apache),你可能会执行类似于CMD ["apache2", "-DFOREGROUND"]
形式的命令
1 | CMD ["/run.sh"] |
WORKDIR 指定创建容器后,终端默认登录进来的工作目录,一个落脚点
ENV 用来在构建镜像过程中设置环境变量
#注释