Loading... > 讲一下docker的用法。 > 关于ubuntu16.04安装最新docker的方法,参照官网手册。 ## 拉取镜像 可以使用 ```sh docker search ... ``` 查找有关镜像 然后使用 ```sh docker pull ... ``` 拉取镜像 ## 查看镜像 查看所有镜像 ```sh docker images ``` ## 启动镜像 有好几种启动方式。 ### 直接运行 ```sh docker run ubuntu:14.04 /bin/echo 'Hello world' ``` 这跟在本地直接执行 /bin/echo 'hello world' 几乎感觉不出任何区别。 下面的命令则启动一个 bash 终端,允许用户进行交互。 ```sh docker run -t -i ubuntu:14.04 /bin/bash ``` 其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i 则让容器的标准输入保持打开。 ### 守护态运行 更多的时候,需要让 Docker 容器在后台以守护态(Daemonized)形式运行。此时,可以通过添加 -d 参数来实现。 ```sh docker run -d ubuntu:14.04 ``` 容器启动后会返回一个唯一的 id,也可以通过 docker ps 命令来查看容器信息。 ```sh docker ps ``` 要获取容器的输出信息,可以通过 docker logs 命令。 ## 关闭容器 可以使用 ```sh docker stop ``` 来终止一个运行中的容器。 此外,当Docker容器中指定的应用终结时,容器也自动终止。 对于只启动了一个终端的容器,通过 exit 命令或 Ctrl+d 来退出终端时,所创建的容器立刻终止。终止状态的容器可以用 ```sh docker ps -a ``` 看到。 处于终止状态的容器,可以通过 ```sh docker start ``` 命令来重新启动。 ```sh docker restart ``` 命令会将一个运行态的容器终止,然后再重新启动它。 ## 进入容器 ### attach方式 当采用守护态启动容器时,使用attach可以附加到容器。 通过docker ps查看id就可以附加到运行的容器。 ```sh docker attach -itd 44fc0f0582d9 ``` ### exec方式 docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些, ```sh docker exec --help sudo docker exec -it 775c7c9ee1e1 /bin/bash ``` ## 拷贝文件 cp命令用于主机和容器拷贝文件,防止每次都重建dockerfile。 ```sh docker cp foo.txt mycontainer:/foo.txt docker cp mycontainer:/foo.txt foo.txt ``` ## pwn dockerfile ```sh FROM ubuntu MAINTAINER zjgcjy LABEL Description="zjgcjy_pwngame" VERSION='1.0' # x86_Support RUN dpkg --add-architecture i386 # update RUN apt-get update # install something basic RUN apt-get install -y libc6:i386 libncurses5:i386 libstdc++6:i386\ &&apt-get install -y socat sudo # copy file COPY ./pwn /tmp/pwn COPY ./flag.txtGOT-AND-PLT/tmp/ # add user RUN useradd -U -m pwn # rights configtion RUN chown root:pwn /tmp/flag.txt\ &&chown root:pwn /tmp/pwn RUN chmod 750 /tmp/pwn\ &&chmod 740 /tmp/flag.txt #WORKDIR /tmp/ CMD sudo -u pwn socat tcp-l:4444,fork exec:/tmp/pwn EXPOSE 4444 docker run -d -p 0.0.0.0:1111:4444 -t pwn ``` ## 构建自定义镜像 编写完成Dockerfile之后,可以通过docker build命令来创建镜像。 基本的格式为 docker build [选项]路径,该命令将读取指定路径下的Dockerfile,并将该路径下的所有内容发送给Docker服务端,由服务端来创建镜像。因此一般建议放置Dockerfile的目录为空目录 ```sh docker build -t pwn . ``` ## 删除images 1.停止所有的container,这样才能够删除其中的images: docker stop \$(docker ps -a -q) 如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q) 2.查看当前有些什么images docker images 3.删除images,通过image的id来指定删除谁 docker rmi \<image id\> 想要删除untagged images,也就是那些id为\<None\>的image的话可以用 docker rmi \$(docker images | grep "^\<none\>" | awk "{print \$3}") 要删除全部image的话 docker rmi \$(docker images -q) ``` ``` Last modification:January 16th, 2021 at 12:59 pm © 允许规范转载 Support 确定不打赏一下支持博主吗 ×Close Appreciate the author Sweeping payments Pay by AliPay