docker
docker
1.安装
官网镜像仓库为:hub.docker.com
我使用的系统为kail2023
相关工具链接 :
当前时间:2024/12/19
注意:
- Red Hat 系列,eg:CentOS 使用
yum
安装软件包# 安装依赖 yum -y install gcc yum -y install gcc-c++ # 安装软件包 yum install -y yum-utils # 设置 stable 镜像仓库(使用国内阿里云仓库链接下载) yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 更新 yum 软件包索引 yum makecache fast # 安装 Docker yum -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin # 查看版本 docker --version # 启动/查看状态/开机自启动 systemctl start/status/enable docker - Debian 系列,eg:Ubuntu,kail 使用
apt
来安装软件包
# #####################################安装docker##################################### # 更新apt源,即注释掉原来的源,换新的源 vim /etc/apt/sources.list #阿里云 deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib # 保存退出 :wq # 更新软件列表 apt-get update apt-get upgrade apt-get dist-upgrade apt-get clean apt-get autoclean # #如果上面遇到kail系统的GPG密钥过期从而导致无法验证镜像源的签名,通过下列方式来修复 # 清楚已过期的密钥 sudo apt-key del xx # 下载并添加 Kali Linux 最新的 GPG 密钥 wget -q -O - https://archive.kali.org/archive-key.asc | sudo apt-key add - # 更新软件包列表 sudo apt-get update # 安装docker 优先用: apt-get install docker.io -y apt-get install docker-ce # 查看docker版本 docker --version # ##################################### 安装docker-compose ##################################### # 将docker-compose文件拖动到/usr/local/bin/【docker-compose文件链接我有分享】 cd /usr/local/bin # 加执行权限 chmod +x /usr/local/bin/docker-compose # 查看docker-compose版本 docker-compose -v # 更新docker源 cd /etc/docker # 将daemon文件拖动到该目录 # 然后执行以下两条命令 systemctl daemon-reload systemctl restart docker systemctl enable docker # 安装nginx docker run -d -p 80:80 nginx
现在,简单用docker部署一个站点。
简单示例:
docker container ls docker run -d -p 80:80 nginx:1.16 docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker run -d --link mysql:mysql -p 86:80 wordpress:5.6
访问本机ip:86
,出现以下界面
""" 刨析命令 docker run --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 docker run 运行一个新容器 --name mysql 为容器指定名称为mysql -e MYSQL_ROOT_PASSWORD=123456 设置环境变量 为 MySQL 数据库的 root 用户 设置密码为 123456 -d 让容器在后台运行 如果没有 -d 参数,容器会在前台运行并显示日志输出。 mysql:5.7 指定了容器使用的镜像是 mysql,并且指定了版本为 5.7。优先从本地拉取,没有就从Docker Hub 拉取该镜像。 """ # 查看所有的docker docker ps -a
2.使用
2.1 镜像常用命令
# 搜索官方仓库【目前国内环境无法使用】 docker search nginx # 列出本地所有容器(包括运行中和已停止的容器) docker ps -a # 显示本地运行中的容器 docker ps # 列出本地镜像 """ 镜像库 标签 ID 创建时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE nginx 1.16 dfcfd8e9a5d3 4 years ago 127MB redis latest b5e874b32a79 2 months ago 117MB """ docker images # 拉取镜像 docker pull eg: 拉取redis:docker pull redis # 删除镜像,有两种方式,分别是: """ # 注意:删除的前提是容器得停止,不能在运行中,用docker ps -a 来检查 docker stop ID docker rm ID 方式一: docker rmi 镜像库:标签 eg:删除nginx 1.16版本 docker rmi nginx:1.16 方式二: docker rmi ID eg:删除redis最新版 docker rmi b5e874b32a79 """ # 导出镜像 docker save 镜像名称:版本 -o docker.xx.tar.gz eg:docker save tomcat:latest -o docker.tomcat.tar.gz # 加载tar.gz镜像包 docker load -i xx.tar.gz
2.2 容器常用命令
# 停止容器,有两种方式 docker stop ID/name # 启动容器,有两种方式 docker start ID/name # 删除容器【注意:正在运行的容器无法删除,除非强制删除】 docker rm ID/name # 强制删除 docker rm -f ID/name # 启动新容器,有很多的参数 """ -d 后台运行 -p 做端口映射 --name 指定容器的名字 --link 关联另外一个容器 -e 设置容器的一些属性 -it 给运行起来的容器分配一个终端 --restart=always 开机自启动 """ docker run # 删除所有容器【不是所有镜像】 docker rm -f `docker ps -a -q` # 查看容器内的进程 docker top ID/name # 查看容器的资源占用情况 docker stats ID # 与容器进行交互 """ 分为内部和外部: 内部: docker exec -it ecc3141415b1 ls 外部: docker exec -it ecc3141415b1 /bin/bash """ # 列出所有容器的名称和对应的 IP 地址【docker容器类似于一个微型虚拟机,每个容器都有自己的ip地址】 docker inspect -f '{{.Name}} => {{.NetworkSettings.IPAddress }}' $(docker ps -aq) # curl -i ip,可以看到http响应数据 curl -i ip # 显示容器网络连接、监听端口等信息 netstat -lntup # 重启docker服务【注意:重启docker服务会自动关闭所有的容器】 systemctl restart docker # 进入容器内部 docker exec -it 容器id /bin/bash # 拉取镜像出现了空间不够的问题,就先删除所有容器,然后删除所有的镜像 # 删除所有容器 docker rm -f `docker ps -aq` # 删除所有镜像 docker rmi `docker images -q`
3. 制作docker并上传
下面演示拉取debian系统,并在里面封装了nginx,然后打包上传。
# 拉取镜像 docker pull debian:latest # 查看镜像ID docker images # 运行一个容器 docker run -it --name john_nginx -p 85:80 镜像ID # 现在以及进入到容器了 # 安装nginx apt update # 更新apt缓存 apt install nginx -y # 安装nginx nginx -v # 查看nginx版本 # 打包之前做好先停止容器 exit docker stop john_nginx # 如果停止了,这行命令就不用执行了 # john_nginx表示容器名称 jyppxn表示用户名 debian表示上传到docker后镜像的名称 v1 表示镜像的标签 docker commit john_nginx jyppxn/debian:v1 # 上传到官方仓库 【接下来输入用户名和密码就好了】 docker login # 登录官方仓库 # 推送到仓库 docker push jyppxn/debian:v1
4. docker-compose
docker-compose是批量管理docker容器的工具
4.1 常用指令
# centos7 安装docker-compose yum install epel-release.noarch -y yum install docker-compose -y # kail 安装docker-compose apt install docker-compose -y # 查看docker-compose版本 docker-compose -v
配置docker-compose.yml
文件,以此来控制多个容器,下面是安装mysql以及wordpress的一个案例
# 配置之前,关闭掉所有的docker容器 docker stop `docker ps -a -q` # 创建一个wordpress文件夹,里面创建一个docker-compose.yml名字的文件 mkdir wordpress vim docker-compose.yml # 添加以下内容 version: '3' # docker-compose.yml的文件格式版本 services: db: image: mysql:5.7 # 使用的镜像,MySQL 5.7版本 restart: always # 开机自启动 environment: MYSQL_ROOT_PASSWORD: 123456 MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: 123456 # 和WORDPRESS_DB_PASSWORD值要对应上 wordpress: depends_on: - db image: wordpress:5.6 ports: - "83:80" # 端口映射 restart: always environment: WORDPRESS_DB_HOST: db # WordPress应用连接的MySQL数据库的主机名(在这个配置中是db容器的名称) WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: 123456 # 创建并启动 docker-compose up -d # 访问 直接访问ip:83
docker-compose xx 这些命令都是针对docker-compose.yml
这个配置文件的相关容器来操作的
# 停止并删除所有的容器、网络、卷和镜像 docker-compose down # 重新启动所有容器 docker-compose restart # 停止服务,但不会删除容器 docker-compose stop # 启动 docker-compose.yml 中定义的所有服务容器。 docker-compose start
其实,可以尝试安装一下zabbix
这是跟监控挂钩的,支持docker安装
5.使用docker部署vulhub靶场
我的环境:kail2023
注意:
-
由于使用docker来部署靶场,那就必须先安装 docker,docker-compose,上面有写安装步骤,这里就不重复写了
-
其次,安装前建议停止正在 运行的容器
docker rm -f `docker ps -a -q`
现在,开始部署vulhub,官方地址为:https://vulhub.org/
步骤一:安装vulhub
接下来做以下动作
cd /opt 将压缩包从宿主机拖动到当前目录 unzip cd vulhub-master cd nginx cd nginx_parsing_vulnerability/
此时,继续进行以下动作:
步骤二:启动容器
# 此时,就开始拉取镜像,然后在本地运行容器 docker-compose up -d
步骤三:复现漏洞
开始复现漏洞,访问:http://your-ip/uploadfiles/nginx.png
注意:your-ip换成虚拟机的ip ,效果如下:
此时,看起来是张图片,但是再访问:http://your-ip/uploadfiles/nginx.png/.php
注意:your-ip换成虚拟机的ip ,就可看到效果。
如果下载docker被中断,类似dpkg 被中断,您必须手工运行 ‘sudo dpkg --configure -a’ 解决此问题。
解决方案:那就执行以下命令
sudo dpkg --configure -a 重新下载docker apt-get install docker.io -y
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)