首页 > 其他分享 >docker入门学习

docker入门学习

时间:2024-08-04 19:25:53浏览次数:15  
标签:容器 入门 tomcat 虚拟机 学习 镜像 docker Docker

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很好用,爱了爱了。

参考

标签:容器,入门,tomcat,虚拟机,学习,镜像,docker,Docker
From: https://blog.csdn.net/qq_44780157/article/details/140863761

相关文章

  • 【学习笔记】Matlab和python双语言的学习(蒙特卡洛法)
    文章目录前言一、蒙特卡洛二、经典示例:计算圆周率π1.代码实现----Matlab2.代码实现----python三、示例2:三门问题1.代码实现----Matlab2.代码实现----python总结前言通过模型算法,熟练对Matlab和python的应用。学习视频链接:https://www.bilibili.com/video/BV1E......
  • 科大讯飞P30、小度K16、优学派U59区别 2024最具性价比学习机推荐
    科大讯飞AI学习机P30是一款为小学到高中学生设计的全能型学习平板。它配备了6GB的运行内存和256GB的存储空间,能够轻松运行各种学习应用和存储大量学习资料。11英寸的大屏幕采用护眼设计,能够有效减少蓝光辐射,保护学生视力。P30覆盖了从小学到高中的全科目课程,配合科大讯飞的AI技术,......
  • 科大讯飞学习机c10s和p30怎么选
    科大讯飞学习机P30和C10两者区别主要在硬件配置方面;软件的核心功能差别不大,都搭载了星火大模型、精准学、及1对1英语口语陪练等。硬件上:1、科大讯飞学习机P30屏幕更大些,是10.95英寸屏幕(近11英寸大小),科大讯飞学习机C10是10.1英寸2、科大讯飞学习机P30定配的是二代作答笔(白色),科大......
  • 【仓颉】入门文档代码圆周率估算代码更正
    项目实现前实现后代码组织方式模块/包二级结构包/子包树形结构没有父包的包称为root包,root包及其子包(包括子包的子包)构成的整棵树称为module编译单元包包(每个子包单独编译)访问修饰符public:可修饰顶层和非顶层成员,包内外可见default(不写):仅本包内可见pro......
  • 我的《ANSA快速入门指南》中文帮助文档浅析(中)
    导读:本文是ANSA入门系列第2篇(后续将会在仿真秀官网或APP同步发布)。本系列致力于提供ANSA软件的中文版,帮助广大初学者迅速入门。本文档内容及图片均来自于ANSA官网,本文档翻译自官方文档。本文图片来源:软件截图、官网、或者官方文档,希望获得ANSA软件学习资料,欢迎加入学习型仿真工......
  • C语言学习----常用函数
    1.输入输出:scanf输入printf输出格式:scanf("格式控制符",变量的地址);printf(“格式控制符”,变量);注意变量的地址和变量不同,变量的地址用取址符&加变量名组成例如&a;inta;scanf("%d",&a);printf("%d",a);这段代码会要求从控制台输入一个整数,然后输出它。格式控制......
  • C语言零基础学习笔记12——数组(一)
    本节大纲一、数组的概念二、一维数组的创建和初始化三、一维数组的使用四、一维数组在内存中的储存五、sizeof计算数组元素个数一、数组的概念        数组的概念是一组相同类型元素的集合;从这个概念中我们就可以发现2个有价值的信息:1、数组中存放的是1个......
  • 【转载】科研写作入门 —— 聊聊Science Research Writing for non-native Speakers o
    原地址:https://zhuanlan.zhihu.com/p/623882027平行侠:今天我们聊一聊ScienceResearchWritingfornon-nativeSpeakersofEnglish这本书,我博士毕业发的TIP论文就是看了这本书之后才写出来的,我太爱这本书了,请你给我们介绍一下吧。AI:非常高兴听到您对这本书的好评!《S......
  • 记录我在嵌入式学习中的一些经历,建议
    一.内容概括1.1嵌入式介绍1.2嵌入式开始学习阶段1.3入门阶段1.4提高阶段1.5自主寻找方向阶段1.6总结 二.正文 2.1嵌入式介绍:不过多赘述定义:嵌入式系统是一种集成了计算机硬件和软件,并嵌入到专用设备中,以实现对设备控制、监视或辅助操作的系统。特点:专用性:针对特......
  • 数据结构——数列分块 学习笔记
    数据结构——数列分块学习笔记下面部分代码使用,usingll=longlong;#defineintll基础思想问题引入问题:实现区间加;区间求和。基本结构引用经典东西,我们考虑构造一个结构,形如,那么,结论是,复杂度证明为什么块长一般是\(\sqrtn\)呢?我们假设构造的块长是\(......