Docker简介
Docker是一个用于开发、发布和运行应用程序的开放平台。Docker使您能够将应用程序从基础设施中分离出来,从而可以快速交付软件。使用Docker,您可以像管理应用程序一样管理基础设施。通过利用Docker的方法来快速发布、测试和部署代码,可以显著减少编写代码和在生产环境中运行代码之间的延迟。

Docker的官网图标是一个抽象化的鲸鱼驮着一堆的集装箱。在容器中运行的应用就像集装箱一样,不需要关注底层运行的环境,总能够通过任意平台达成应用运行的目的。虽然Docker不是唯一的容器引擎,但在目前任然是最流行的,且市场占有率最大容器引擎。但随着K8s的最近一次更新,不在原生支持Docker,其霸主地位是否会被撼动,任不得知。

2. 容器与虚拟机
如简介所说的,Docker只是众多容器引擎中的一款,却不是唯一,所以不要认为Docker就是容器。Docker作为容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。而应用则可以在容器中运行。可以将容器认为是一个轻量级的虚拟机,而容器引擎是创建容器的应用。其他常见容器引擎有:Rocket、podman、container。

容器优点
容器化越来越受欢迎,因为容器具有以下特点:

灵活:即使是最复杂的应用也可以集装箱化。
轻量级:容器利用并共享主机内核。
可互换:可以即时部署更新和升级。
便携式:可以在本地构建,部署到云,并在任何地方运行。
可扩展:可以增加并自动分发容器副本。
可堆叠:可以垂直和即时堆叠服务。

容器与虚拟机的区别

容器                                    虚拟机

启动速度                                      秒级                                    分钟级

计算损耗                                      几乎没有                             损耗30%-50%

性能                                             接近原生                              弱于

系统支撑量                                  上千                                      几十个

隔离性                                          资源隔离                              完全隔离

容器实现的3种重要技术

docker本质就是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技术(copy-on-write)实现了高效的文件操作(类似虚拟机的磁盘比如分配500g并不是实际占用物理磁盘500g)。

其中namespace实现完成了容器化所需要的六项隔离:

Dcoker的核心概念 

镜像
Docker的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向Docker容器引擎的只读模板。通过镜像启动一个容器,一个镜像是一个可执行的包,其中包括运行应用程序所需要的所有内容包含代码,运行时间,库、环境变量、和配置文件。Docker镜像也是一 个压缩包,只是这个压缩包不只是可执行文件,环境部署脚本,它还包含了完整的操作系统。因为大部分的镜像都是基于某个操作系统来构建。
所以很轻松的就可以构建本地和远端一样的环境,这也是Docker镜像的精髓。

容器

容器是镜像的可运行实例。您可以使用Docker API或CLI创建、启动、停止、移动或删除容器。您可以将一个容器连接到一个或多个网络,将存储附加到它,甚至根据它的当前状态创建一个新的镜像。
可以把容器看做是要给简易版的linux环境(包括root用户权限、镜像空间、用户空间和网络空间等)和运行在其中的应用程序。

仓库
存放镜像的地方

Docker的安装

systemctl stop firewalld.service
setenforce 0

#安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2 
device mapper存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
#设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安装 Docker-CE并设置为开机自动启动
yum install -y docker-ce

systemctl start docker.service
systemctl enable docker.service 

#查看 docker 版本信息
docker version

Docker 常见命令

镜像相关

搜索镜像(search)

[root@local ~]# docker search nginx #默认显示前25个镜像
[root@local ~]# docker search  --limit 5 nginx #显示前5个镜像

NAME                               DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
nginx                              Official build of Nginx.                        16985     [OK]       
bitnami/nginx                      Bitnami nginx Docker Image          131        [OK]
ubuntu/nginx                       Nginx, a high-performance reverse proxy & we…   52                   
bitnami/nginx-ingress-controller   Bitnami Docker Image for NGINX Ingress Contr…   18                                                                                                                                [OK]
kasmweb/nginx                      An Nginx image based off nginx:alpine and in…   1

下载镜像(pull)

[root@local ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
b85a868b505f: Pull complete 
f4407ba1f103: Pull complete 
4a7307612456: Pull complete 
935cecace2a0: Pull complete 
8f46223e4234: Pull complete 
fe0ef4c895f5: Pull complete 
Digest: sha256:10f14ffa93f8dedf1057897b745e5ac72ac5655c299dade0aa434c71557697ea
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
[root@local ~]# 
[root@local ~]# docker pull nginx:1.20.1
1.20.1: Pulling from library/nginx  # 指定版本下载

上传镜像(push)

默认上传到 docker Hub 官方公共仓库,需要注册使用公共仓库的账号。
可以使用 docker login 命令来输入用户名、密码和邮箱来完成注册和登录。
在上传镜像之前,还需要先对本地镜像添加新的标签,然后再使用 docker push 命令进行上传。

[root@local ~]# docker tag nginx:latest nginx:web        #添加新的标签
[root@local ~]# docker login                            #登录公共仓库
Username:
password:
[root@local ~]# docker push docker push nginx:web        #上传镜像

 

查看本地镜像列表(images)

[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    55f4b40fe486   28 hours ago   142MB

对镜像打标签(tag) 

# 可以看见如果原有镜像有标签,会新增一条标签记录
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    55f4b40fe486   28 hours ago   142MB
[root@local ~]# docker tag 55f4b40fe486 canyun:latest
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
canyun       latest    55f4b40fe486   29 hours ago   142MB
nginx        latest    55f4b40fe486   29 hours ago   142MB
# 可以对一个镜像进行多次打标签
[root@local ~]# docker tag 55f4b40fe486 canyun:1.20
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
canyun       1.20      55f4b40fe486   29 hours ago   142MB
canyun       latest    55f4b40fe486   29 hours ago   142MB
nginx        latest    55f4b40fe486   29 hours ago   142MB

删除镜像(rmi)

#当一个镜像有多个标签时,可以删除其中指定的标签
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
canyun       1.20      55f4b40fe486   29 hours ago   142MB
canyun       latest    55f4b40fe486   29 hours ago   142MB
nginx        latest    55f4b40fe486   29 hours ago   142MB
[root@local ~]# docker rmi canyun:1.20    # docker rmi 仓库名称:标签名
Untagged: canyun:1.20
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
canyun       latest    55f4b40fe486   29 hours ago   142MB
nginx        latest    55f4b40fe486   29 hours ago   142MB
#docker rmi 镜像ID号  会彻底删除该镜像
[root@local ~]# docker rmi 55f4b40fe486             #普通删除无法删除
Error response from daemon: conflict: unable to delete 55f4b40fe486 (must be forced) - image is referenced in multiple repositories
[root@local ~]# docker rmi 55f4b40fe486 -f
Untagged: canyun:latest
Untagged: nginx:latest
Untagged: nginx@sha256:10f14ffa93f8dedf1057897b745e5ac72ac5655c299dade0aa434c71557697ea
Deleted: sha256:55f4b40fe486a5b734b46bb7bf28f52fa31426bf23be068c8e7b19e58d9b8deb
Deleted: sha256:5f58fed9b4d8e6c09cdc42eed6de6df7a7e35b40d92c98f30f8ecad4960fb7a0
Deleted: sha256:8bb72c1d014292ebf1ae348a77624c536e766757356c6dbb0de75122a94b445d
Deleted: sha256:cc9ac0adbded956d924bcf6c26ffbc93ea070019be1437d204b530a033ff4b16
Deleted: sha256:30f210588f35917f0edb5a2465db7ad60e4ef3b6ac74fe155474e14e6f0995c5
Deleted: sha256:5ecd5431cf49a2a11115844de1e7b23b9535be8789add9ab50973867db5f7d36
Deleted: sha256:08249ce7456a1c0613eafe868aed936a284ed9f1d6144f7d2d08c514974a2af9
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE

导出镜像(save)

[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat2      zuixing   4813a0e5f815   10 days ago   480MB
tomcat3      new       4813a0e5f815   10 days ago   480MB
tomcat       latest    4813a0e5f815   10 days ago   480MB
# 指定库名称和标签导出
[root@local ~]# docker save tomcat2:zuixing -o /tmp/canyun_docker_tomcat.tar.gz
[root@local ~]# ls /tmp
canyun_docker_tomcat.tar.gz 
……………………
# 指定镜像id导出
[root@local ~]# docker save 4813a0e5f815 -o /tmp/canyun_docker_tomcat2.tar.gz
[root@local ~]# ls /tmp
canyun_docker_tomcat2.tar.gz                                             
canyun_docker_tomcat.tar.gz

 导入镜像(load、import)

#先删除所有镜像
[root@local ~]# docker rmi 4813a0e5f815 -f
Untagged: tomcat2:zuixing
Untagged: tomcat3:new
Untagged: tomcat:latest
Untagged: tomcat@sha256:8ece5eebda93ab45acf77b237f5564b3c558d0ce782c2f4302796043a621662f
Deleted: sha256:4813a0e5f815c2f686a8e41d879735dc1ba1c2dc3b059223e9d0467e4fbf48ae
Deleted: sha256:6263f68f8705cf7609f607c8d619c5151425126082ce197600039913c232a1fb
Deleted: sha256:c905f33549a11869176f6697bd7b20e076c018e04532bdf0ae45e1308f969933
Deleted: sha256:6e6af734a6437c86a45e0ce53da33fae0cadf54504eb4753a6fd1a879ef9b88d
Deleted: sha256:f415aa1e1cc2befb567a9de49e61a5ae64017c088f0f9af7db6853a0ea9b0bd4
Deleted: sha256:dd96e1d720e7faae18ba9749c7a76ec07c39438cea3b4524c8e51c0a97e4c169
Deleted: sha256:8ea98ddb7c7042ae259a9b82cbd8e2ed0c365d9fc0889010e72772e2e7fff9a3
Deleted: sha256:af7ed92504ae4c20128a0f01048d41d467fef5c795c38d0defdb998a187ed1d4
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID   CREATED   SIZE
#按标签导出的镜像导入
[root@local ~]# docker image load -i /tmp/canyun_docker_tomcat.tar.gz
af7ed92504ae: Loading layer [==================================================>]  75.15MB/75.15MB
4f00b42da09e: Loading layer [==================================================>]   58.8MB/58.8MB
169f6a3fe055: Loading layer [==================================================>]  329.6MB/329.6MB
75cd1080d2c5: Loading layer [==================================================>]   2.56kB/2.56kB
8ec4a98c4d98: Loading layer [==================================================>]  3.072kB/3.072kB
5d16e43bd609: Loading layer [==================================================>]  22.87MB/22.87MB
b6fb9d3b2bd3: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image: tomcat2:zuixing
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
tomcat2      zuixing   4813a0e5f815   10 days ago   480MB
#按镜像id导出的镜像导入
[root@local ~]# docker image load -i /tmp/canyun_docker_tomcat2.tar.gz
af7ed92504ae: Loading layer [==================================================>]  75.15MB/75.15MB
4f00b42da09e: Loading layer [==================================================>]   58.8MB/58.8MB
169f6a3fe055: Loading layer [==================================================>]  329.6MB/329.6MB
75cd1080d2c5: Loading layer [==================================================>]   2.56kB/2.56kB
8ec4a98c4d98: Loading layer [==================================================>]  3.072kB/3.072kB
5d16e43bd609: Loading layer [==================================================>]  22.87MB/22.87MB
b6fb9d3b2bd3: Loading layer [==================================================>]  2.048kB/2.048kB
Loaded image ID: sha256:4813a0e5f815c2f686a8e41d879735dc1ba1c2dc3b059223e9d0467e4fbf48ae
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
<none>       <none>    4813a0e5f815   10 days ago   480MB
#导入后库名与标签为none
[root@local ~]# docker image import /tmp/canyun_docker_tomcat2.tar.gz canyun:latest
sha256:a6af80e948be1a22dce978749dad35969bd7eef0aea4e3522098761d848e3535
[root@local ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
canyun       latest    a6af80e948be   4 seconds ago   486MB
<none>       <none>    4813a0e5f815   10 days ago     480MB

删除容器(rm) 

#基于id删除
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED              STATUS                     PORTS      NAMES
8f8d730d975b   tomcat         "catalina.sh run"        About a minute ago   Up About a minute          8080/tcp   beautiful_cori
48f971d85342   tomcat         "-d"                     3 minutes ago        Created                    8080/tcp   sweet_hamilton
168f5d59a35d   httpd          "-d"                     5 minutes ago        Created                    80/tcp     strange_jones
207af9dd350f   httpd          "httpd-foreground"       5 minutes ago        Exited (0) 5 minutes ago              musing_goldwasser
c716cc6c39ae   nginx:latest   "/docker-entrypoint.…"   19 hours ago         Up 19 hours                80/tcp     friendly_zhukovsky
[root@local ~]# docker rm 168f5d59a35d
168f5d59a35d
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS      NAMES
8f8d730d975b   tomcat         "catalina.sh run"        2 minutes ago   Up 2 minutes               8080/tcp   beautiful_cori
48f971d85342   tomcat         "-d"                     4 minutes ago   Created                    8080/tcp   sweet_hamilton
207af9dd350f   httpd          "httpd-foreground"       6 minutes ago   Exited (0) 6 minutes ago              musing_goldwasser
c716cc6c39ae   nginx:latest   "/docker-entrypoint.…"   19 hours ago    Up 19 hours                80/tcp     friendly_zhukovsky
#基于名称删除
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS      NAMES
8f8d730d975b   tomcat         "catalina.sh run"        2 minutes ago   Up 2 minutes               8080/tcp   beautiful_cori
48f971d85342   tomcat         "-d"                     4 minutes ago   Created                    8080/tcp   sweet_hamilton
207af9dd350f   httpd          "httpd-foreground"       6 minutes ago   Exited (0) 6 minutes ago              musing_goldwasser
c716cc6c39ae   nginx:latest   "/docker-entrypoint.…"   19 hours ago    Up 19 hours                80/tcp     friendly_zhukovsky
[root@local ~]# docker rm sweet_hamilton
sweet_hamilton
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED         STATUS                     PORTS      NAMES
8f8d730d975b   tomcat         "catalina.sh run"        4 minutes ago   Up 4 minutes               8080/tcp   beautiful_cori
207af9dd350f   httpd          "httpd-foreground"       8 minutes ago   Exited (0) 8 minutes ago              musing_goldwasser
c716cc6c39ae   nginx:latest   "/docker-entrypoint.…"   19 hours ago    Up 19 hours                80/tcp     friendly_zhukovsky
# 批量删除容器
[root@local ~]# docker ps -a -q
8f8d730d975b
207af9dd350f
c716cc6c39ae
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS      NAMES
8f8d730d975b   tomcat         "catalina.sh run"        8 minutes ago    Up 8 minutes                8080/tcp   beautiful_cori
207af9dd350f   httpd          "httpd-foreground"       12 minutes ago   Exited (0) 12 minutes ago              musing_goldwasser
c716cc6c39ae   nginx:latest   "/docker-entrypoint.…"   19 hours ago     Up 19 hours                 80/tcp     friendly_zhukovsky
[root@local ~]# docker container rm -f `docker container ps -a -q`
8f8d730d975b
207af9dd350f
c716cc6c39ae
[root@local ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

Docker简介与安装相关推荐

  1. Docker学习一:Docker简介与安装

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  2. Docker入门到实践 (一) docker简介与安装、常用命令讲解

    Docker入门到实践 (一) docker简介与安装 一.docker 介绍   Docker 是一个开源的应用容器引擎 打包应用以及依赖包到一个可移植的镜像中,发布到任何机器上,实现虚拟化.容器是 ...

  3. Docker学习(一)-----Docker简介与安装

    一.Docker介绍 1.1什么是docker Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植 ...

  4. Docker 简介与安装

    Github: github.com/yingzk/MyDo- 1. Docker 简介 Docker是一个开源(Github地址: https://github.com/docker)的容器引擎,它 ...

  5. Docker简介和安装

    简介 Docker就是虚拟化的一种轻量级替代技术.Docker的容器技术不依赖任何语言.框架或系统,可以将App变成一种标准化的.可移植的.自管理的组件,并脱离服务器硬件在任何主流系统中开发.调试和运 ...

  6. 【Docker 入门】Docker简介与安装

    Docker Desktop for Windows 目录: Docker Desktop for Windows 1. Docker简介: 2. Docker应用场景: 3. Docker对比虚拟机 ...

  7. 一、Docker—简介及安装

    简介及安装 一.容器技术的介绍 什么是container(容器)? 容器的优势 Docker 的架构 Linux 系统上安装 Docker 二.容器快速上手 常见的Docker命令 Image 和 C ...

  8. docker简介和安装(阿里云加速)以及Springboot项目部署docker,实现局域网下同时访问项目(详细过程)

    文章目录 关于Docker: Docker简介 Docker优势 Docker的基本组成 Docker安装: Springboot项目部署到Docker 实现局域网内多台电脑可以访问 关于Docker ...

  9. Docker解析及轻量级PaaS平台演练(一)--Docker简介与安装

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq1010885678/article/details/46290985 Container技术: ...

最新文章

  1. 项目实施中应该注意的事项
  2. 「后端小伙伴来学前端了」关于Vue中的自定义事件,组件绑定自定义事件实现通信
  3. 使用事件委托降低重复的事件绑定,从而降低dom操作的对性能的消耗[兼容IE版]
  4. 基于spring自动注入及AOP的表单二次提交验证
  5. 贪心算法求解TSP问题(python)
  6. 一个Form中2个按钮,PHP后台如何判断提交的是哪一个按钮
  7. python自动办公pdf_[Python] 自动化办公 PDF提取文字、表格、图片
  8. python中threading中的lock类
  9. 字符串超长导致emWin卡死
  10. Oracle数据库学习
  11. colab配合谷歌云盘使用
  12. 绝招!谷歌浏览器(Chrome)各种版本支持Flash
  13. UnboundLocalError: local variable ‘count‘ referenced before assignment
  14. java控制台编译_【java c#】通过控制台编译和运行程序//不依赖IDE
  15. javascript html 去除,javascript去除html标签
  16. MySQL入门教程(详细,多图例,多示例)
  17. poi导出数据文件名错误_POI导出Excel报错“扩展名与文件的格式不匹配”
  18. Linux驱动学习9(同步/异步与阻塞/非阻塞的区别 )
  19. Vue 学习笔记(六) P41-P43
  20. 优化| 手把手教你学会杉树求解器(COPT)的安装、配置与测试

热门文章

  1. 数据结构——二叉树交换左右子树位置(C语言)
  2. c语言如何标志置1与置0,c语言对于文本的基本操作
  3. 使用beecloud和easychat 做微信H5 微信公众号支付遇到的坑
  4. mysql 存储过程参数数组_如何给存储过程,传一个数组参数?
  5. 数学:矩估计和最大似然估计
  6. JavaScript高级程序设计(读书笔记)(六)
  7. EasyNVR更新版本后如何同步RTSP通道?
  8. (新手向)在matlab中运用SMOTE和前馈神经网络对wilt(枯萎)数据集进行机器学习
  9. 沃美小镇电闪雷鸣 广宇连夜而来
  10. java 大数据处理之内存溢出解决办法