V0W's Blog

Docker 学习笔记

字数统计: 1,712阅读时长: 6 min
2018/09/20 Share

docker是什么?

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

  • docker能让我们信息安全爱好者方便的搭建各种环境,包括创建各种系统镜像容器、搭建各种漏洞靶场的实战环境。

  • 它定义了从单个镜像解放到到容器铺设、容器铺设压缩到单个镜像的一套业内标准。

  • 就好比我们的快递包裹来了,docker可以直接使我们从这一个包裹的打开到拼装成豪华的变形金刚模型全过程的快速完成,当然反过来打包成包裹也是同样的道理。
  • 它的关键字是:虚拟化、沙箱制。

准备

预备知识

Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

安装

Windows安装

官网下载地址

注意一点:下载之前需要一个登录docker帐号,因为有人机验证,这个账号需要翻墙注册,否则无法注册。

安装首先要开启Windows10功能里面的Hyper-V,然后一直点点点登录刚刚注册的账号就可以了

需要windows专业版。。。

我的家庭版,算了。。。

参考链接

十分钟让你的Windows10畅玩Docker

Linux安装

笔者环境(ubantu16.04 虚拟机)

  1. 运行安装 Docker 的命令:

    1
    sudo apt-get install -y docker.io
  2. 等待安装完毕,现在我们使用下面的命令启动 Docker:

    1
    systemctl start docker
  3. 运行系统引导时启用 docker,命令:

    1
    systemctl enable docker
  4. 你可能想核对一下 docker 版本:

    1
    docker version

mark

docker的使用

搜索docker镜像

Docker官方网站专门有一个页面来存储所有可用的镜像,网址是:index.docker.io。你可以通过浏览这个网页来查找你想要使用的镜像,或者使用命令行的工具来检索。

命令行的格式为:docker search 镜像名字

1
docker search hello-world

mark

下载docker镜像

下载镜像的命令非常简单,使用docker pull命令即可。(译者按:docker命令和git有一些类似的地方)。在docker的镜像索引网站上面,镜像都是按照用户名/镜像名的方式来存储的。有一组比较特殊的镜像,比如ubuntu这类基础镜像,经过官方的验证,值得信任,可以直接用镜像名来检索到。

1
2
docker pull hello-world
docker pull learn/tutorial

mark

使用命令查看docker镜像

使用images命令查看docker的所有镜像文件

1
docker images

mark

在docker容器中运行hello-world

docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。、

docker run命令有两个参数,一个是镜像名,一个是要在镜像中运行的命令。

1
2
docker run hello-world 
docker run learn/tutorial echo "hello,V0W"

mark

mark

在docker容器中安装新的程序

下一步我们要做的事情是在容器里面安装一个简单的程序(ping)。我们之前下载的tutorial镜像是基于ubuntu的,所以你可以使用ubuntu的apt-get命令来安装ping程序:apt-get install -y ping

备注:apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。

在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。

mark

保存对容器的修改

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。类似于存取快照。

首先使用 docker ps -l(查看最后一次修改docker的id)或者docker ps -a(查看全部的docker的id)命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。

  1. 运行docker commit,可以查看该命令的参数列表。

  2. 你需要指定要提交保存容器的ID。

  3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。

mark

之后可以运行新的镜像

mark

检查运行的镜像

使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。

可以使用镜像id的前面部分,不需要完整的id。

正确的命令:

1
$ docker inspect efes(docker id)

mark

其实我也看不太懂这个容器的详细信息==、

发布自己的docker镜像

  1. docker images命令可以列出所有安装过的镜像。

  2. docker push命令可以将某一个镜像发布到官方网站。

  3. 你只能将镜像发布到自己的空间下面。

kill容器进程&删除容器

docker kill:杀掉一个运行中的容器。

1
$ docker kill [OPTIONS] CONTAINER [CONTAINER...]
  • -s :向容器发送一个信号

eg:

1
$ docker kill -s KILL mynginx

docker rm:删除一个或多少容器

1
$ docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • -f :通过SIGKILL信号强制删除一个运行中的容器
  • -l :移除容器间的网络连接,而非容器本身
  • -v :-v 删除与容器关联的卷

docker rmi: 删除本地一个或多少镜像

docker rmi [OPTIONS] IMAGE [IMAGE…]

  • -f :强制删除;

  • –no-prune :不移除该镜像的过程镜像,默认移除;

    mark

参考链接

  1. Docker入门教程
  2. Docker官方英文文档

  3. 【文章】十分钟让你的Windows10畅玩Docker

  4. 【文章】dockers常见命令解析

  5. docker常用命令

CATALOG
  1. 1. docker是什么?
  2. 2. 准备
    1. 2.1. 预备知识
    2. 2.2. 安装
      1. 2.2.1. Windows安装
      2. 2.2.2. Linux安装
  3. 3. docker的使用
    1. 3.1. 搜索docker镜像
    2. 3.2. 下载docker镜像
    3. 3.3. 使用命令查看docker镜像
    4. 3.4. 在docker容器中运行hello-world
    5. 3.5. 在docker容器中安装新的程序
    6. 3.6. 保存对容器的修改
    7. 3.7. 检查运行的镜像
    8. 3.8. 发布自己的docker镜像
    9. 3.9. kill容器进程&删除容器
  4. 4. 参考链接