docker基本概念
镜像(Image)
容器(Container)
仓库(Repository)
Docker镜像
Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
Docker 容器
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容
器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学Docker 时常常会把容器和虚拟机搞混。
Docker Registry
镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。
一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
docker安装
我虚拟机系统是centos7.1,步骤如下:
yum update cat >/etc/yum.repos.d/docker.repo <<EOF [dockerrepo] name=Docker Repository baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/ enabled=1 gpgcheck=1 gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7 EOF yum -y install docker
docker 指定国内镜像仓库
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s service docker restart
docker常用命令
1.docker version(显示 Docker 版本信息)
2.docker info(显示 Docker 系统信息,包括镜像和容器数)
3.docker search(从 Docker Hub 中搜索符合条件的镜像)
使用:docker search centos
参数:
-f --filter filter 过滤展示信息
例子:docker search --filter stars=30 centos
--no-trunc 可显示完整的镜像描述
4.docker pull(从 Docker Hub 中拉取或者更新指定镜像)
使用:docker pull centos:latest
参数:
-a 拉取所有 tagged 镜像 。
5.docker images(列出本地所有镜像)
使用:docker images
参数:
-a 列出所有镜像(含过程镜像)
-f 过滤镜像,如: docker images -f dangling=true 只列出满足dangling=true 条件的镜像,一般可以展示的镜像
--no-trunc 可显示完整的镜像ID;
-q 仅列出镜像ID。
6.docker ps(列出所有运行中容器)
使用:docker ps -a
参数:
-a 列出所有容器(含沉睡镜像);
-f 过滤容器,如: docker ps -a -f exited=0
--no-trunc 显示完整的容器ID;
-q 仅列出容器ID;
7.docker rmi(从本地移除一个或多个指定的镜像,默认该镜像必须不能被使用)
参数:
-f 强行移除该镜像,即使其正被使用;
8.docker rm(删除一个容器)
参数:
-f 强行移除该容器,即使其正在运行
-l 移除容器间的网络连接,而非容器本身;
-v 移除与容器关联的空间。
9.docker start|stop|restart(启动、停止和重启一个或多个指定容器。)
10.docker kill(杀死一个或多个指定容器进程。)
11.docker save(将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。)
使用:docker save mynginx > /root/mynginx.tar
12.docker load(从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。)
使用:docker load < /root/mynginx.tar
13.docker export(将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。)
使用:docker export nginx-01 > export.tar
14.docker import(从归档文件(支持远程文件)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。)
使用:docker import < export.tar
15.docker push(将镜像推送至远程仓库,默认为 Docker Hub 。)
16.docker logs(获取容器运行时的输出日志)
参数:
-f 跟踪容器日志的最近更新;
-t 显示容器日志的时间戳;
--tail="10" 仅列出最新10条容器日志。
17.docker run(启动一个容器,在其中运行指定命令。最常用命令,没有之一)
使用:
1.docker run -d --name mynginx -p 80:80 -v /root:/wwwroot mynginx
2.docker run -it mynginx /bin/bash
参数:
-a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;
-d 后台运行容器,并返回容器ID;
-i 以交互模式运行容器,通常与 -t 同时使用;
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--name="nginx-lb" 为容器指定一个名称;
-e username="ritchie" 设置环境变量;
-p 宿主端口:容器端口 设置宿主容器端口映射
-v 宿主路径:容器路径 设置宿主容器数据目录映射
--net="bridge" 指定容器的网络连接类型,支持 bridge / host / none
18.docker exec(在运行的容器中执行命令)
使用:docker exec -it mynginx /bin/bash
19.docker commit(提交修改)
此命令会在后面详细使用
转载于:https://blog.51cto.com/chinalx1/1944703