Intro
Docker 是一个开源的应用容器引擎,基于Go语言,并遵从Apache2.0协议开源。诞生于2013年,dotCloud公司内部的业余项目。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何流行的Linux机器上,实现虚拟化。
容器使用沙箱机制,相互之间不会有接口,容器性能开销极低
Docker是一种轻量级的虚拟机,基于操作系统层面上的虚拟化,直接复用本地主机的操作系统,而传统方式则是在硬件层面实现的
Advantage
- 速度快:Docker容器的启动秒级实现
- 对系统资源的利用率高,一台主机可以同时运行数千个docker容器
- 系统开销小:docker容器除了运行其中的应用外,基本不消耗额外的系统资源,使得应用的性能提高
- 兼容性好:一次创建,任意地方运行(物理机,虚拟机,云端,PC,服务器)
How to use
Docker允许你在容器内运行应用程序
修改~/.docker文件权限
sudo chown "$USER":"$USER" /home/"$USER"/.docker -Rsudo chmod g+rwx "/home/$USER/.docker" -R
运行ubuntu:15.10镜像(不存在时从Docker Hub下载)
docker run ubuntu:15.10 /bin/echo "Hello"
运行交互式容器
# 进入ubuntu:15.10容器
docker run -i -t ubuntu:15.10 /bin/bash
# 查看当前容器系统的版本信息和目录下文件
cat /proc/version
ls
# 退出 ctrl+d
exit
Args:
- -i 允许你对容器内的标准输入(stdin)进行交互
- -t 在容器内指定一个伪终端
后台启动容器
以一个进程的方式运行容器
sudo docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello; sleep 1;done"
# out: 1e372e832bd73b6c5f1707629e59f98b77e51428591b82fffce61a67dc0f63f9
docker ps 查看正在运行的容器
- CONTAINER ID 容器ID
- IMAGE 镜像
- COMMAND 启动容器时运行的命令
- CREATED 创建时间
- STATUS 容器状态
- created
- restarting
- running/Up
- removing
- paused
- exited
- dead
- PORTS 端口信息和使用的连接类型(tcp\udp)
- NAMES 自动分配的容器名称
docker logs <CONTAINER ID> 查看容器内的标准输出
docker logs 1e372e832bd7
停止容器
docker stop <CONTAINER ID>
Docker Client
# 查看客户端基本使用
docker
docker <command> --help
# 从云端库中获取镜像 (本地没有镜像)
docker pull ubuntu
# 启动容器
docker run -it ubuntu /bin/bash
# 退出 ctrl+d
exit
# 显示在运行容器 -a/--all
docker ps -a
# 启动/停止
docker start/stop/restart <ID>
# 后台运行 -d 表明不进入交互式, 打印ID
docker run -itd --name ubuntu-test ubuntu /bin/bash
# 进入容器, 推荐exec,因为退出时不会导致容器停止
docker exec -it <id> /bin/bash
docker attach <id>
# 导出/导入容器
docker export 1e560fca3906 > ./docker/ubuntu.tar
# 将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1
cat ./docker/ubuntu.tar | docker import - test/ubuntu:v1
# URL 导入
docker import http://example.com/exampleimage.tgz example/imagerepo
