一文了解Docker核心概念和安装配置
核心概念
Docker 有三大核心概念,分别是镜像,容器,仓库。
Docker 镜像
Docker 镜像类似于虚拟机的镜像,可以把它理解为一个只读的模板,例如一个镜像可以包含一个基本的操作系统环境,里面仅仅安装了Apache应用程序,可以把它称之为一个Apache镜像。
镜像是创建Docker容器的基础。
通过版本管理和增量文件系统,Docker提供了一套十分简单的机制来更新现有的镜像,用户甚至可以从网上下载一个已经做好的应用镜像,并进行使用。
Docker 容器
Docker容器类似于一个轻量级的沙箱,Docker利用容器来运行和隔离应用。
容器是从镜像创建的应用运行实例,它可以启动,开始停止删除,这些容器彼此相互隔离,互相不可见。
可以把容器看做一个简易版的Linux系统环境,以及运行在其中的应用程序打包而成的盒子。
Docker 仓库
Docker仓库类似于代码仓库,是Docker集中保存镜像文件的场所。
根据保存的镜像是否公开与否,Docker仓库可以分为公开仓库和私有仓库两种形式。
安装Docker引擎
下面的实例,是在Windows下安装docker
访问官网的首页。
https://www.docker.com/
单击立即适用,选择windows版本的下载
单击项目进行安装
进行安装
检验是否安装成功
打开powershell 输入docker
这样,windows 版本的docker已经安装完毕
使用Docker镜像
对于docker镜像的使用如下
获取镜像
获取docker镜像,使用如下的命令。
输入命令获取docker镜像
docker pull ubuntu
从下载的过程可以看到,对于docker容器来说,镜像文件一般由若干层组成,
每一个字符串都是唯一的id,使用docker的pull命令的时候,会一层层的下载相关的镜像,并由上一层镜像指向上上一层的镜像。
查看镜像的信息
使用docke的images命令,查看docker的镜像信息。
上方使用images列出docker的镜像信息。
使用tag命令添加镜像的标签
为了方便于docker镜像的使用,使用docker的tag命令,添加docker的镜像标签。
docker tag ubuntu:latest myubuntu:laster
使用的效果如下
使用inspect命令查看docker的详细信息
docker image inspect ubuntu
查看信息如下
PS C:\Users\Administrator\Desktop> docker image inspect ubuntu
[{"Id": "sha256:74435f89ab7825e19cf8c92c7b5c5ebd73ae2d0a2be16f49b3fb81c9062ab303","RepoTags": ["myubuntu:laster","ubuntu:latest"],"RepoDigests": ["ubuntu@sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce"],"Parent": "","Comment": "","Created": "2020-06-17T01:20:56.323568224Z","Container": "9477bb1d88721b63e0c6a359eb48a081741a0992480bf34bbcebf4e5734fcf67","ContainerConfig": {"Hostname": "9477bb1d8872","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/sh","-c","#(nop) ","CMD [\"/bin/bash\"]"],"ArgsEscaped": true,"Image": "sha256:5412cfe47ff528df823761788f99a11568e2d25f48a4245a3d67cdc3e564c839","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": {}},"DockerVersion": "18.09.7","Author": "","Config": {"Hostname": "","Domainname": "","User": "","AttachStdin": false,"AttachStdout": false,"AttachStderr": false,"Tty": false,"OpenStdin": false,"StdinOnce": false,"Env": ["PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"],"Cmd": ["/bin/bash"],"ArgsEscaped": true,"Image": "sha256:5412cfe47ff528df823761788f99a11568e2d25f48a4245a3d67cdc3e564c839","Volumes": null,"WorkingDir": "","Entrypoint": null,"OnBuild": null,"Labels": null},"Architecture": "amd64","Os": "linux","Size": 73856440,"VirtualSize": 73856440,"GraphDriver": {"Data": {"LowerDir": "/var/lib/docker/overlay2/63e1c7f313e414bd5465953da0ceb615cc9c5906c9b539ed164560b18020bc85/diff:/var/lib/docker/overlay2/09f0332099bc97d0052e07879f18271f2c7ea879501498a1eca00711065c9e9a/diff:/var/lib/docker/overlay2/8fef100fbab32d7aa7a3cc70740ef97b45cc9dcfce91453dd10cc502a3fa10f7/diff","MergedDir": "/var/lib/docker/overlay2/3ec5eeae7aa3781aa605fa1a1dc598c39d7774796600b3c1f86e8190c24d5a47/merged","UpperDir": "/var/lib/docker/overlay2/3ec5eeae7aa3781aa605fa1a1dc598c39d7774796600b3c1f86e8190c24d5a47/diff","WorkDir": "/var/lib/docker/overlay2/3ec5eeae7aa3781aa605fa1a1dc598c39d7774796600b3c1f86e8190c24d5a47/work"},"Name": "overlay2"},"RootFS": {"Type": "layers","Layers": ["sha256:e1c75a5e0bfa094c407e411eb6cc8a159ee8b060cbd0398f1693978b4af9af10","sha256:9e97312b63ff63ad98bb1f3f688fdff0721ce5111e7475b02ab652f10a4ff97d","sha256:ec1817c93e7c08d27bfee063f0f1349185a558b87b2d806768af0a8fbbf5bc11","sha256:05f3b67ed530c5b55f6140dfcdfb9746cdae7b76600de13275197d009086bb3d"]},"Metadata": {"LastTagTime": "2020-07-06T13:37:35.064486339Z"}}
]
使用history命令查看镜像历史
docker history ubuntu
PS C:\Users\Administrator\Desktop> docker history ubuntu
IMAGE CREATED CREATED BY SIZE COMMENT
74435f89ab78 2 weeks ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 weeks ago /bin/sh -c mkdir -p /run/systemd && echo 'do… 7B
<missing> 2 weeks ago /bin/sh -c set -xe && echo '#!/bin/sh' > /… 811B
<missing> 2 weeks ago /bin/sh -c [ -z "$(apt-get indextargets)" ] 1.01MB
<missing> 2 weeks ago /bin/sh -c #(nop) ADD file:b2342c7e6665d5ff3… 72.8MB
PS C:\Users\Administrator\Desktop>
搜索相关的镜像
搜索官方带nginx的关键字的镜像
PS C:\Users\Administrator\Desktop> docker search --filter=is-official=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 13426 [OK]
PS C:\Users\Administrator\Desktop>
删除和清理镜像
对镜像镜像相关的删除
使用标签删除镜像
docker rmi ubuntu
PS C:\Users\Administrator\Desktop> docker rmi ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
PS C:\Users\Administrator\Desktop>
使用镜像ID删除镜像
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu laster 74435f89ab78 2 weeks ago 73.9MB
ubuntu latest 74435f89ab78 2 weeks ago 73.9MB
PS C:\Users\Administrator\Desktop> docker rmi ubuntu
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:35c4a2c15539c6c1e4e5fa4e554dac323ad0107d8eb5c582d6ff386b383b7dce
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu laster 74435f89ab78 2 weeks ago 73.9MB
PS C:\Users\Administrator\Desktop> docker rmi 74435f89ab78
Untagged: myubuntu:laster
Deleted: sha256:74435f89ab7825e19cf8c92c7b5c5ebd73ae2d0a2be16f49b3fb81c9062ab303
Deleted: sha256:8a8d1f0b34041a66f09e49bdc03e75c2190f606b0db7e08b75eb6747f7b49e11
Deleted: sha256:f1b8f74eff975ae600be0345aaac8f0a3d16680c2531ffc72f77c5e17cbfeeee
Deleted: sha256:27d46ebb54384edbc8c807984f9eb065321912422b0e6c49d6a9cd8c8b7d8ffc
Deleted: sha256:e1c75a5e0bfa094c407e411eb6cc8a159ee8b060cbd0398f1693978b4af9af10
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
PS C:\Users\Administrator\Desktop>
清理镜像
使用docker镜像来进行清理
PS C:\Users\Administrator\Desktop> docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
PS C:\Users\Administrator\Desktop>
创建镜像
基于已有的容器创建镜像
查看运行的容器列表
PS C:\Users\Administrator\Desktop> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff7a974b9771 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp fervent_curie
创建相关的容器
docker container commit -m "ming" -a "mingming" ff7a974b9771 test:0.1
再次查看
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 54a6eb8d4483 5 seconds ago 132MB
ubuntu latest 74435f89ab78 2 weeks ago 73.9MB
nginx latest 2622e6cca7eb 3 weeks ago 132MB
PS C:\Users\Administrator\Desktop>
完整的过程如下图
使用模板方式创建
https://download.openvz.org/template/precreated/
下载相关的模板
导入相关的镜像
cat centos-6-x86-minimal.tar.gz|docker import - centos6
使用dockerFile创建
# 构建阶段
FROM node
# 指定工作目录
WORKDIR /
# 指定工作端口
EXPOSE 4000
# 安装gitbook
RUN npm install gitbook -g;
RUN npm install gitbook-cli -g;
# 拉取文件
RUN git clone https://github.com/mySoul8012/SE-Basic-knowledge.git
# 进入目录
WORKDIR /SE-Basic-knowledge
# 初始化镜像
RUN gitbook init
CMD ["gitbook", "serve"]
输入构建的镜像
docker image build -t ming:0.1
保存和载入镜像
存出镜像
PS C:\Users\Administrator\Desktop> docker save -o ubuntu.tar ubuntu
PS C:\Users\Administrator\Desktop>
载入镜像
PS C:\Users\Administrator\Desktop> docker load -i ubuntu.tar
Loaded image: ubuntu:latest
PS C:\Users\Administrator\Desktop> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ff7a974b9771 nginx "/docker-entrypoint.…" 12 minutes ago Up 12 minutes 80/tcp fervent_curie
PS C:\Users\Administrator\Desktop> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 54a6eb8d4483 10 minutes ago 132MB
ubuntu latest 74435f89ab78 2 weeks ago 73.9MB
nginx latest 2622e6cca7eb 3 weeks ago 132MB
PS C:\Users\Administrator\Desktop>
上传镜像
上传镜像到docker
PS C:\Users\Administrator\Desktop> docker push test
The push refers to repository [docker.io/library/test]
53d99160caf2: Preparing
f978b9ed3f26: Preparing
9040af41bb66: Preparing
7c7d7f446182: Preparing
d4cf327d8ef5: Preparing
13cb14c2acd3: Waiting
denied: requested access to the resource is denied
PS C:\Users\Administrator\Desktop>
可以看到拒绝,这里先登录账号
docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: melovemingming
Password:
Login Succeeded
再进行文件的上传
docker push melovemingming/nginx
需要注意,上传的镜像格式必须为 用户名/镜像名
查看docker hub 可以看到docker镜像的上传
可以看到docker镜像已经上传
一文了解Docker核心概念和安装配置相关推荐
- Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指。
Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发 ...
- docker 查看镜像_Docker 核心概念、安装、端口映射及常用操作命令,详细到令人发指!...
来自小洋人最HAPPY投稿 一.Docker简介 Docker是开源应用容器引擎,轻量级容器技术. 基于Go语言,并遵循Apache2.0协议开源 Docker可以让开发者打包他们的应用以及依赖包到一 ...
- Flume简介、特点、核心概念及安装
一.什么是flume? flume是一个可分布式日志收集系统,为hadoop相关组件之一. Flume 是可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据源中集中起来存储的工具/服务 ...
- MongoDB基本概念和安装配置
基本概念 MongoDB直接存储JSON. 有了NoSQL数据库之后,可以直接在业务层将数据按照指定的结构进行存储. NO SQL NoSQL 1 数据库 数据库 2 表 集合 3 行 文档 4 列 ...
- Kubernetes 的概念与安装配置补充
Kubernetes 安装与配置补充 标签(空格分隔): kubernetes系列 一:kubernetes的介绍 二:kubernetes的安装配置 三:kubernetes 的 WEB UI 一: ...
- docker 核心概念整理
一.镜像(Image) vs Dockerfile 1.docker在镜像(image)中运行你的代码,而不是Dockerfile,镜像文件就是从Dockerfile编译而得到的不透明资产 2.doc ...
- 【笔记】docker核心概念和使用 docker命令
介绍 在Linux服务器部署一个单体JavaWeb应用,一般会在服务器安装Tomcat.MySql.Redis.JDK等相关环境或软件,安装完软件之后需要进行相关配置,最后把项目打成War包,放在服务 ...
- Nosql之Redis的概念介绍+安装配置+Redis数据库基本操作
文章目录 关系数据库与非关系型数据库介绍 关系数据库 非关系型数据库 非关系型数据库产生背景 Redis介绍 Redis 简介 Redis 优点 Redis安装部署 Redis数据库的基本操作 set ...
- docker私库harbor安装配置
本文章仅作为个人笔记 harbor 使用 参考 安装 docker-compose下载页面 wget https://github.com/docker/compose/releases/downlo ...
最新文章
- java加密 des
- 贴吧html标签,html标签3(转载)
- java和python哪个好就业2020-Python和JAVA的就业前景哪个好点?
- 计算机网络:如何传输一条数据(详解)
- mysql自带客户端连接服务器,客户端连接mysql服务器的指令 mysql -u root -p 详细讲解及使用实例...
- Linq(筛选与排序)
- TokenInsight:BTC新增人气缺乏,多头持仓量持续上升
- 用VB如读取内存地址
- 单片机c语言开发实验心得,单片机实训心得报告【三篇】
- 嵌入式Linux:V3s移植NES游戏,声音,游戏手柄
- 「鸡蛋返生」美国早就在搞了好吧
- 【Python爬虫实战】使用Selenium爬取QQ音乐歌曲及评论信息
- 固定表头和第一列、内容可滚动的table表格
- 【拓扑学知识】3.乘积空间与拓扑基
- --zigbee物联网工程项目(一)
- DataType--类型基础
- 你怎么看待互联网创业的国外问卷调查?
- 线性回归梯度下降py实现
- 河道水面漂浮物识别检测系统 YOLOv7
- 再见Xshell,这款免费开源的终端工具真香~
热门文章
- 【Rpc】基于开源Dubbo分布式RPC服务框架的部署整合
- 挨踢部落故事汇(6):女攻城狮职位晋升记
- 为什么NTFS删除超过4G大文件或数据库文件后FILE RECORD大小表现为0
- (AirWatch 系列之一)企业移动计算的集大成者--Airwatch简介
- Datax将Oracle数据导入ElasticSearch7完成教程
- A Survey on Knowledge Graph-Based Recommender Systems 知识图谱提升推荐系统准确性与可解释性ArXiv 2020
- java对mysql的简单操作的综合运用——登录系统
- MarkdownPad基于语法示例
- Oracle数据库日常管理之数据备份,恢复及迁移 (第五讲 )
- iOS.ObjC.Basic-Knowledge