【docker学习之二】Docker的基本概念
1、Docker的镜像和容器
镜像这个概念比较抽象,不怎么好表达,个人的看法是镜像本质是一系列文件组成,是应用和其运行环境、环境依赖的集合。
那么什么是容器呢? 个人认为容器就是运行在镜像之上,一个个应用的运行实例。
这样描述比较抽象大家估计不是能马上理解,那么可以用一个比喻来形容镜像和容器的概念,那就是程序里的类和对象。
镜像很像程序开发中类的概念,而容器就是一个个对象,一个镜像可以生成许多容器。就好比建筑图纸和建筑物本身的关系,镜像就是图纸而容器就是建筑物本身。这样说应该比较好理解了。
2、从哪里获得镜像
有两种途径一种是下载已经制作好的镜像,分为Docker官方和个人提供,其中Docker官方有个Docker Hub https://hub.docker.com/_/nginx/ 里面有许多官方提供的镜像,国内也有许多公司提供存储个人镜像的服务例如:灵雀云和时速云里面有许多个人提供的镜像源。另外一种是个人根据需要制作的镜像,可以以官方或者其他开发者提供的镜像为蓝本制作镜像,也可以自己编写Dockerfile文件创建镜像。当然你也可以把自己的镜像上传到网上让别人下载使用。
3、镜像常用命令
名称 | 命令 |
说明示例
|
查看镜像列表
|
docker images
|
|
拉取镜像
|
docker pull <镜像名:tag>
|
docker pull php:5.6-fpm
|
删除单个镜像
|
docker rmi <镜像ID> |
docker rmi a34ed26e4a98
删除之前确保此镜像下的容器已经停止和删除
|
删除所有镜像
|
docker rmi $(docker images | grep none | awk '{print $3}' | sort -r)
|
删除之前确保所有容器已经停止和删除
|
构建自己的镜像Dokcerfile
|
docker build -t <镜像名> <Dockerfile路径>
|
docker build -t scofi/php-fpm:5.6 ./php
|
镜像迁移
|
docker save <镜像名> > 宿主机路径
docker load < 宿主机路径
|
docker save mynewimage > /tmp/mynewimage.tar
(把
mynewimage 镜像保存成 tar 文件,我将使用 /tmp 目录保存这个镜像,但是你可以使用 NFS 来共享,使得非常容易的移动完成 tar 文件。)docker save mynewimage > /tmp/mynewimage.tar
把 在你的新的 Docker 实例中运行 |
镜像查找
|
docker search <镜像名>
|
docker search nginx
|
4、容器常用命令
名称
|
命令
|
说明示例
|
查看容器列表
|
docker ps docker ps -a |
正在运行中的容器 所有容器,包含已经停止的 |
启动容器并进行交互
|
docker run -i -t <容器名称> /bin/bash
|
docker run -i -t centos:7 /bin/bash
|
启动容器并且启动守护进程 |
docker run -v /home/docker:/opt -d --name php zjd-php-fpm
|
以守护态运行(加参数-d):docker run -v /home/docker:/opt -d --name php zjd-php-fpm
|
停止容器
|
docker stop <容器ID>
|
docker stop 10c
|
启动容器
|
docker start <容器ID>
|
docker start 10c
|
删除容器 |
docker rm <容器ID>
|
docker rm 10c
|