docker入门学习
前言
为了搭建Vulhub漏洞靶场环境,首先就要用到docker,便于快速搭建,因此今天来学习一下docker。
注:本文所记内容仅用于个人学习,严禁利用文中技术进行任何非法行为,所造成一切严重后果自负!
一、简介
1.docker是什么
-
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 AUFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
-
通俗来说,Docker 就像是一个“容器工厂”,它能帮你把应用程序和它们需要的一切(比如运行的环境和依赖的库)打包在一个“容器”里。Docker让你的软件“打包自带”环境和依赖,免受外环境差异的影响,使其无论放到哪儿都能顺利运行。
2.docker特点及应用
1)简化配置
-
Docker在降低额外开销的情况下提供了与虚拟机同样的功能。它能让你将运行环境和配置放在代码中然后部署,同一个Docker的配置可以在不同的环境中使用,这样就降低了硬件要求和应用环境之间耦合度。
-
简单的来说,容器镜像打包完成后,它就是个独立的个体了,放到任何平台都能运行,而无需针对各个平台去独立配置。
2)隔离应用
- 很多情况下,我们需要在一台服务器上运行多个不同的应用,这就必须要考虑各个应用之间的兼容性问题。
- 针对上述问题,同一台机器上,可以同时运行多个个Docker web应用,托管到不同的Web服务器(Ngnix、Tomcat),应用相互隔离,不用担心冲突问题。
3)提高开发、运维效率
- 可以快速搭建开发环境,一台一般配置服务器或开发机也能轻松的跑起多个Docker应用,而无需额外增加机器配置。
- 可以用docker把开发环境直接封装,其他人部署对应docker就可以了。
4)快速部署
- Docker 容器是在操作系统层面上实现虚化,直接复用本地主机的操作系统,因此更加轻量化
- 通过使用Docker并进行有效的资源分配可以提高资源的利用率。
3.docker与虚拟机的区别
Docker和虚拟机的差异:
- docker是一个系统进程;虚拟机是在操作系统中的操作系统
- docker体积小、启动速度快、性能好;虚拟机体积大、启动速度慢、性能一般
特性 | 容器 | 虚拟机 |
---|---|---|
启动速度 | 秒级 | 分钟级 |
性能 | 接近原生 | 弱于原生 |
隔离性 | 安全隔离 | 安全隔离 |
硬盘占用 | 一般为MB | 一般为GB |
4.docker相关概念理解
1)image镜像
- 类似于虚拟机镜像 里面可以使已经封装好的服务、应用,直接获取镜像使用即可
2)container容器
-
docker容器就是独立运行的一个或一组应用,以及它们所运行的必需环境。
-
类似linux系统环境,运行和隔离应用。容器从镜像启动的时候,docker会在镜像的最上一层创建一个可写层,镜像本身是只读的,保持不变。
3)repository仓库
- 仓库是集中存放镜像的地方。每个服务器上可以有多个仓库。
- 仓库又分为公有仓库(DockerHub、dockerpool)和私有仓库
5.docker网络
Docker的网络模式主要有以下几种:
模式 | 解释 |
---|---|
bridge | 为每一个容器分配、设置 IP 等,并将容器连接到一个 docker0 虚拟网桥,默认为该模式。 |
host | 容器将不会虚拟出自己的网卡,配置自己的 IP 等,而是使用宿主机的 IP 和端口。 |
container | 新创建的容器不会创建自己的网卡和配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。 |
none | 容器有独立的 Network namespace,但并没有对其进行任何网络设置 |
二、docker安装
1.安装
1)安装docker
apt-get install docker.io
2)启动docker
systemctl start docker
3)设置开机自启动
/lib/systemd/systemd-sysv-install enable docker
4)查看版本
docker version
5)查看服务状态
systemctl status docker.service
2.配置镜像
vi /etc/docker/daemon.json
编辑配置文件,加入
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
后面测试,发现失败,换了以下镜像
{
"registry-mirrors": [
"https://ox288s4f.mirror.aliyuncs.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
]
}
三、docker命令
1.服务相关命令
docker version # 查看docker版本详细信息
docker info # 查看docker详细信息
docker -v # 查看docker简要信息
systemctl start docker # 启动docker
systemctl stop docker # 关闭docker
systemctl enable docker # 设置开机启动
service docker restart # 重启docker服务
service docker stop # 关闭docker服务
2.容器相关命令
docker run #创建并启动容器
docker start #启动容器
docker ps #查看正在运行的容器
docker ps -a #列出所有容器
docker stop #终止容器
docker restart #重启容器
docker attach #进入容器
docker exec #进入容器
docker export #导出容器
docker import #导入容器快照
docker rm #删除容器
docker logs #查看日志
docker exec -it name /bin/bash #进入name(容器名/id)中开启交互式的终端,exit退出
docker cp 容器id:容器文件的地址 本地地址 #docker cp id:/1.txt /root
3.镜像相关命令
docker search redis #从docker hub上检索redis镜像
docke pull redis #从docker hub获取redis镜像
docker images #查看镜像列表
docker images -a #列出本地所有镜像
docker rmi xxxx #删除id为xxxx的镜像
docker image rm #删除镜像
docker save #导出镜像
docker load #导入镜像
Dockerfile #定制镜像(三个)
{ docker build #构建镜像
docker run #运行镜像
Dockerfile #常用指令(四个)
{ COPY #复制文件
ADD #高级复制
CMD #容器启动命令
ENV #环境变量
EXPOSE #暴露端口
}
}
示例:
-
docker run -d -p 6379:6379 --name myredis redis:latest
-
-d 后台运行
-
-p 端口映射 主机端口:容器端口
-
–name 自定义的容器名
四、搭建服务测试
拉取tomcat镜像,并搭建运行tomcat,进行测试。
1.搜索tomcat镜像
docker search tomcat
2.pull tomcat
docker pull tomcat #选择了第一个
3.查看镜像
发现已经有了tomcat镜像了
4.运行tomcat
docker run -d -p 8080:8080 --name tomcatTest tomcat
5.访问
上述页面,说明tomcat已经启动起来了,出现404只是里面没有网页。
所以,进入tomcat容器的交互式终端里,查看一下
docker exec -it tomcatTest /bin/bash
webapps下文件为空,所以访问404!创建一个hello/hello.html的网页,并尝试访问。
搭建成功!
五、总结
本文仅用于个人学习记录,发现docker很好用,爱了爱了。