Docker入门

   日期:2024-12-27    作者:f0yee 移动:http://oml01z.riyuangf.com/mobile/quote/62053.html

Docker 是一个开源的应用容器引擎Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。                        通俗点说:docker翻译过来为码头工人,docker提供的是一种容器化搬运东西(我们的软件、程序)的过程。

Docker入门

docker是运行在操作系统上一个程序软件,它会提供一个容器环境,使我们的程序独立地运行在容器中,可以隔离开发环境。虚拟机是我们在操作系统虚拟出来的文件,docker类似虚拟机,比虚拟机效率更高,都是可以被其他主机拿来直接使用的。

举个例子:当我们在主机上搭载服务器,需要配置环境,配置文件等。若要运行在多个不同的主机上,就需要多次配置。有了Docker我们就可以把配置好的环境,文件,打包成一package(docker镜像)。比如,在linux下EMQX部署,很多情况下直接下载emqx运行是跑不起来的,有了Docker,我们可以直接从官网拉取EMQX镜像,运行即可。这样就省去了我们去配置环境,修改文件这些繁琐的过程。Docker让应用程序不必再关心主机环境,各个应用安装在Docker镜像里,Docker引擎负责运行包裹了应用程序的docker镜像。

Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,可以大大减少编写代码和在生产环境中运行代码之间的延迟。

Build once,Run anywhere(一次搭建,到处运行

虚拟机的运作原理:是虚拟电脑的硬件资源,把硬件资源分配出来,然后虚拟出来多个操作系统,虚拟出来的是一个完整的电脑。

2.1.1集装箱

没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程序,目前我们要把程序部署到一台新的机器上,可能会启动不起来,比如少一些配置文件什么的或者少了什么数据,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西.

2.1.2 标准化
1. 运输方式

docker运输东西有一个超级码头,任何地方需要货物都由鲸鱼先送到超级码头,然后再由鲸鱼从超级码头把货物送到目的地去.对应的技术来说,比如我们要把台式机的应用部署到笔记本上,我们可能选择用QQ发过去或者用U盘拷过去,docker就标准化了这个过程,我们只需在台式机上执行一个docker命令,把鲸鱼派过来,把程序送到超级码头去,再在笔记本上执行一个docker命令,然后由鲸鱼把程序从超级码头送到笔记本上去.

2. 存储方式

当我们把程序存储到主机上时,我们需要一个目录,且我们要记住这个目录,因为下次我们可能还要修改,有了docker之后我们就不用记住了程序在哪里了,我们使用的时候只需要一条命令就行了.

3. API接口

docker提供了一系列rest api的接口,包含了对docker也就是对我们的应用的一个启动停止查看删除等等,如当我们要启动tomcat时我们要执行startup命令,当我们要停止时要执行shutdown命令,如果不是tomcat,我们可能还需要一些别的命令.有了docker我们记docker的命令就可以对其进行操作.
2.1.3 隔离
我们在使用虚拟机时有自己的cpu,硬盘,内存,完全感觉不到外面主机的存在,docker也差不多,不过它更轻量,我们创建虚拟机可能要几分钟,但是docker只需要一秒.

2.2.1 镜像是什么

镜像(Mirroring)是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在一个完全相同的副本即为镜像。就像是集装箱,鲸鱼拖着的集装箱就是镜像。通俗点,镜像就是一堆静态的模板,运行起来的镜像就是容器。

2.2.2 镜像文件系统

从本质上来说镜像就是一系列文件,可以包括我们应用程序的文件,也可以包括我们应用的运行环境的文件。linux的一个存储技术,叫做联合文件系统,是一种分层的文件系统,可以将不同的目录挂到同一个虚拟文件系统下.

下图就是镜像的存储格式,这张图是分层的,最下面一层,上面也是一层层的好像集装箱罗列在一起.这就是镜像最直观的存储方式.下面是操作系统的引导,上面是linux操作系统,再上面是一些相关的软件,再往上是应用代码。docker镜像系统的每一层都是只读的,然后把每一层加载完成之后这些文件都会被看成是同一个目录,相当于只有一个文件系统.docker的这种文件系统被称之为镜像.

Docker属于Linux容器的一种封装,提供简单易用的容器使用接口,它也是目前最流行的Linux容器解决方案。Docker 将软件代码和其依赖,全打包在一个文件中。运行单个文件,就会生成虚拟容器。在这个虚拟容器中,不管本地的操作系统是如何的不同,此容器都能照常运行。
 
简而言之,Docker的接口非常简单,可以帮助用户更好地创建和使用容器,让相同的代码在不同的环境上正常运行。容器器不是模拟一个完整的操作系统,而是对进程进行隔离。或者说,就是在正常进程的外面套用了一个保护层。对于容器里面的进程来说,它接触到的各种资源都是虚拟的,从而实现与底层程序的隔离。

 

镜像怎么在不同的主机上传输呢

这就用到了docker仓库,我们要先把我们的镜像传到docker仓库中,再由目的地把docker仓库拉过去,这就完成了这样的一次传输过程.

谁提供了这样的仓库呢?docker自己提供了,hub.docker.com,但是非常慢,为了解决这个问题,国内很多公司也在做自己的仓库.比较知名的是由网易蜂巢提供的 https://c.163yun.com/hub#/m/home/

1. 的卸载掉你系统中的 docker

 官网给的删除命令

 

ubuntu 完全干净的卸载docker

 

摘抄于 ubuntu 完全干净的卸载docker_张老鱼的博客-CSDN博客

2.安装详细步骤

摘抄于 Ubuntu 20.04 安装 docker 详解_s清风s的博客-CSDN博客_docker ubuntu20.04

2.1 安装依赖

 

2.2 添加 Docker 的官方 GPG 密钥

 

2.3 验证密钥

 

2.4 根据你不同的系统去设置一个稳定的仓库(根据你的系统选一个 安装

 

2.5  再更新一次 apt

 

2.6到目录中设置daemon.json文件(值得注意的是,如果是首次安装,理论上是不会有 cd /etc/docker 这个目录滴,所以如果你真的是第一次安装, 请跳过此步骤,等你下面步骤报错之后,嘿嘿这个目录就会有了,然后从头走一遍你就会发现,这部可以用了

 

2.7 安装最新的 docker

 

2.7.1一波顺利滴成功安装,下面的 hello-world 也是非常滴顺利敲出来,感觉一切良好

然而运行一波重启docker命令$ sudo systemctl restart docker 发现报了下面这该死滴错误

 

这错误出来后,就完了,重启系统之后docker再也没能启动,恭喜你!你还是没能逃脱2.6的命运,请从这里跳到安装步骤第一步,再来一次,记得要看2.6

2.7.2 执行安装步骤直接报错,错误提示

 

2.8运行 hello-world

 
 

容器生命周期管理

容器rootfs命令

镜像仓库

本地镜像管理

info|version

  • docker  run     运行镜像生成容器
  •  
  • start/stop/restartdocker start/stop/restart id(容器id)开启 关闭 重新开启某个容器
  • docker kill 容器id    删除容器
  • docker rm 容器id (可加参数: -f 强制删除 -l 移除容器间的网络连接,而非容器本身 -v 删除容器和与容器关联的卷
  • docker pause/unpause 容器id  停止启动容器
  • docker create  容器id 创建容器
  • 容器操作

  • docker ps 查看容器 可加-a查看所有容器
  • docker inspect
  • docker top
  • docker attach
  • docker events
  • docker logs 容器id  查看容器日志
  • docker wait
  • docker export
  • docker port
  • docker stats
  • docker commit -m "描述" 容器id 镜像名:版本号ocker commit 把容器打包成镜像
  • docker cp
  • docker diff
  • docker login
  • docker pull 镜像名 拉取镜像
  • docker push 地址:端口/文件:版本(推送制定镜像到docker镜像源服务器
  • docker search 镜像名  搜索镜像
  • docker images 查看自己服务器中docker 镜像列表

  • docker image save 镜像名>**.tar(把镜像打包成tar)或者docker save -o **.tar 镜像名:版本
  • rmi
  •  
      

  • docker tag 源文件 目标文件名:版本  给镜像打标签
  • build 
  • history 镜像id  显示镜像历史
  • docker save 镜像名/镜像ID -o 镜像保存在哪个位置与名字

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号