Jay jay
文章28
标签2
分类0
docker简单使用学习

docker简单使用学习

docker简介

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

docker和虚拟机的区别

启动时间:docker秒级,虚拟机分钟级
轻量级:docker镜像大小以M为单位虚拟机以G为单位,容器占用资源小比虚拟机部署快
性能:docker共享宿主机内核,系统级虚拟化,占用资源少,没有hypervisor层开销,性能基本接近物理机,虚拟机需要hypervisor层支持,虚拟化一些设备,具有完整的os,虚拟化开销大,因而降低性能,没有容器性能好
安全性:docker共享宿主机内核只是进程级别的隔离,因此隔离性和稳定性不如虚拟机,docker具有一定权限访问宿主机内核,存在安全隐患
使用要求:vm基于硬件的完全虚拟化,需要硬件cpu虚拟化技术支持,docker共享宿主机内核,可运行在主流的linux发行版本,不用考虑cpu是否支持虚拟化技术。

docker原理

将下载的docker镜像创建并部署到docker容器(是docker的执行单元)中启动即可。

docker安装并部署vulstudy靶场

在deepin中执行sudo apt-get update和sudo apt-get install docker.io
在安装docker-compose

sudo wget -c -t 0 https://github.com/docker/compose/releases/download/1.26.0/docker-compose-`uname -s`-`uname -m` -O /usr/local/bin/docker-compose

并赋予可执行权限
sudo chmod a+rx /usr/local/bin/docker-compose
然后测试是否安装成功。
docker-compose -v

配置拉取镜像源
修改etc/docker/daemon.json 没有就创建然后添加国内相关源

从vulstudy的github仓库下载镜像然后使用命令部署

首先需要启动docker
systemctl start docker

如果没有build就先进入目录build一下
docker-compose build

1.单独运行一个漏洞平台
cd到要运行的漏洞平台下运行以下命令
cd vulstudy/DVWA
docker-compose up -d #启动容器
docker-compose stop #停止容器

2.同时运行所有漏洞平台
在项目根目录下运行以下命令
cd vulstudy
docker-compose up -d #启动容器
docker-compose stop #停止容器

为什么docker-compose build是可选的?
docker-compose up -d运行后,会自动查找当前目录下的配置文件。如果配置文件中包含的环境均已经存在,则不会再次编译;如果配置文件中包含的环境不存在,则会自动进行编译。所以,其实docker-compose up -d命令是包含了docker-compose build的。如果更新了配置文件,你可以手工执行docker-compose build来重新编译靶场环境。

查看启动环境
docker-compose ps -a

在环境目录里输入下面停止运行
docker-compose down

进入docker镜像的命令
首先查看id
docker ps -a
进入镜像
docker exec -it id bash
源码在app下

如果有时命令执行失败则需要切换到root命令下执行。

docker的其他基础命令

搜索镜像docker search 关键字
下载镜像docker pull 镜像名
查看已下载的镜像列表docker image ls
创建并使用容器docker run -it --name 容器名 镜像名/镜像id /bin/bash
查看当前容器docker ps -a
查看统计信息docker stats
启动容器docker start 容器名/容器id
重启容器docker restart 容器名/容器id
终止容器或所有容器docker stop 容器名/容器id|$(docker ps -aq)
连接容器docker exec -it 容器名/容器id /bin/bash
删除容器或所有容器docker rm 容器名/容器id|$(docker ps -aq)
删除镜像或所有镜像docker rmi 镜像名/容器id|$(docker images -q)
端口映射:
部署一个容器并将80端口映射到宿主机的8000端口上

# 可以使用--name自定义部署的容器名
docker run -d -p 8000:80 --name 容器名 镜像名

# 也可以直接通过镜像部署
docker run -d -p 8000:80 镜像名

构建新的镜像

docker commit -a "提交的镜像作者" -m "提交时的说明文字" 容器的ID 要创建的新的镜像
docker commit -a "jay" -m "wordpress_phpmyadmin" d64655e87ccc wordpress_phpmyadmin:v1

保存离线镜像

docker save -o 镜像文件名.tar 要保持的镜像
docker save -o wordpress_phpmyadmin.tar wordpress_phpmyadmin:latest

导入离线镜像

docker load --input 镜像文件名.tar
docker load --input wordpress_phpmyadmin.tar
本文作者:Jay jay
本文链接:https://yyj-xx.github.io/2023/04/13/docker%E7%AE%80%E5%8D%95%E4%BD%BF%E7%94%A8%E5%AD%A6%E4%B9%A0/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可