Docker学习之2——镜像
镜像(Images)
镜像是Docker的三大核心之一,类似于虚拟机,作用和虚拟机是一样的,唯独是组成部分会有些区别。简单的说如果我们想启动一个容器就必须要有镜像。docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,docker会尝试先从默认镜像仓库下载(Docker Hub),用户也可以通过配置,使用自定义的镜像仓库。
镜像文件存储结构?
docker相关文件存放在:/var/lib/docker目录下
/var/lib/docker
├── builder
├── buildkit
├── containerd
├── containers
├── image
├── network
├── overlay2
├── plugins
├── runtimes
├── swarm
├── tmp
├── trust
└── volumes
国内doceker仓库地址
vim /etc/docker/daemon.json {
"registry-mirrors":[ "https://registry.docker-cn.com" ]
}
#获取镜像
docker pull 【镜像名称】 [root@controller ~]# docker pull ubuntu
Using default tag: latest
Trying to pull repository docker.io/library/ubuntu ...
latest: Pulling from docker.io/library/ubuntu
660c48dd555d: Pull complete
4c7380416e78: Pull complete
421e436b5f80: Pull complete
e4ce6c3651b3: Pull complete
be588e74bd34: Pull complete
Digest: sha256:7c67a2206d3c04703e5c23518707bdd4916c057562dd51c74b99b2ba26af0f79 #查看镜像
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu latest 20c44cd7596f 3 days ago 122.8 MB
字段解释:
REPOSITORY 来自哪个仓库
TAG 镜像标签信息 (别名的作用)
IMAGE ID 镜像ID号(唯一)
CREATED 创建时间
SIZE 大小
#获取一个ubuntu 14.04版本
[root@controller ~]# docker pull ubuntu: 14.04
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/ubuntu latest 20c44cd7596f 3 days ago 122.8 MB
docker.io/ubuntu 14.04 d6ed29ffda6b 3 days ago 221 MB
我们可以看到这两个images来自同一个仓库,TAG标签不一样标记不同的镜像,使用docker tag命令可以为本地镜像添加新的标签。 #查看镜像详细信息
docker inspect 【IMAGE ID】
[root@controller ~]# docker inspect 20c44cd7596f
[
{
"Id": "sha256:20c44cd7596ff4807aef84273c99588d22749e2a7e15a7545ac96347baa65eda",
"RepoTags": [
"docker.io/ubuntu:latest"
],
...
-f参数指定查询:
[root@controller ~]# docker inspect -f {{".RepoTags"}} 20c44cd7596f
[docker.io/ubuntu:latest] #搜索镜像
[root@controller ~]# docker search nginx
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/nginx Official build of Nginx. 7317 [OK]
docker.io docker.io/jwilder/nginx-proxy Automated Nginx reverse proxy for docker c... 1174 [OK]
docker.io docker.io/richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable ... 475 [OK] #删除镜像
docker rmi 【标签或ID】
[root@controller ~]# docker rmi ubuntu:latest
Untagged: ubuntu:latest #运行一个容器
[root@controller ~]# docker run ubuntu echo 'hello I am ubuntu #查看存在的所有容器
[root@controller ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2bb8a93f5d34 ubuntu "echo 'hello I am ubu" About a minute ago Exited (0) About a minute ago gigantic_heyrovsky
#这时删除镜像出现错误
[root@controller ~]# docker rmi ubuntu
Error response from daemon: conflict: unable to remove repository reference "ubuntu" (must force) - container 2bb8a93f5d34 is using its referenced image 20c44cd7596f
#强制删除加-f
[root@controller ~]# docker rmi -f ubuntu #创建镜像
创建镜像有三种方法:
1.已有镜像创建
2.本地模板导入
3.Dockerfile创建 1.已有镜像创建
Usage: docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
Create a new image from a container's changes
Options:
-a, --author string
-c, --change value
--help
-m, --message string
-p, --pause #首先启动一个镜像
[root@controller ~]# docker run -ti ubuntu:14.04 /bin/bash
root@c5439518dcbe:/# touch test
root@c5439518dcbe:/# exit
记住容器的ID:c5439518dcbe #创建一个新的镜像
[root@controller ~]# docker commit -m "added a new file" -a "Docker newbee" c5439518dcbe test
sha256:4efd37e84d4998fbc7cff55d21fa360fdd60f1d7319050e70512754bf2851b7f
[root@controller ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest 4efd37e84d49 18 seconds ago 221 MB #模板下载:https://download.openvz.org/template/precreated/
[root@controller ~]# cat ubuntu-12.04-x86-minimal.tar.gz |docker import - ubuntu:12.04
sha256:8d6161cea96c6b2f2ef39be5b2370e38cb003e8f3b5c2d3f960e0e7d37733d41 #导出镜像到本地
[root@controller ~]# docker save -o ubuntu_12.04.tar ubuntu:12.04
#从本地导入镜像
[root@controller ~]# docker load --input ubuntu_12.04.tar
或
[root@controller ~]# docker load < ubuntu_12.04.tar #上传镜像(默认上传到Docker hub)
[root@controller ~]# docker push --help
Usage: docker push [OPTIONS] NAME[:TAG]
[root@controller ~]# docker tag test:latest user/test:latest
[root@controller ~]# docker push user/test:latest
小结:
镜像是使用Docker的前提,因此可以结合公司的生产环境制作好镜像,方便使用。
Docker学习之2——镜像的更多相关文章
- Docker学习笔记之镜像与容器
0x00 概述 镜像和容器作为 Docker 里最基础的概念,我们很有必要了解 Docker 对它们的很多定义以及其他与它们有关的知识.在这一小节里,我们就专门针对镜像与容器两个概念展开,细致的梳理与 ...
- docker学习笔记2--对镜像/容器的命令操作
Docker启动一个Centos镜像 我们下载完成一个Centos镜像之后,开始启动 docker run -d -i -t <imageID> /bin/bash 这样就能启动一个一直停 ...
- Docker学习笔记:镜像、容器、数据卷
核心概念 镜像:一个只读的模板,类似虚拟机的镜像. 容器:可以理解为镜像的一个运行实例.运行时类似于沙箱,多个容器互相独立. 仓库:存放镜像文件的地方. 镜像 命令表格 命令 解释 选项 docker ...
- docker学习笔记-常用镜像相关命令
docker images # 1.使用 [root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...
- Docker学习笔记--2 镜像的创建
如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...
- docker学习之二镜像创建
继上一篇docker入门之后写一点使用的经验. 通过命令:docker run -it REPOSITORY或IMAGE ID 注:-it后面跟的字段可以通过下面指令获得 创建运行的容器,会进入一 ...
- Docker学习笔记-CentOS7镜像
前言: 环境:centos7.5 64 位 正文: 第一步:下载centos7镜像 docker pull centos 第二步:建立centos7的容器 sudo docker run --priv ...
- Docker学习(7) 构建镜像
构建docker镜像 1 构建镜像的两种方式 1 通过容器构建镜像 2 通过Dockerfile构建镜像
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
随机推荐
- Idea搭建SpringMVC框架(初次接触)
公司转Java开发,做的第一个项目是SpringMVC框架,因为底层是同事封装,等完成整个项目,对SpringMVC框架的搭建还不是很了解,所以抽时间不忙的时候自己搭建了一个SpringMVC框架. ...
- 计算机爱好者协会技术贴markdown第四期
首先先让爱酱用CSDN自带的数学公式方法来闪瞎大家的钛合金狗眼: 有没有感觉到Markdown的强大!!!!! ## KaTeX数学公式 您可以使用渲染LaTeX数学表达式 [KaTeX](https ...
- Hibernate框架:CRM练习--保存客户
crm:customer ralation manager 客户关系管理系统 一.准备 1.创建web项目 2.导包 最终为: 3.引入静态页面 将文件复制放入项目的WebContent目录下面: 4 ...
- Final——无线网络密码破解——WPA/WPA2
Final--无线网络密码破解--WPA/WPA2 20154305 齐帅 ↓ ↓ ↓ * # % & 郑 重 声 明 & % # * ↓ ↓ ↓ 本实验教程用于探索无线路由安全漏洞, ...
- spring BeanWrapperImpl方便的嵌套属性(list)操作
beans 包主要提供了接口和类用于处理java beans. 其中最主要的接口是BeanWrapper: Spring 的中心接口,用于访问javabeans 的低层操作.默认实现为 ...
- 前端 javascript
---恢复内容开始--- JavaScript JavaScript:是一门编译型的语言,比python语言还要弱类型的语言 JavaScript 分为三个部分:Ecmascript.dom.bom ...
- tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案
tensorflow安装过程cpu版-(windows10环境下)---亲试可行方案 一, 前言:本次安装tensorflow是基于Python的,安装Python的过程不做说明 二, 安装环境: ...
- Python Memo 赋值与ID (Assignment & id())
利用Python内置函数id()找出内部地址,探讨赋值与内建地址. id()的官方解释:this is the address of the object in memory 那么 a =1 是什么意 ...
- 使用Spring+MySql实现读写分离(三)主从复制
mysql 主(master) 从(slave) 复制的原理: 1. master将数据改变记录到二进制日志(binary log)中,也即是配置文件log-bin指定的文件(这些记录叫 ...
- SSAS 内部错误:操作未能成功
错误 -1056964601 : 内部错误: 操作未能成功,已终止. HY0008 是数据源的问题,设置数据源的虚拟连接就可以了