泷羽sec-----容器技术之docker的简单学习

声明!
学习视频来自B站up主 泷羽sec 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页B站泷羽sec

Docker

在 Ubuntu 上生成 CentOS 7 容器,可以使用 Docker 这个流行的容器化工具。步骤如下:

1 安装Docker

确保安装了 Docker。如果没有安装,可以使用以下命令安装

sudo apt-get update				//这个命令让系统检查有没有新软件
sudo apt-get install docker.io	//安装 Docker
sudo docker version				//查看是否安装成功,显示docker的版本信息
								
vim /etc/apt/sources.list	//需要修改源为国内源,不然更新慢的很,源文件的文件
							//下面的三个,随便应用一个就行,#表示注释,行前有,表示不生效

#中科大Kali镜像源 
deb http://mirrors.ustc.edu.cn/kali kali-rolling main non-free non-free-firmware contrib
deb-src http://mirrors.ustc.edu.cn/kali kali-rolling main non-free non-free-firmware contrib

#阿里云Kali镜像源 
#deb http://mirrors.aliyun.com/kali kali-rolling main non-free non-free-firmware contrib
#deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free non-free-firmware contrib

#清华大学Kali镜像源 
#deb http://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free non-free-firmware
#deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main contrib non-free non-free-firmware

image

image

image

Ubuntu/Debian 系统换docker的源为国内源

  1. 首先备份/etc/docker/daemon.json文件(如果该文件不存在可以跳过此步骤)
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
  1. 创建或编辑/etc/docker/daemon.json文件
{
    "registry-mirrors": [
    	"https://5tqw56kt.mirror.aliyuncs.com",
    	"https://docker.hpcloud.cloud",
   		"https://docker.m.daocloud.io",
    	"https://docker.1panel.live",
    	"http://mirrors.ustc.edu.cn",     
    	"https://docker.chenby.cn",
    	"https://docker.ckyl.me",
   		"http://mirror.azure.cn",
    	"https://hub.rat.dev"
	]
}

  1. 让 Docker 守护进程重新加载配置文件
sudo systemctl daemon-reload
  1. 重启 Docker 服务
sudo systemctl restart docker

拉取 CentOS 7 的官方 Docker 镜像

sudo docker pull centos:7

image

查看当前已有的镜像及相关信息

docker images

image

运行一个基于 CentOS 7 镜像的容器

sudo docker run -it --name my_centos7 centos:7 /bin/bash

--name 【自己命名的容器名称】 表示自己把这个容器的名称命名为my_centos7

/bin/bash 在容器内启动,启动 Bash shell,以便你在容器中进行各种操作和命令执行
image

列出所有正在运行的容器

docker ps

image

开启或关闭某一容器

docker start/stop 【容器ID 或 容器名称】
	
//假如关闭容器后,使用docker ps查看不到容器名称或ID,恰好自己也忘了,可使用docker ps -a,会显示所有的容器信息,是所有

创建 Apache 容器后台运行

docker container run -d --rm -p 8080:80 httpd
  • docker container run:这是启动一个新容器的命令。
  • -d:表示以守护进程(detached)模式运行容器,即容器在后台运行,不会占用当前终端。
  • --rm:当容器停止运行时,自动删除容器。
  • -p 8080:80:将主机的 8080 端口映射到容器内的 80 端口。这样,外部可以通过访问主机的 8080 端口来访问容器内运行的80端口服务。

image

image

image

2 常用命令:

查看所有容器

docker container ls

image

进入特定容器

docker exec -it 899 /bin/bash
  • docker exec用于在运行中的容器中执行命令
  • -i表示保持标准输入流打开,允许你在容器内进行交互;
  • -t表示分配一个伪终端(pseudo-tty),使得交互更加类似于在实际终端中操作。
  • 889:是指容器ID,这里也可以是容器名称

image

这里需要注意,镜像ID与容器ID不是一回事的,

停止特定容器

docker container stop 【容器名称/ID】

image

挂载宿主机目录运行容器

docker container run -d --rm -p 8080:80 -v /home/kali/:/usr/local/apache2/htdocs/ httpd
  • -v /home/kali/:/usr/local/apache2/htdocs/:将主机上的/home/kali/目录挂载到容器内的/usr/local/apache2/htdocs/目录。这使得容器内的 httpd 服务器可以访问主机上的特定目录中的网页文件。
  • httpd:指定要运行的容器的镜像名称

为方便看清楚挂载,先在主机上的目录上创建一个1.html文件

image

进入容器中,发现刚进入系统的目录不是设置的,所以切换目录,即可看到显示了主机目录/home/kaili中的内容

image

侦听宿主机 80 端口运行容器

docker container run -d --rm --network host -v /home/user/webroot/:/usr/local/apache2/htdocs/ httpd
  • --network host:使用宿主机的网络模式,这意味着容器将直接使用宿主机的网络栈,与宿主机共享网络接口。这样可以避免端口映射的复杂性,并且容器可以直接使用宿主机的 IP 地址和端口进行通信。也就是没有上面的端口映射

image

image

这里看到直接访问主机的IP地址,就可以直接访问到httpd服务

image

查看特定容器的进程信息

docker top <container_name_or_id>	//容器名称或ID

image

Podman 是 Docker 的替代产品,无守护进程。命令一样

首先安装podman

image

image

然后配置源,这里可以选择复制docker的配置文件daemon.josn中的源,编辑podman的源文件/etc/containers/registries.conf,添加下面代码

[registries.search]
  registries = ['5tqw56kt.mirror.aliyuncs.com',
    "docker.hpcloud.cloud",
    "docker.m.daocloud.io",
    "docker.1panel.live",
    "mirrors.ustc.edu.cn",
    "docker.chenby.cn",
    "docker.ckyl.me",
    "mirror.azure.cn",
    "hub.rat.dev"
]

运行容器

sudo podman run -d --rm --network host httpd

image

创建空pod之前,还要安装catatonit,不然会无法创建

apt-get install catatonit

image

创建空 pod,这里的pod相当于docker中的容器

podman pod create --name wha
  • --name wha:指定 Pod 的名称为 wha

image

在 pod 中运行容器

podman run -d --pod wha httpd

在上面创建的pod名为wha中,启动httpd容器

首先确认docker的容器全部关闭

image

启动httpd容器

image

image

进入到创建的http容器中

image

在 pod 中运行可找东西的工具并互动

首先拉取镜像alpine/curl

podman pull alpine/curl

image

podman run -pod wha -it alpine/curl /bin/ash
  • “alpine/curl”:指定要使用的容器镜像,这里是一个基于 Alpine Linux 且带有 curl 工具的镜像。
  • “/bin/ash”: “/bin/ash” 或 “/bin/bash” 等 shell 命令,以便在容器内获得一个命令行界面进行操作。

大部分容器化过程都采用开放容器计划(OCI)标准,所以Podman和 Docker 可互操作。

对于这条命令,一直报错Error: parsing container port: invalid port number: strconv.Atoi: parsing "od": invalid syntax,试过很多方法,都不行,但是命令也没有错。略过

posted @ 2024-11-09 19:33  whitehe  阅读(16)  评论(0)    收藏  举报  来源