当前位置:   article > 正文

【网络安全---docker】kali上安装docker,CentOS上安装docker,docker命令详解_kali安装docker

kali安装docker

分享一个非常详细的网络安全笔记,是我学习网安过程中用心写的,可以点开以下链接获取:

超详细的网络安全笔记

二,文件包含漏洞详解

一,docker概念理解

1-1 docker是什么?

docker是一个软件,是一个运行与linux和windows上的软件,用于创建、管理和编排容器;docker平台就是一个软件集装箱化平台,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,也可以实现虚拟化,并且容器之间不会有任何接口。

我们一般安装软件的步骤是 下载压缩包----解压----安装-----运行,有时候我们觉得繁琐,效率不高,有没有一种技术可以快速安装运行软件呢,所以docker技术给我们提供了这样的便利

1-2 什么是镜像?

docker 远程镜像仓库网址:

https://hub.docker.com/icon-default.png?t=N7T8https://hub.docker.com/

镜像就是别人安装好软件,我们可以直接从远程镜像仓库下载,运行,免去了解压流程;

下载到本地的叫本地镜像(images),下载好的镜像运行以后就叫容器(container);

或者远程镜像可以直接一个命令下载直接运行成容器;

1-3 什么是容器

镜像运行之后就叫容器

1-4 docker客户端和服务端

我们安装docker时客户端和服务端一起安装了,启动客户端以后可以用docker命令操作服务端从远程镜像仓库下载镜像,然后运行

二,docker安装

1-1 CentOS中安装docker

  1. # centos7上面用yum安装
  2. yum install docker -y
  3. #启动docker
  4. systemctl start docker
  5. #设置开机自启
  6. systemctl enable docker

1-2 Kali上安装docker

  1. #添加docker的gpg密钥,签名用的
  2. curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -
  3. #添加docker的apt源
  4. echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list
  5. #更新apt缓存
  6. apt update
  7. #安装docker
  8. sudo apt-get install docker docker-compose -y
  9. sudo apt-get install docker.io
  10. #安装完成之后,docker就自动启动了
  11. systemctl status docker  
  12. #查看docker版本
  13. docker -v  

我在kali2022主机上进行演示安装

1,添加docker的gpc秘钥,签名用的

curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/gpg | sudo apt-key add -

Warning 不用管,看到OK就说明成功了

2,添加docker的apt源

echo 'deb https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian/ buster stable' | sudo tee /etc/apt/sources.list.d/docker.list

3,更新apt缓存

apt update

4,安装docker 和 docker-compose

注:root用户不用加sudo

用apt-get install docker.io 安装 docker

  1. ## 安装docker
  2. sudo apt-get install docker.io
  3. ## 安装docker-compose
  4. apt-get install docker-compose -y

用 apt install docker-compose

5,查看版本

  1. docker -v
  2. docker-compose -v

三,docker 镜像 常用命令

3-1 docker run 命令

用于从远程仓库下载镜像,并直接运行(一个命令就可以下载,运行)

  1. -d  #放后台运行
  2. -p 端口映射 #例子: -p 宿主机端口:容器端口
  3. --name 指定容器的名字 # docker run -it --name jaden 镜像id或者名称
  4. --link 关联另一个容器 # 了解即可
  5. -e MYSQL_ROOT_PASSWORD #设置容器的一些属性,了解一下即可
  6. -it #是给运行起来的这个容器分配一个终端,就可以进入到容器内部操作了

3-1-1 案例:下载Nginx并运行

-d  ## 后台运行

-p ## 指定端口映射

因为每个镜像他都是有自己的端口的比如nginx镜像默认是80端口,这个端口跟本机端口是两回事,我们需要用本机的端口进行映射,比如把本机80端口映射到Nginx的80端口;

docker run -d -p 80:80 nginx

Nginx已经下载好,并运行起来了

浏览器访问192.168.31.20:80

3-1-2 下载指定版本的ngixn

注意:本机的80端口映射给了上一个下载的Nginx,这个1.16版本的话本机81端口映射给镜像的80端口

docker run -d -p 81:80 nginx:1.16

Nginx1.16 已经下载好,并运行起来了

浏览器访问192.168.31.20:81

大家有没有发现下载的时候有一句提示

Unable to find image "nginx1.16" locally

是因为docker run命令下载镜像的时候先判断这个镜像在本地存不存在(有没有已经下载好),如果没有则从远程仓库下载,如果本地有,则直接运行本地下载好的镜像

3-2 docker search 命令

用于搜索镜像,有时候想下载镜像,但想看看有有哪些镜像,就可以用这个命令去查看

  1. docker search nginx
  2. docker search httpd
  3. docker search mysql

下载的时候就可以下载自己想下载的镜像了,比如

  1. docker run -d -p 3306:3306 mariadb
  2. # 不指定版本号默认下载最新的

3-3 docker images 命令

查看本地镜像列表(下载了哪些镜像)

因为我就下了两个,所以就显示两个

有个 IMAGE ID 就是这个镜像的ID值

3-4 docker pull 命令

(docker run 命令时下载直接运行镜像,而我们只想下载,不想运行怎么办?)

docker pull 作用把远程镜像拉取到本地

docker pull httpd

如果不指定版本号默认下载最新版本

docker imges 查看发现已经下载到本地了

3-5 docker push 命令

#上传镜像,推送镜像,推到官方仓库,推送不是那么简单的,不然早就满了,需要在本地登录一下官方账号才能推,后面再演示

感兴趣自己了解一下吧,不多讲了,docker 镜像仓库网址

https://hub.docker.com/

3-6 docker rmi 命令

remoove iamge 删除本地镜像(注意已经运行的镜像不能删除,比如我删除已经运行的nginx)

docker rmi nginx:1.16

报错了说这个镜像不能删除,因为容器42ccd25441d9 是 被镜像 dfcfd8e9a5d3 运行起来的 ;

镜像 dfcfd8e9a5d3 指的是 nginx:16(docker images 可以查看镜像ID) ,他运行起来以后叫容器 分配容器ID;

注意:镜像是镜像,容器是容器,不是说镜像运行起来以后身份变了成了容器;而是镜像运行起来以后镜像还在,可以说产生了一个容器,所以说一个镜像可以运行多个独立的容器

删除镜像可以用名字,也可以用他的IMAGE ID

  1. docker rmi httpd
  2. docker rmi 7860e7628717

可以同时删除多个镜像:

格式就是如下,通过空格隔开可以删除多个容器

docker rmi tomcat:latest tomcat:jre17-temurin-jammy httpd mysql

3-7 docker save

导出镜像,如果我们想要把镜像导出,放到另一个主机里导入然后运行,比如:

 docker save nginx:1.16 -o docker.nginx1.16.tar.gz

3-8 docker load

导入镜像,可以导入导出的镜像,

注:因为我nginx:1.16 一直运行这而且已经在本地存在,所以我得删除才能导入,要不然呢或冲突的

已经删除了nginx:1.16 现在可以导入刚才导出的了(会自动解压的)

docker load -i docker.nginx1.16.tar.gz

四,docker 容器 常用命令

4-1 docker run

run 作用不仅是从远程仓库下载并运行镜像,我们说过他会先判断这个镜像在不在本地,不在本地的话再从远程仓库下载运行,所以本地镜像可以也用run 命令运行

比如说运行刚导入的nginx:16

docker run -d -p  83:80 nginx:1.16

已经运行起来了,可以访问看看

4-2 docker ps 

查看已经运行的容器列表

docker ps =========== docker container ls

-a   ## all 的意思,显示所有容器(运行起来以后停掉的也算容器) 

CONTAINER ID : 容器ID,删除容器都是通过ID或者NAMES删除的;

IMAGES:镜像,就是从哪个镜像启动的

CREATED:什么时候创建的

STATUS:状态,up 表示在运行,Exited表示停止运行了,上面Nginx1.16有两个说明一个镜像可以多次运行称为多个容器;

NAMES:表示镜像列表,运行的时候可以--name参数起名字,如果不起名字就随机分配一个名字;我们没有起名字所以NAMES都是随机的 

-q  ## 只显示容器的ID

docker ps -a  ## 列出所有容器的详细信息(已经运行的+运行完停掉的

docker ps -q  ## 只列出容器的ID号

docker ps -a -q ## 列出所容器的ID号

4-3 docker stop

停止运行的容器(只能根据container ID 或者 NAMES 删除

docker stop c0a4f676add2 


 表示停止成功了

停止所有在运行的容器

docker stop `docker ps -q`

 4-4 docker start

启动容器(根据容器的ID或者名字)

先 docker ps -a  查看一下,哪些容器没启动,全都没启动,因为上一步我用 docker stop `docker ps -q`停掉了所有容器

docker start e932acc39242

docker ps 查看一下有没有启动成功,发现已经启动了,就在 15秒之前

 4-5 docker restar

重启容器(根据容器的ID或者名字

docker restart e932acc39242

4-6 docker rm

删除容器,只能删除已经停掉的容器(docker rm -f 强制删除也能删除在运行的容器)

先 docker ps -a 查看所有容器,根据ID号(或者NAMES)删除没在运行的容器

docker rm 容器id或者容器名字,同时删除多个,就空格隔开,处于up状态是不能直接删除的,强制删除是可以删除up状态的容器的 

 docker rm -f `docker ps -a -q` #删除所有容器,-q是只显示容器id,反引号中的指令优先执行

4-7 docker top

查看容器内的进程(根据容器的ID或者名字

4-8 docker stats

查看容器的资源占用情况

docker stats e932acc39242

 4-9 docker exec 

进入容器内部

 docker exec -it 容器id或者容器名字

 # 直接交互指令:docker exec -it 76738703b7b2 ls # 执行ls指令
 # 进入终端:docker exec -it 76738703b7b2 /bin/bash或者/bin/sh #/bin/bash打开一个终端窗口,exit指令退出终端,但是docker容器内容一般不会安装额外的软件,所以导致大量的指令是用不了的,比如ifconfig、ps、ip addr等 

五, docker-compose 

5-1 docker-compose 配置文件

一般项目中一个容器还不够,则需要多个容器,难道就一个个下载,运行吗?这样还是麻烦,有没有一种办法,同时启动多个容器呢?那就是通过docker-compose 技术可以做到同时启动多个容器

  1. yum install epel-release.noarch -y
  2. yum install docker-compose -y
  3. #kali安装docker-compose
  4. apt install docker-compose -y
  5. # 查看版本
  6. docker-compose -v

 这里给大家补充个点 systemctl restart docker 重启docker服务会自动关闭所有的容器。

  1. #启动容器的时候,如果加上了--restart=always,那么重启服务之后,这个容器会自动启动
  2. docker run -it -d --restart=always nginx:1.16  # 实现了开机自启动的效果

想要启动多个容器,则需要配置一个docker-compose.yml文件

# 为了避免端口冲突,我们可以先关闭所有docker容器

  1. docker stop `docker ps -a -q`
  2. # 为了演示方便,我们可以先创建一个wordpress文件夹,进入到里面创建一个docker-compose.yml名字的文件
  3. mkdir wordpress
  4. cd wordpress/
  5. touch docker-compose.yml
  6. vim docker-compose.yml

# 将如下内容拷贝到文件中保存退出,注意拷贝的时候,把里面我标记的注释去掉。
# 注意,下面这个文件内容是严格要求格式的,多一个空格都不行,通过缩进来表示等级关系,下面的这种配置语法叫做yaml语法

  1. version: '3'  # 版本随便起名字
  2. services: ## 固定格式
  3.   db:  #容器名称,可以随便指定名字
  4.     image: mysql:5.7
  5.     restart: always  # 开机自启动的意思
  6.     environment: ## 一些配置参数
  7.       MYSQL_ROOT_PASSWORD: 123456
  8.       MYSQL_DATABASE: wordpress
  9.       MYSQL_USER: wordpress
  10.       MYSQL_PASSWORD: 123456  # 和下面的WORDPRESS_DB_PASSWORD值要对应上
  11.   wordpress:
  12.     depends_on: ## 对db容器关联,因为wordpress需要数据库
  13.       - db
  14.     image: wordpress:5.6  
  15.     ports:
  16.       - "83:80"  # 端口映射
  17.     restart: always
  18.     environment:
  19.       WORDPRESS_DB_HOST: db
  20.       WORDPRESS_DB_USER: wordpress
  21.       WORDPRESS_DB_PASSWORD: 123456

5-2 docker-compose 常用命令

  1. #创建并启动
  2. docker-compose up -d # 启动之后就可以通过浏览器访问了
  3. #停止并删除
  4. docker-compose down
  5. #重启
  6. docker-compose restart
  7. #停止
  8. docker-compose stop
  9. #启动
  10. docker-compose start

有了docker-compose.yml配置文件,可以使用docker-compose up -d 指令按照配置文件里的容器和配置项去下载,执行相应的容器

 注意:执行 docker-compose up -d 的时候必须在这个配置文件路径下运行,如果别的路径则不能识别出来,

 创建一个wd文件夹,进入以后vim docker-compose.yml(这个文件夹不存在的,会自动创建)

把配置内容复制粘贴到里面

 查看配置好的内容

然后就在有docker-compose.yml目录下运行即可 

yml语法格式校验很严格的,我的估计格式有问题,所以报错了,大家可以自行百度一下其格式;

配置文件格式无误后,可以按照配置文件下载相应镜像并运行起来了,项目中通过这个方法,可以很便捷的启动我们需要的容器了; 

 关于docker常见操作就这些,如果遇到问题欢迎留言,或者技术交流

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/81856
推荐阅读
相关标签
  

闽ICP备14008679号