ralph的云计算之路--- docker篇章02--Docker 镜像管理

Docker 镜像管理

  • 镜像:Docker 镜像是一个不包含 Linux 内核而又精简的 Linux 操作系统。
  • Docker Hub 是由 Docker 公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具默认从这个公共镜像库下载镜像。

链接: https://hub.docker.com/explore.

  • 默认是国外的源,下载会慢,建议配置国内镜像仓库: 配置 docker 镜像下载加速源(默认从 hub.docker.com拉取下载很慢,我们可以配置国内的加速 daocloud,镜像和官方同步,但是服务器在国内,这样下载镜像速度会很快)

链接:https://www.daocloud.io/mirror
配置加速

[root@localhost ~]# curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"],}
Success.
You need to restart docker to take effect: sudo systemctl restart docker 

[root@localhost ~]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
#配置json文件 并重启服务
[root@localhost ~]# systemctl restart docker

ralph的云计算之路--- docker篇章02--Docker 镜像管理_第1张图片
镜像不是一个单一的文件,而是有多层构成。我们可以通过 docker history 查看镜像中各层内容及大小,每层对应着 Dockerfile 中的一条指令。Docker镜像默认存储在/var/lib/docker/中。 容器其实是在镜像的最上面加了一层读写层,在运行容器里做的任何文件改动,都会写到这个读写层。如果容器删除了,最上面的读写层也就删除了,改动也就丢失了。 Docker 使用存储驱动管理镜像每层内容及可读写层的容器层。
载下载的时候,发现是分层的!!!!!
ralph的云计算之路--- docker篇章02--Docker 镜像管理_第2张图片

docker 镜像管理命令

[root@docker ~]# docker image
ls 列出镜像
build 构建镜像来自 Dockerfile
history 查看镜像历史
inspect 显示一个或多个镜像详细信息
pull 从镜像仓库拉取镜像
push 推送一个镜像到镜像仓库
rm 移除一个或多个镜像
prune 移除未使用的镜像。没有被标记或被任何容器引用的。
Tag 创建一个引用源镜像标记目标镜像
export 导出容器文件系统到 tar 归档文件
import 导入容器文件系统 tar 归档文件创建镜像
save 保存一个或多个镜像到一个 tar 归档文件
load 加载镜像来自 tar 归档或标准输入

搜索 Docker 镜像

[root@localhost ~]# docker search centos   <--- 查看centos的镜像
INDEX       NAME(名称)                             DESCRIPTION (描述)                                STARS(下载次数)OFFICIAL(是否为官方)AUTOMATED(自动化)
docker.io   docker.io/centos                             The official build of CentOS.                   5573      [OK]       
docker.io   docker.io/ansible/centos7-ansible            Ansible on Centos7                              123                  [OK]
docker.io   docker.io/jdeathe/centos-ssh                 OpenSSH / Supervisor / EPEL/IUS/SCL Repos ...   112                  [OK]
docker.io   docker.io/consol/centos-xfce-vnc             Centos container with "headless" VNC sessi...   99                   [OK]
docker.io   docker.io/centos/mysql-57-centos7            MySQL 5.7 SQL database server                   63                   
docker.io   docker.io/imagine10255/centos6-lnmp-php56    centos6-lnmp-php56                              57                   [OK]
docker.io   docker.io/tutum/centos                       Simple CentOS docker image with SSH access      45                   
docker.io   docker.io/centos/postgresql-96-centos7       PostgreSQL is an advanced Object-Relationa...   39                   
docker.io   docker.io/kinogmt/centos-ssh                 CentOS with SSH                                 29                   [OK]
docker.io   docker.io/pivotaldata/centos-gpdb-dev        CentOS image for GPDB development. Tag nam...   10                   
docker.io   docker.io/nathonfowlie/centos-jre            Latest CentOS image with the JRE pre-insta...   8                    [OK]
docker.io   docker.io/drecom/centos-ruby                 centos ruby                                     6                    [OK]
docker.io   docker.io/darksheer/centos                   Base Centos Image -- Updated hourly             3                    [OK]
docker.io   docker.io/mamohr/centos-java                 Oracle Java 8 Docker image based on Centos 7    3                    [OK]
docker.io   docker.io/pivotaldata/centos                 Base centos, freshened up a little with a ...   3                    
docker.io   docker.io/miko2u/centos6                     CentOS6 日本語環境                                   2                    [OK]
docker.io   docker.io/pivotaldata/centos-gcc-toolchain   CentOS with a toolchain, but unaffiliated ...   2                    
docker.io   docker.io/pivotaldata/centos-mingw           Using the mingw toolchain to cross-compile...   2                    
docker.io   docker.io/blacklabelops/centos               CentOS Base Image! Built and Updates Daily!     1                    [OK]
docker.io   docker.io/indigo/centos-maven                Vanilla CentOS 7 with Oracle Java Developm...   1                    [OK]
docker.io   docker.io/mcnaughton/centos-base             centos base image                               1                    [OK]
docker.io   docker.io/fortinj66/centos7-s2i-nodejs       based off of ryanj/centos7-s2i-nodejs.  Bi...   0                    
docker.io   docker.io/pivotaldata/centos6.8-dev          CentosOS 6.8 image for GPDB development         0                    
docker.io   docker.io/pivotaldata/centos7-dev            CentosOS 7 image for GPDB development           0                    
docker.io   docker.io/smartentry/centos                  centos with smartentry                          0                    [OK]

获取 centos 镜像

[root@docker ~]# docker pull docker.io/centos
默认使用docker.io 可以不写

查看 docker 镜像

[root@localhost ~]# docker images  #也可以写成docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/nginx     latest              ab56bba91343        11 days ago         126 MB
docker.io/centos    latest              67fa590cfc1c        4 weeks ago         202 MB

镜像的 ID 唯一标识了镜像,如果 ID 相同,说明是同一镜像。
TAG 信息来区分不同发行版本,如果不指定具体标记,默认使用 latest 标记信息。
若是指定版本号 可以是用:

docker pull nginx:1.12

镜像创建一个容器

[root@localhost ~]# docker run -i -t docker.io/centos
[root@76a676d9fd40 /]# 

-i交互式 -t伪终端
宿主机和容器的之间的IP是桥接关系

删除 Docker 镜像

如果要移除本地的镜像,可以使用 docker rmi 命令(在删除镜像之前先用docker rm 删除依赖于这个镜像的所有容器 docker ps -a)。注意 docker rm 命令是移除容器。
[root@docker ~]# docker rmi imageID #删除 docker 镜像
删除容器
删除容器删除镜像
ralph的云计算之路--- docker篇章02--Docker 镜像管理_第3张图片

导出/导入 Docker 镜像

在这里插入图片描述#导出 docker 镜像至本地
可以使用 docker load 从本地文件中导入到本地 docker 镜像库
ralph的云计算之路--- docker篇章02--Docker 镜像管理_第4张图片

保存虚机机的修改

在这里插入图片描述将76e2ef67bd36生成新的镜像

[root@localhost ~]# docker commit 76e2ef67bd36 ralph/nginx
sha256:8eed31b6faa7186fb2a403b9b3852776571ab53c648fef185070a3117789e9bb
[root@localhost ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
76e2ef67bd36        docker.io/nginx     "/bin/bash"         About a minute ago   Up About a minute   80/tcp              eager_volhard
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ralph/nginx         latest              8eed31b6faa7        9 seconds ago       126 MB
docker.io/nginx     latest              ab56bba91343        11 days ago         126 MB
docker.io/centos    latest              67fa590cfc1c        4 weeks ago         202 MB

//启动新镜像

[root@localhost ~]# docker run -it ralph/nginx /bin/bash
root@5f4b5d05a5c6:/# 

建立 Docker images

创建镜像有很多方法,官方的推荐是 pull 一个。 这里推荐一个办法就是从一个文件系统import 一个镜像,下载了一个 centos-7-x86_64-minimal.tar.gz 的镜像

[root@zx ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos
[root@zx ~]# docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
centos latest 98e5d1fdfc0f 55 seconds
ago 415MB

PS:启用一个容器 时候 最后要加一个命令 去执行存活!
默认时候退出就销毁了容器,如果要退出不销毁的话。需要按ctrl+q+p
即可!

你可能感兴趣的:(docker,docker)