什么是容器?
一种虚拟化方案
操作系统级别的虚拟化
只能运行相同或者相似内核的操作系统
依赖于linux内核特性:Namespace和Cgroups(Control Group)
什么是docker?
将应用程序自动部署到容器
go语言开源引擎
Docker的特点
提供简单轻量的建模方式
职责的逻辑分离
快速高效的开发生命周期
鼓励使用面向服务的架构
Docker的基本组成
-
Docker Client 客户端
-
Docker Daemon 守护进程
-
Docker Image 镜像
-
Docker Container 容器
-
Docker Registry 仓库
安装前检查:
-
内核版本
-
-
检查Device Mapper
-
ls -l /sys/class/misc/device-mapper
docker的第一个容器
$ docker run ubuntu:15.10 /bin/echo ‘hello world’ # docker: Docker 的二进制文件 # run:与前面的 docker 组合来运行一个容器 # Ubuntu:15.10指定要运行的镜像,Docker首先从本地主机上查找镜像是否存在,如果不存在,Docker 就会从镜像仓库 Docker Hub 下载公共镜像。 # /bin/echo ‘hello world’ 在启动的容器里执行的命令
启动容器
docker run ubuntu echo 'hello world'
运行交互式容器
docker run -i -t ubuntu:16.04 /bin/bash
# -i --interactive=true|false 默认是false 允许你对容器内的标准输入 (STDIN) 进行交互。
# -t --tty=true|false 在新容器内指定一个伪终端或终端。
启动容器(后台模式)
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63 # 容器ID
# -d 后台运行
在容器内使用docker logs命令,查看容器内的标准输出
docker logs 容器id
查看容器
docker ps
# 查看运行的容器
docker ps -a
# 查看所有容器
docker ps -l
# 查看最近容器
停止容器
docker stop 容器id
进入运行中的后台容器
docker exec -it 容器id bash
或者
docker attach 容器id
导出容器
docker container ls -a
docker export 76a23azsd2 > ubuntu.tar
导入容器快照
可以使用 docker import
从容器快照文件中再导入为镜像
cat ubuntu.tar | docker import - test/ubuntu:v1.0
删除容器
docker rm 容器id
# 清除所有处于终止状态的容器
docker container prune