AqYoung

分享渗透知识与技巧

0%

Docker的简单使用指南

主要是从docker的安装到具体应用简单指南

Docker 简介

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

把Docker比喻做货物运输中的“集装箱”,那么我们都知道集装箱在运输过程中免去了重复装卸的过程,大大节省了人力物力的同时一辆运输工具可以重复使用不同的集装箱。那么对于Docker来说可以也是这样,免去重复安装卸载环境的过程,并且因为重复利用内核文件,大大节省了空间。

更多关于docker的信息 . . .


Docker 初始化

Docker CE 安装

https://developer.aliyun.com/mirror/

打开上面的链接 选择容器 选择docker-ce

Ubuntu 16.04/18.04(使用 apt-get 进行安装)

# step 1: 安装必要的一些系统工具
sudo apt-get update
sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common
# step 2: 安装GPG证书
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
# Step 3: 写入软件源信息
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
# Step 4: 更新并安装Docker-CE
sudo apt-get -y update
sudo apt-get -y install docker-ce

# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# apt-cache madison docker-ce
#   docker-ce | 17.03.1~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
#   docker-ce | 17.03.0~ce-0~ubuntu-xenial | https://mirrors.aliyun.com/docker-ce/linux/ubuntu xenial/stable amd64 Packages
# Step 2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.1~ce-0~ubuntu-xenial)
# sudo apt-get -y install docker-ce=[VERSION]

CentOS 7(使用 yum 进行安装)

# step 1: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安装Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 开启Docker服务
sudo service docker start

# 注意:
# 官方软件源默认启用了最新的软件,您可以通过编辑软件源的方式获取各个版本的软件包。例如官方并没有将测试版本的软件源置为可用,您可以通过以下方式开启。同理可以开启各种测试版本等。
# vim /etc/yum.repos.d/docker-ee.repo
#   将[docker-ce-test]下方的enabled=0修改为enabled=1
#
# 安装指定版本的Docker-CE:
# Step 1: 查找Docker-CE的版本:
# yum list docker-ce.x86_64 --showduplicates | sort -r
#   Loading mirror speeds from cached hostfile
#   Loaded plugins: branch, fastestmirror, langpacks
#   docker-ce.x86_6417.03.1.ce-1.el7.centosdocker-ce-stable
#   docker-ce.x86_6417.03.1.ce-1.el7.centos@docker-ce-stable
#   docker-ce.x86_6417.03.0.ce-1.el7.centosdocker-ce-stable
#   Available Packages
# Step2: 安装指定版本的Docker-CE: (VERSION例如上面的17.03.0.ce.1-1.el7.centos)
# sudo yum -y install docker-ce-[VERSION]

安装校验

root@iZbp12adskpuoxodbkqzjfZ:$ docker version
Client:
 Version:  17.03.0-ce
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:Tue Feb 28 07:52:04 2017
 OS/Arch:  linux/amd64

Server:
 Version:  17.03.0-ce
 API version:  1.26 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   3a232c8
 Built:Tue Feb 28 07:52:04 2017
 OS/Arch:  linux/amd64
 Experimental: false

配置镜像加速器

完成上面的步骤之后。选择右上角的控制台 在搜索框输入“容器镜像服务”找到镜像加速服务即可。

针对Docker客户端版本大于 1.10.0 的用户

您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器

# Ubuntu\Centos
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://o7ch5p59.mirror.aliyuncs.com"]    #阿里镜像
  "registry-mirrors": ["http://hub-mirror.c.163.com"]    #网易镜像
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker 命令

docker官方文档:https://docs.docker.com/install/

docker教程|菜鸟教程:https://www.runoob.com/docker/docker-command-manual.html

服务相关命令

# 启动docker服务:
systemctl start docker

# 停止docker服务:
systemctl stop docker

# 重启docker服务:
systemctl restart docker

# 查看docker状态:
systemctl status docker

# 设置开机启动docker服务:
systemctl enable docker

镜像相关命令

#查看镜像:查看本地所有的镜像
docker images 
docker images -q #查看所用镜像的id

#搜索镜像:从网络中查找需要的镜像
docker search 镜像名称

#拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为名称版本号,如果版本号不指定则是最新的版本。
如果不知道镜像版本,可以去docker hub 搜索对应镜像查看。
docker pull 镜像名称

#删除镜像:删除本地镜像
docker rmi 镜像id #剧除指定本地镜像
docken rmi 'docker images -q' #删除所有本地镜像

docker hub

阿里云容器镜像服务

容器相关命令1

#查看容器
docker ps #查看正在运行的容器
docker ps -a #查看所有容器

#创建并启动容器
docker run 参数

-i:保持容器运行。通常与 -t 同时使用。加入it这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭。

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用。

-d:以守护(后台)模式运行容器。创建一个容器在后台运行,需要使用docker exec进入容器。退出后,容器不会关闭。

-it 创建的容器一般称为交互式容器,-id 创建的容器一般称为守护式容器

–name:为创建的容器命名。

容器相关命令2

# 进入容器
docker exec 参数 #退出容器,容器不会关闭

# 停止容器
docker stop 容器名称

# 启动容器
docker start 容器名称

# 删除容器:如果容器是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称 

#docker rm $(docker ps -aq)  删除所有容器

# 查看容器信息
docker inspect 容器名称

Docker容器数据卷

简单理解:容器器数据卷是为了,解决在宿主机和容器之间的文件共享,或者是容器和容器之间文件共享,使用数据卷的方式可以快速的实现这个需求。

配置数据卷

#创建启动容器时,使用 -v参数设置数据卷
docker run -v 宿主机目录(文件):容器内目录(文件)

注意事项:

1.目录必须是绝对路径

2.如果目录不存在,会自动创建

3.可以挂载多个数据卷

## 配置数据卷容器

# 1.创建启动c3数据卷容器,使用-v参数 设置数据卷
docker run -it --name=c3 -v/volume centos:7 /bin/bash

# 2.创建启动c1、c2容器,使用 --volumes-from 参数设置数据卷
docker run -it --name=cl --volumes-from c3 centos:7/bin/bash 
docker run -it --name=c2 --volumes-from c3 centos:7/bin/bash

Docker Dockerfile

要使用Dockerfile来构建镜像文本文件,需要简单了解docker镜像加载原理”Docker的镜像实际上由一层一层的文件系统组成”下面的图片就很形象的表示出来:

容器转为镜像

docker commit 容器id镜像名称:版本号
docker save -o 压缩文件名称镜像名称:版本号
docker load -i 压缩文件名称

dockerfile

参考:https://www.runoob.com/docker/docker-dockerfile.html


Docker 实例

Docker安装 Kali

1、查看可用kali linux版本

2、拉取指定版本的kali

docker pull kalilinux/kali-rolling:latest

3、查看本地镜像

docker images

4、运行容器

# -d表示以后台运行,指定name为mykali
docker run -id --name mykali kalilinux/kali-rolling:latest

# exec进入kali容器
docker exec -it mykali /bin/bash

安装完这个kali官方镜像,里面啥也没有,你可以参考https://nightmorning.site/wordpress/?p=364这篇,或者直接pull一个别人已经做好的镜像。另外Centos和Ubuntu的安装方法和Kali大同小异,这里就不再赘述。

Docker 安装MySql

1、search mysql 镜像

docker search mysql

2、拉取最新版本的mysql

docker pull mysql

3、创建容器、设置端口映射、目录映射

# 创建/root/mysql用来存储mysql数据信息
mkdir ~/mysql && cd ~/mysql

docker run -id \
-p 3308:3306 \
--name=mymysql \
-v $PWD/conf:/etc/mysql/conf.d \
-v $PWD/log:/logs \
-v $PWD/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=toor \
mysql:latest

参数说明:

  • -p 3308:3306: 容器的3306端口映射到宿主机的3308端口。
  • -v $PWD/conf:/etc/mysql/conf.d:将宿主机的 当前目录/conf挂载到容器的/etc/mysql/conf.d 配置目录
  • -v $PWD/log:/logs:日志目录
  • -v $PWD/data:/var/lib/mysql:数据目录
  • -e MYSQL_ROOT_PASSWORD=toor:初始化root密码为toor

创建完成之后,我们用Navicat去连接宿主机的3308端口试一下。

#如果出现“2059 - authentication plugin 'caching_sha2_password' ..."可以尝试下面这个更改验证插件。
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'toor';

连接成功了

Docker 安装Tomcat

1、search Tomcat 镜像

docker search tomcat

2、拉取最新版本的Tomcat

docker pull Tomcat

3、创建容器、设置端口映射、目录映射

# 创建/root/tomcat用来存储tomcat数据信息
mkdir ~/tomcat && cd ~/tomcat

docker run -id --name mytomcat \
-p 8080:8080 \
-v $PWD:/usr/local/tomcat/webapps \
tomcat:latest

4、测试

如果你访问时出现”HTTP Status 404 – 未找到”可以参考这篇:https://blog.csdn.net/qq_32565267/article/details/104460212

Docker 安装Nginx

1、search Nginx 镜像

docker search Nginx

2、拉取最新版本的Nginx

docker pull Nginx

3、创建容器、设置端口映射、目录映射

# 创建~/nginx用来存储nginx数据信息
mkdir -p ~/nginx/conf && cd ~/nginx

docker run -id --name mynginx \
-p 80:80 \
-v $PWD/conf/nginx.conf:/etc/nginx/mginx.conf \
-v $PWD/logs:/var/log/nginx \
-v $PWD/html:/usr/share/nginx/html \
nginx:latest

4、测试:

在/nginx/html/新建一个index.html的文件

tee ~/nginx/html/index.html <<-'EOF'
<html>
<head><title>Mydocker</title></head>
<body>
<center><h1>Docker Nginx test !!! </h1></center>
<hr><center>nginx/1.17.9</center>
</body>
</html>
EOF

尾巴:

docker一出来就很火,但是网上的教程鱼龙混杂,所以整理了一下docker的简单使用使用指南,初心是为了方便自己使用,因为在渗透过程中难免会出现,搭建各种不同版本的服务来测试。用docker可以大大的提高效率,简直不要太方便了。


声明:

  • 笔者初衷用于分享与交流网络知识,若读者因此作出任何危害网络安全行为后果自负,与作者无关!

  • 本文属于@ayoung博客,未经许可禁止转载: