03docker镜像
docker的镜像操作
Union文件系统是Docker镜像的基础。
UnionFS(联合文件系统):Union文件系统是一种分层,轻量级并且高性能的文件系统。它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同的目录挂载到同一个虚拟文件系统下。
最上层是可写层。
1:下载镜像:格式 docker [image] pull [仓库地址]/NAME:TAG
ubuntu@ubuntu:~$ docker pull registry.hub.docker.com/ubuntu:18.04 #下载ubuntu镜像,标签为18.04
ubuntu@ubuntu:~$ docker pull centos:7.2.1511 #下载一个centos镜像
2:查看本地仓库的镜像
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 12 days ago 64.2MB
ubuntu latest 775349758637 12 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
#latest标签的版本是不稳定的,会随着版本更新而变化,建议使用稳定带标签的版本
#查看子命令:man docker-images
3:使用镜像创建一个容器
ubuntu@ubuntu:~$ docker run -ti 775349758637 /bin/bash
root@e6cce6710d88:/#
ubuntu@ubuntu:~$ docker run -it ubuntu:18.04 bash
root@fc41542c62b5:/#
4;使用tag命令为本地镜像添加别名
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu latest 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
ubuntu@ubuntu:~$ docker tag ubuntu:18.04 myubuntu:18.04 # 添加别名
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
myubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
ubuntu latest 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
#别名IMAGE ID是一样的,指向同一个镜像
5:使用inspect命令查看详细信息docker [image] inspect 镜像
ubuntu@ubuntu:~$ docker inspect ubuntu:18.04
[
{
"Id": "sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c",
"RepoTags": [
"myubuntu:18.04",
"ubuntu:18.04",
"ubuntu:latest"
],
"RepoDigests": [
"ubuntu@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d"
],
"Parent": "",
"Comment": "",
"Created": "2019-10-31T22:20:37.714423666Z",
"Container": "4df7a03525342ee760076ade1c80bbdd041f236654f624ca581ada54310a1574",
"ContainerConfig": {
"Hostname": "4df7a0352534",
"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"
],
...
-f:查看某一个特定字段的内容
ubuntu@ubuntu:~$ docker inspect -f {{".Id"}} ubuntu:18.04
sha256:775349758637aff77bf85e2ff0597e86e3e859183ef0baba8b3e8fc8d3cba51c
ubuntu@ubuntu:~$ docker inspect -f='{{ .NetworkSettings.Networks.bridge.IPAddress }}' 92c
172.17.0.2
ubuntu@ubuntu:~$ docker inspect --format {{".NetworkSettings.Networks.bridge.IPAddress"}} 92c #不要有空格
172.17.0.2
#注意格式-f{{.xxxx}}
6:使用history查看镜像历史
ubuntu@ubuntu:~$ docker history --no-trunc ubuntu:18.04
7:搜寻镜像
查看帮助文档 man docker-search
ubuntu@ubuntu:~$ docker search --filter=stars=3 nginx
8.删除镜像docker rmi IMAGe[IMAGE...]
1:删除自定义标签myubuntu镜像
ubuntu@ubuntu:~$ docker rmi myubuntu:18.04
Untagged: myubuntu:18.04
#同一镜像拥有多个标签,只删除指定的标签
2:查看本机所有存在的容器
ubuntu@ubuntu:~$ docker ps ubuntu@ubuntu:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc41542c62b5 775349758637 "bash" 3 hours ago Up 3 hours sleepy_roentgen
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc41542c62b5 775349758637 "bash" 3 hours ago Up 3 hours sleepy_roentgen
3:无法删除正在运行的镜像
ubuntu@ubuntu:~$ docker rmi ubuntu:latest
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - container fc41542c62b5 is using its referenced image 775349758637
4:-f参数强制删除正在运行的容器(不推荐使用)
ubuntu@ubuntu:~$ docker rmi -f ubuntu:latest
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:6e9f67fa63b0323e9a1e587fd71c561ba48a034504fb804fd26fd8800039835d
9:清理docker运行产生的临时镜像文件
ubuntu@ubuntu:~$ docker image prune -f #强制删除遗留的临时镜像文件层
Total reclaimed space: 0B
# -a:删除所有无用的镜像
10:创建镜像
方法1:基于已有容器创建
格式:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :作者信息
-c:提交时执行的Dockerfile文件,包括CMD|ENV|LABEL等等
-m:提交的信息,评论解释
-P:提交时候暂停容器运行
案例:
1:启动一个镜像,并在里面创建一个文件
ubuntu@ubuntu:~$ docker run -it ubuntu:18.04 /bin/bash
root@f20664a41969:/# pwd
/
root@f20664a41969:/# touch test.txt
root@f20664a41969:/# exit
exit
#记住容器ID:f20664a41969
2:提交一个新的镜像
ubuntu@ubuntu:~$ docker commit -m "Add a new file test.txt" -a "author_007" f20664a41969 test:0.1
sha256:55f6618d9cdf8c56a1d80b0f0926341da231613a4e7646f47b0b7ab47c5eb21f #新的镜像id
3:查看当前镜像
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 55f6618d9cdf About a minute ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
4:运行镜像test:0.1查看是否有test文件
ubuntu@ubuntu:~$ docker run -it test:0.1 /bin/bash
root@acfd9348cffe:/# ls
bin dev home lib64 mnt proc run srv test.txt usr
boot etc lib media opt root sbin sys tmp var
方法2:基于本地模板导入
方法3:基于Dockerfile创建
11:存出和载入镜像
1:导出镜像到本地文件
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 55f6618d9cdf 10 minutes ago 64.2MB
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
hello-world latest fce289e99eb9 10 months ago 1.84kB
ubuntu@ubuntu:~$ docker save -o ubuntu_18.04.tar ubuntu:18.04 #导出镜像
ubuntu@ubuntu:~$ ls
apt-transport-https linux-image-extra-5.3.0-19-generic snap
ca-certificates Music Templates
curl new_ubuntu.txt ubuntu_18.04.tar
2:将导出的tar文件再导入本地镜像库
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
ubuntu@ubuntu:~$ docker load -i ubuntu_18.04.tar #导入镜像
Loaded image: ubuntu:18.04
ubuntu@ubuntu:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 18.04 775349758637 13 days ago 64.2MB
centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
03docker镜像的更多相关文章
- bayaim——听课笔记_01.Docker基础应用 10课.txt
===========2019年8月5日18:39:06====================10.20.100.21rootbayaim ==========01-Docker介绍======== ...
- 03-docker入门-创建 docker 镜像
方法1:从运行的容器创建方法2:编写 DockFile 文件创建 方法1: 打包镜像 docker commit -m "Test a change" 610 ubuntu:tes ...
- 03--Docker 容器和镜像常用命令
一.帮助命令 docker version docker info docker --help =====================镜像命令=========================== ...
- NuGet镜像上线试运行
为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- Android SDK 在线更新镜像服务器资源
本文转自:http://blog.kuoruan.com/24.html.感谢原作者. 什么是Android SDK SDK:(software development kit)软件开发工具包.被软件 ...
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
- Windows Server 2012 磁盘管理之 简单卷、跨区卷、带区卷、镜像卷和RAID-5卷
今天给客户配置故障转移群集,在Windows Server 2012 R2的系统上,通过iSCSI连接上DELL的SAN存储后,在磁盘管理里面发现可以新建 简单卷.跨区卷.带区卷.镜像卷.RAID-5 ...
- 如何用Dockerfile创建镜像
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p/5181222.html 创建镜像的目的 首先说DockerHub或其它一些镜像仓库已经提供了够多的镜像,有 ...
随机推荐
- sql语句中where 1=1和 0=1 的作用
sql where 1=1和 0=1 的作用 where 1=1; 这个条件始终为True,在不定数量查询条件情况下,1=1可以很方便的规范语句. 一.不用where 1=1 在多条件查询中的 ...
- PostgreSQL 当月最后一天的工作日 , 计算日期是星期几
可以用pg自带函数select extract(dow from current_date),之所以没用主要是展示一下通过数学方法计算日期的原理. drop function if exists ge ...
- .net reflector
https://www.red-gate.com/dynamic/products/dotnet-development/reflector/download https://github.com/s ...
- dubbo服务provider方打印警告日志,getDeserializer - Hessian/Burla 'xxx' is an unknown class
2018-09-12 16:16:44 WARN [New I/O worker #1] SerializerFactory.java:652 getDeserializer - Hessian/Bu ...
- Activity的生命周期是谁调用的?
我们知道Activity的生命周期包括onCreate.onStart.onResume.onRestart.onStop.onDestory.onSaveInstanceState.onRestor ...
- UML建模综述
一.概念 UML-Unified Model Language 统一建模语言,又称标准建模语言.是用来对软件密集系统进行可视化建模的一种语言.作为一个支持模型化和软件系统开发的图形化语言,UML为软件 ...
- vsCode安装todo插件
使用过IDEA或者WebStrom的阿媛应该都知道他们都有一个TODO功能,方便我们跟踪注释,或者说是我们在项目代码里面所做的标记:但是如果你现在在使用vsCode,你会发现,没有TODO功能,幸好, ...
- [go]包管理
vendor方式 //包管理发展 go get(无版本概念) -> vendor(godep)(无版本概念) -> go modules go get github.com/tools/g ...
- 【Makefile】Makefile中的常用函数简介
1. subst函数 格式:$(subst <from>, <to>, <text>)功能:把字串<text>中的<from>字符串替换成& ...
- react中回车enter事件处理
对于常见的搜索需求业务场景,用户输入完成后,点击enter事件请求数据,要求不提交页面,实现数据局部更新,这需要用到react中的表单Forms. 处理方法: (1)html书写 form标签中去掉a ...