一基本概念
1. 什么是Docker
...
2. Docker的基本概念
镜像(Image)
是一个只读模板,用来运行Docker容器。
容器(Container)
负责应用程序的运行,包括操作系统、用户添加的文件以及元数据
容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
注:镜像是只读的,容器在启动的时候创建一层可写层作为最上层。
仓库(Repository)
仓库是集中存放镜像文件的场所。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
注:Docker 仓库的概念跟Git类似,注册服务器可以理解为 GitHub 这样的托管服务
二、快速开始
1. 安装
# ubuntucurl -fsSL https://get.docker.com/ | shsudo service docker restart
2. 镜像
获取
# 从仓库注册服务器拉取sudo docker pull ubuntu:14.04# 官方仓库注册服务器,相当于 sudo docker pull registry.hub.docker.com/ubuntu:14.04# 也可使用其他仓库,如: sudo docker pull dl.dockerpool.com:5000/ubuntu:12.04
显示
sudo docker images
运行
sudo docker run -t -i ubuntu:14.04 /bin/bash
修改
# 运行容器bash,通过shell进行操作sudo docker run -t -i ubuntu:14.04 /bin/bash# 提交更新sudo docker commit -m"Added json gem"-a"Docker Newbee"0b2616b0e5a8 ouruser/sinatra:v2
-m: 提交信息
-a: 指定更新的用户信息
0b2616b0e5a8: 容器的 ID
ouruser/sinatra: 仓库名
v2: 仓库tag
创建
通过修改已有image, 具体操作修改中已有
通过Dockerfile来创建
mkdir mydockerimg# docker image的配置文件vim Dockerfile# 创建imagesudo docker build -t testimg .
-t: 指定新的image的名字
.: Dockerfile所在目录
Dockerfile示例
# 这是注释FROM ubuntu:14.04MAINTAINER AIR_CC RUN apt-get -y updateCMDecho"hello-world"ADD myApp /var/wwwEXPOSE80
#: 注释
FROM: 告诉 Docker 使用哪个镜像作为基础
MAINTAINER: 维护者的信息
RUN: 在创建镜像时运行的操作
CMD: 启动容器后运行的程序
ADD: 复制本地文件到镜像
WORKDIR: 设置 dockerfile 命令运行目录
EXPOSE: 对外部开放端口
通过本地文件系统导入
sudo cat ubuntu-14.04-x86_64-minimal.tar.gz | dockerimport- ubuntu:14.04
注:具体镜像可在openva中找
保存与载入
1.保存已有的镜像
sudodockersave-oubuntu_14.04.tarubuntu:14.04
载入镜像
sudodockerload--inputubuntu_14.04.tar# 或者sudodockerload
删除
# 暂停并删除相应的容器sudo docker stop containerNamesudo docker rm containerName# 删除镜像sudo docker rmi imageName
注:删除镜像之前需要先stop & rm相应的container
# 删除所有的containersudo docker stop $(docker ps -a -q)sudo docker rm $(docker ps -a -q)# 删除所有的imagesudo docker rmi $(docker images -q)
2. 容器
容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。
运行
# 运行一下,就终止sudo docker run -tid ubuntu:14.04
run的参数说明
-t: 为container分配一个伪终端(pseudo-tty),并绑定到容器的标准输入上
-i: 让容器的标准输入保持打开
-d: 使容器在后台以守护态(Daemonized)形式运行
终止
使用sudo docker stop 终止;
注:当容器中指定的应用终结时,容器也会终止
sudo docker start -- 启动一个处于终止的容器
sudo docker restart -- 重启一个处于运行态的容器
运行日志
获取 container 中程序输出到 terminal 上的信息docker logs
进入
使用attach
sudo docker run -tid ubuntu:14.04sudo docker attach # ctrl + c: 杀死该 contanier# ctrl + p + ctrl + q: 退出container交互界面
使用nsenter
导出与导入
导出
sudo dockerexport > outputFileName
导入
sudo dockerimport
注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。
删除
sudo docker stopsudo docker rm
注: 删除容器前需先stop*