介绍

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。(来自百度百科)

官方社区:http://docs.daocloud.io/

主页:https://www.daocloud.io/

注意:docker目前只支持64位系统

一. 安装

安装最新的 Docker 版本

修改/etc/apt/sources.list文件,添加源:

deb https://get.docker.io/ubuntu docker main

更新软件列表

sudo apt-get update
sudo apt-get install docker-engine

自动化安装

使用脚本自动安装

Docker 官方为了简化安装流程,提供了一套安装脚本,Ubuntu 和 Debian 系统可以使用这套脚本安装:

curl -sSL https://get.docker.com/ | sh

在国内使用这个脚本可能会出现因为墙导致的某些下载出现错误的情况。
国内的一些云服务商提供了这个脚本的修改版本,使其使用国内的 Docker 软件源镜像安装

阿里云的安装脚本

curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -

DaoCloud 的安装脚本

curl -sSL https://get.daocloud.io/docker | sh

安装成功后,我们启用并启动服务

sudo systemctl enable docker  #在服务器上设置设置开机启动
sudo systemctl start docker   #启动docker服务
sudo docker info
ps -aux | grep docker  #查看是否启动成功

二. 简单使用

以安装kali为例:

搜索Docker上的kali镜像

sudo docker search kali      

获取其中的一个kali镜像

sudo docker pull kalilinux/kali-linux-docker  

创建一个容器

sudo docker run -t -d kalilinux/kali-linux-docker    

参数解释

-i   保证容器中 STDIN 是开启的
-t   标志要为新创建的容器分配一个伪 tty 终端,这样我们就能在新创建容器中使用 交互式 shell ;

修改容器名称,这里我改成dockali

docker rename jovial_curie dockali       

进入容器shell

docker exec -it dockali bash      

然后我们就可以安装我们需要的东西啦,比如msf。。。

在容器中安装程序: docker run kali apt-get install ****
直接进入系统直接安装所要的程序吧。
进入容器: docker run -i -t dockali
更新一下: apt-get update
更新完毕后kali中的所有软件只要想用的 都可以自己安装下面我们安装msf
apt-get install metasploit-framework

我们也可以部署在VPS上,可以有效避免我们装许多依赖~

三. 其他使用

Metasploit

sudo docker pull remnux/metasploit
sudo docker run --rm -it -p : -v ~/.msf4:/root/.msf4 -v /tmp/msf:/tmp/data remnux/metasp

参数解释

-v    将本机中的目录映射到容器内相关目录上(冒号":"前面的目录是宿主机目录,后面的目录是容器内目录)
     ~/.msf4目录保存Metasploit框架的配置文件。外部机器上的“/tmp/msf”目录用于保存其他数据,比如你从目标系统获取的相关信息。
-p    将本机上的输入流端口映射到容器内的端口。上面的例子使用TCP端口443接收从反弹shell进入的HTTPS链接。

容器被配置为当你登录后自动更新Metasploit的模块。如果你需要增加自己的模块,可以将它们放在主机的~/.msf4目录中

容器内部默认使用/tmp/data目录,所以结果文件会存放在那,比如使用msfvenom生成的payload,映射之后我们可以在本机上的/tmp/msf目录中查找

容器包含了tmux多路终端工具。它可以让你在一个终端窗口内同时登陆多个“虚拟”窗口。容器修改了工具默认的Ctrl+b快捷键,将它改为Ctrl+a。

登陆Metasploit框架容器后,输入“tmux”可以使用该工具了。你会在该工具多个“虚拟”窗口中得到一个shell。

想要开启另外一个,按Ctrl+a然后按“c”。去切换窗口,按Ctrl+a然后按窗口编码(例如,Crl+a然后按“0”或“1”)

docker漏洞利用

http://www.cnblogs.com/hanyifeng/p/5526799.html

http://www.91ri.org/15837.html

docker命令

查看镜像: docker images [NAME]
删除镜像:docker rmi IMAGE
列出容器: docker ps -a
启动容器: docker start xxx
删除容器:docker rm CONTAINER ID
查看容器id: docker ps -a
查看所有容器id:docker ps -a -q
查看最近生成的容器:docker ps -l
查看正在运行的容器:docker ps
停止正在运行的容器:docker stop CONTAINERID
启动一个退出的容器:docker start CONTAINERID
attach到运行中的容器: docker attach CONTAINERID 启动所有的容器: docker start $(docker ps -a | awk '{ print $1}' | tail -n +)
关闭所有的容器: docker stop $(docker ps -a | awk '{ print $1}' | tail -n +)
删除所有的容器: docker rm $(docker ps -a | awk '{ print $1}' | tail -n +)
删除所有的镜像: docker rmi $(docker images | awk '{print $3}' |tail -n +) docker使用完成后并不用保存。
容器中执行bash并进入交互式shell: docker exec -it xxx /bin/bash
在容器中,按ctrl + p再按ctrl + q退出容器,但不结束bash
下次执行: docker attach xxx 即可再次进入此bash
只有当你觉得需要保存成镜像的时候才执行commit

镜像导出与导入

导入容器快照为镜像(docker import)

容器在本地:
  cat centos.tar | docker import - registry.intra.weibo.com/yushuang3/centos:v2.0 容器在网络上:
  docker import http://example.com/exampleimage.tgz registry.intra.weibo.com/yushuang3/centos:v2.0

注意:
用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,
也可以使用 docker import 来导入一个容器快照到本地镜像库。
这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),
而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

使用ssh进入docker容器镜像目录时,如果开启多个容器,会不方便,可以试试nsenter

补充:

使用DaoCloud管理docker容器:https://dashboard.daocloud.io/

用国内的镜像来加速下载:https://www.daocloud.io/mirror#accelerator-doc

docker给运行中的容器添加映射端口

方法1
1、获得容器IP
将container_name 换成实际环境中的容器名

docker inspect `container_name` | grep IPAddress

2、 iptable转发端口
将容器的8000端口映射到Docker主机的8001端口

iptables -t nat -A DOCKER -p tcp --dport  -j DNAT --to-destination 172.17.0.19:

方法2
1.提交一个运行中的容器为镜像

docker commit containerid foo/live

2.运行镜像并添加端口

docker run -d -p : foo/live /bin/bash

 

docker安装使用的更多相关文章

  1. 理解Docker(1):Docker 安装和基础用法

    本系列文章将介绍Docker的有关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

  2. docker安装

    系统要求:需要一个64位的centos7操作系统和版本3.10或更高版本的Linux内核 开始安装: uname -r   //查看内核版本yum -y update //更新系统更新到最新 #安装d ...

  3. 2. Docker - 安装

    一.Docker介绍 1. Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上, 也可以实现虚拟化. 容器时完全使用沙 ...

  4. Docker 安装部署

    Docker学习笔记 一.Ubuntu Docker 安装 (1).获取最新版本Docker安装包 lyn@lyn:/data/docker$ sudo wget -qO- https://get.d ...

  5. docker 安装

    Docker使用了一种叫AUFS的文件系统,这种文件系统可以让你一层一层地叠加修改你的文件,最底下的文件系统是只读的,如果需要修改文件,AUFS会增加一个可写的层(Layer),这样有很多好处,例如不 ...

  6. Docker安装及基本使用方法

    Docker安装 CentOS6上安装Docker # yum -y install epel-release # yum -y install docker-io CentOS7上安装Docker ...

  7. Mac 下 docker安装

    http://www.th7.cn/system/mac/201405/56653.shtml Mac 下 docker安装 以及 处理错误Cannot connect to the Docker d ...

  8. docker安装caffe

    [最近一直想要学习caffe,但是苦苦纠结于环境安装不上,真的是第一步都迈不出去,还好有docker的存在!下面,对本人如何利用docker安装caffe做以简单叙述,不属于教程,只是记录自己都做了什 ...

  9. Docker安装Gitlab

    一.Ubuntu16.4上Docker安装Gitlab 1.安装docker 参见:https://docs.docker.com/engine/installation/linux/ubuntuli ...

  10. 使用docker安装部署Spark集群来训练CNN(含Python实例)

    使用docker安装部署Spark集群来训练CNN(含Python实例) http://blog.csdn.net/cyh_24/article/details/49683221 实验室有4台神服务器 ...

随机推荐

  1. Lucene.net入门学习

    Lucene.net入门学习(结合盘古分词)   Lucene简介 Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全 ...

  2. Android项目---快递查询

    快递查询,快递100上有更多接口信息 1.快递查询的接口是 快递公司的code值+快递单号 进行的网络查询.第一步,怎么将快递公司的名字转换成code值,传递给接口.下面是快递公司以及对应的code值 ...

  3. 简单的php和apache的安装

    今天刚刚接触到PHP  要想深入学习一门语言  首先我们先从安装开始   对于php和apache这两个程序是比较难以安装的  好了  下面我们开始正式安装: 首先我们得准备好  apache  以及 ...

  4. Android 5.0自定义动画

    材料设计中的动画对用户的操作给予了反馈,并且在与应用交互时提供了持续的可见性.材料主题提供了一些按钮动画和活动过渡,Android 5.0允许你自定义动画并且可以创建新的动画: Touch Feedb ...

  5. ASP.NET MVC+Knockout+Web API+SignalR

    架构设计(ASP.NET MVC+Knockout+Web API+SignalR) 架构设计(ASP.NET MVC+Knockout+Web API+SignalR) 2014-01-16 18: ...

  6. [笔记] OS X and iOS 内核开发

    一.KEXT包的安全性说明 KEXT 程序包及其包含的所有文件及文件夹必须属于 root 用户(用户 id 是 0) KEXT 程序包及其包含的所有文件及文件夹必须属于 wheel 组(组 id 是 ...

  7. [转]gdb 调试 objc

    源:http://bbs.pediy.com/showthread.php?t=159549 3. 在没有 symbols的情况下,想要下断 objc method 或者 private framew ...

  8. (转)JS中公共/私有变量和方法

    私有变量 在对象内部使用'var'关键字来声明,而且它只能被私有函数和特权方法访问. 私有函数 在对象的构造函数里声明(或者是通过var functionName=function(){...}来定义 ...

  9. C#:iterator 迭代器/partial class 分布类/泛型

    C#:iterator 迭代器/partial class 分布类/泛型 iterator 迭代器 写个最简单的迭代,(迭代一个字符串数组): 1.实现接口中的方法: 1 using System; ...

  10. Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

    Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...