Docker入门简明教程

Docker 是基于 Go 语言实现的云开源项目,是基于 Linux 的多项开源技术提供高效、敏捷和轻量级的容器方案。创建于 2013 年初,自从开源后就受到了广泛的关注,从长远的眼光来看,Docker 是未来虚拟化的一个发展的趋势。带来了更轻量快捷的的体验,一台主机可以同时运行数千个 Docker 容器,而且在性能上几乎不会损耗。

Docker 简介

概念

Docker 是基于 Go 语言实现的云开源项目,是基于 Linux 的多项开源技术提供高效、敏捷和轻量级的容器方案。创建于 2013 年初。自从开源后就受到了广泛的关注,从长远的眼光来看,Docker 是未来虚拟化的一个发展的趋势。

优势

  1. 一次构建,处处运行,带来了更快速的交付和部署和更轻松的迁移和扩展。
  2. 对系统内核进行抽象,带来了更轻量快捷的的体验,一台主机可以同时运行数千个 Docker 容器,而且在性能上几乎不会损耗。

Docker 1.1.2 中 Ubuntu14.04 主机与 Ubuntu14.04 Docker 容器性能测试

参数测试工具物理主机Docker
CPUsysbench10.9945
写内存sysbench10.9826
读内存sysbench11.0025
磁盘 I Odd10.9811
网络iperf10.9626

从数值上看,物理主机与 Docker 容器之间的性能差异不大,二者速度几乎一样。

基本组件

镜像:镜像是构建 Docker 世界的基石。用户的一切操作都是基于镜像来运行自己的容器的。同时镜像也是 Docke r 的 “构建” 部分,也可以把镜像当作容器的” 源代码”,镜像体积很小,便携性高,易分享、存储和更新。
容器:容器是基于镜像启动起来的,用户只需要把自己的应用程序或服务打包放进容器即可。容器中可以运行一个或多个进程,是 Docker 的启动和执行阶段。

Docker 安装

这么多年过去了,这 Docker 安装的部分仅供参考留念。

安装 Docker 的前提条件

运行 64 位 CPU 架构的计算机(这意味着一些较老的机器可能无法安装 Docker)
Linux 系统的话,得运行 Linux3.8 内核及其以上的版本,一些老版本的 2.6x 内核运行可能会出现一些无法预料的 BUG

Windows 安装 Dokcer

官网直接下载安装包,然后直接运行来安装 Docker,开启 Hyper-V (这个阶段可能需要重启), 有可用更新的话,就安装更新。
小提示:Windows 下的 Docker 启动貌似有点慢,不知道是不是我这龟速的机械硬盘的原因。

验证 docker 是否安装成功:在命令提示符下输入:docker
出现下面这张图即安装成功:

macOS 安装 Docker

首先安装 Virtual Box,官网下载:https://www.virtualbox.org
Virtual box 安装完了再安装 Docker
Docker 官网直接下载安装包: https://download.docker.com/mac/stable/Docker.dmg
macOS 下安装启动就很快了。
然后在终端下输入:

docker

Mac 和 Linux 下必须得以 root 身份才可以稳定运行 docker,

效果如下:

Ubuntu 安装 Docker

Linux 安装要简单的多,毕竟 Docker 一开始就是基于 Linux 提出来的。
首先以 root 身份终端下输入:

apt-get install docker.io

然后就没有然后了,1 条命令即可安装 :

root 身份终端下输入:docker
查看安装是否成功:

Dokcer 入门

搜索镜像

Dokcer 通过 Dokcer Hub 搭建镜像共享生态系统,这意味着我们可以直接下载其他人已经打包好的镜像。
使用 docker search 命令在 Docker HUB 中搜索镜像
这里我们以搜索 Ubuntu 镜像为例:

docker search ubuntu


一般我们下载靠前面的镜像,OFFICIAL 标签如果是 OK 的话,这表示是官方镜像,其他的都是用户自己创建并共享的镜像。

下载镜像

下面从 Docker Hub 下载 Ubuntu 镜像,终端输入:

docker pull ubuntu

Docker 默认是下载最新版本的 Ubuntu 镜像 :
镜像一般都很小的,网速快的话可以分分钟下载完。

列出下载的镜像

下面列出本地主机中已经下载的 docker 镜像
终端输入:

docker images

或者:

docker image ls


可以看到我们刚刚下载的 Ubuntu 镜像,大小才 129MB, 是 4 周前更新的版本。

创建并使用容器

使用 run 命令即可用镜像来创建一个容器

docker run -i -t --name hellodocker ubuntu /bin/bash

命令格式为:docker run <选项参数>  <镜像名称> <要运行的文件>

>使用 -i、-t选项可以在运行的Bash shell中进行输入与输出
>使用—name可以指定容器的名称。如果不指定的话,docker默认会自动生成随机的名称进行指定。

再回看这行命令大概就明白了它的意思:使用 ubuntu 这个镜像来创建一个 名为 hellodocker 的容器
当我们创建容器后,默认就进入了容器,此时使用 cd、ls 等命令发现已经不是我们物理机上的 ubutu 了。

退出容器

终端输入:

exit

从 Bash shell 退出,因为在 Ubuntu 镜像中直接运行 /bin/bash 可执行文件,所以退出后 容器也会终止(stop),就这样我们创建运行并退出了一个容器,现在自己再亲手创建个容器试试看吧。

查看容器列表

终端输入:

docker ps -a

查看本地的所有容器的详细信息 :
image

可以看到,除了我们第一个创建的名为 hellodocker 外,还发现了我后来新建的 GG 容器,他们都是 Exited (退出状态),这里还可以看到他们的 ID、所使用的镜像、创建时间、端口等信息 。

使用 start 命令来启动容器

到这里机智的小伙伴们可能产生疑问了:第一次创建容器是默认就进入了容器,那么在我们 exit 退出容器之后如何唤醒我们的容器呢? 表急,其实 docker 早已考虑到了这个,我们在终端下输入:

docker start hellodocker

来启动名为 hellodocker 的容器,所以启动 docker 容器的命令就是:

docker start 容器名

来启动名为 hellodocker 的容器,所以启动 docker 容器的命令就是:

docker start 容器名

使用 restart 命令来重启容器

与重启系统一样,也可以直接使用如下命令来重启某个容器:

docker restart hellodocker

使用 attach 命令连接容器

前面我们 start 了一个容器,但是还是默认不进入容器,我们使用:

docker ps -a

来查看容器的运行情况:

可以看到 hellodocker 这个容器已经启动了 4 秒多了,说明容器已经在运行了,那么我们怎么来连接启动的 docker 容器呢?终端输入:

docker attach hellodocker

来连接已经在后台启动的 docker 容器 :

image

小提示:这里得 按下 回车 才进入容器,不要傻等,几分钟内都没有什么反应的(不要问我怎么知道的,心酸。。。)

Docker 系统统计信息

终端下输入:

docker stats

用来显示一个或多个容器的统计信息,可以看到容器的 ID、CPU 占用率、内存使用率、网速等信息 :

image

终止容器

要终止容器的话,首先 docker ps -a 列出后台正在运行的容器,然后终端输入:

docker stop hellodocker

终止了我们刚启动不久的 hellodocker 容器

删除容器

如果容器不再使用可以使用如下命令删除:

docker rm GG

删除了 GG 的容器(你要删除的容器必须已经停止运行了)

删除镜像

如果镜像不再使用可以使用如下命令删除:

docker rmi ubuntu

删除了本地的 ubuntu 镜像(此刻必须删除所有运行在这个镜像上的容器) :

OK Docker 的入门命令就教到这里了,下面我们来实战一把吧。

Docker 简约命令

列出下载的镜像

docker image ls

部署容器

docker run --name hellodocker -d -p 81:80 ubuntu:18.04

创建并使用容器

docker run -i -t --name hellodocker ubuntu /bin/bash

查看容器列表

docker ps -a

使用 start 命令来启动容器

docker start 容器名

使用 restart 命令来重启容器

docker restart 容器名

使用 attach 命令连接容器

docker attach 容器名
docker exec -it 容器名 /bin/bash
docker exec -it 容器名 /bin/zsh

Docker 系统统计信息

docker stats

终止容器

docker stop 容器名

删除容器

docker rm 容器名

删除镜像

docker rmi ubuntu

Dockfile

构建镜像

docker build -t test:v1 .

打造属于你自己的 Kali

一般我们搞信息安全的难免都会用到 Kali Linux,如果不想安装累赘的虚拟机或者不想折腾更新源等那么该肿么办呢?现在有了 Docker,这一切的问题都不再是问题,使用 Docker 来运行 Kali,更加轻便快捷,而且可以 ping 通物理机的 C 段,用来实战的话再合适不过了。 秀个主题先:

安装了 macOS 的主题后,Ubuntu 也感觉不再那么难用了。(嘿嘿 不扯了 赶紧步入正题了)

首先搜索下可用的 Kali 镜像

docker search kali

出来了一大堆,根据名字可以大概判断出第二个镜像是带有 meatsploit 的,所以为了日后配置的方便我们这里直接来下载第二个镜像。

下载 Kali 镜像

docker pull linuxkonsult/kali-metasploit

下载带有 msf 的 kali 镜像(镜像不大,我这边下载完不到 10 分钟)

创建 Kali 容器

docker run -i -t --name  msfkali linuxkonsult/kali-metasploit /bin/bash

用下载的 kali 镜像创建个名为 msfkali 的容器

进入容器查看基本信息

可以看到 kali 使用的是默认源,这里我要说一下,kali 2016.X 版本的 kali 使用这个默认官方源就好, 这个默认的官方源会自动选择速度最快的镜像站点来下载。

$ cat /etc/apt/sources.list
deb http://http.kali.org/kali kali-rolling main contrib non-free
deb-src http://http.kali.org/kali kali-rolling main contrib non-free

终端输入:

msfconsole

可以看到默认是带 metasploit 的,看来我们之前猜的没错 :

image

除此之外还带了 nmap、wget、git 等,但是这些工具还不够我们完成一次渗透测试

安装自己需要的工具

首先先刷新下更新缓存列表:

apt update

然后就可以直接安装工具了

apt install 工具名

这里你需要什么工具就安装什么工具,速度很快的,用什么就安装什么,没有什么比这个更 DIY 的了。举个例子:你想安装个 aircrack 来破解 WiFi 密码,那么就直接:

apt-get install aircrack-ng

总之,这个 Kali Docker 就是 Kali 的命令行,和正常是 Kali 一模一样,该怎么折腾就怎么折腾吧。

其他

Docker 搭建 sqli-labs 环境

docker pull acgpiano/sqli-labs
docker run --name sqli-labs -d -p 8080:80 acgpiano/sqli-labs
docker exec -it ID /bin/bash
  • MySQL 默认密码为 空
  • 浏览器访问:127.0.0.1:8080
  • 初始化数据库先

Docker 搭建 Portainer 图形管理工具

$ docker search portainer
$ docker pull portainer/portainer
$ docker run -d -p 9000:9000 --restart=always -v  /var/run/docker.sock:/var/run/docker.sock --name portainer portainer/portainer

Docker 搭建宝塔面板注意事项

centos7 镜像,做好端口映射
8080:88 888:888 8888:8888 8081:80
每次重启的时候得手动启动服务:

$ /etc/init.d/bt start
$ /etc/init.d/mysqld start
$ /etc/init.d/nginx start
$ /etc/init.d/php-fpm-54 start
$ /etc/init.d/php-fpm-73 start
  • 23
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值