Docker架构
- 镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。
- 容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
- 仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。
Docker 使用客户端-服务器(C/S)架构模式,使用远程API来管理和创建Docker容器
Docker 容器通过 Docker 镜像来创建。
Linux系统启动过程
内核指导:当计算机打开电源后,BIOS开机自检,BIOS设置的启动设备时用来启动系统。操作系统接管硬件后,首先读入/boot目录下的内核文件
Docker允许在容器中运行应用程序,使用docker run 命令来在容器内运行一个应用程序。
1. Docker命令 查看 Docker 客户端的所有命令选项
runoob@runoob:~# docker
2. docker command --help 更深入的了解指定的 Docker 命令使用方法。
runoob@runoob:~# docker 命令名称 --help
3. Docker 以 ubuntu15.10 镜像创建一个新容器,然后在容器里执行 bin/echo "Hello world",然后输出结果。
runoob@runoob:~$ docker run ubuntu:15.10 /bin/echo "Hello world"
Hello world
4. docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力
runoob@runoob:~$ docker run -i -t ubuntu:15.10 /bin/bash root@0123ce188bd8:/#
5. 通过运行 exit 命令或者使用 CTRL+D 来退出容器。
root@0123ce188bd8:/# exit exit root@runoob:~#
6. docker ps 查看正在运行的容器
runoob@runoob:~$ docker ps
CONTAINER ID IMAGE COMMAND ... 5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…"
CONTAINER ID: 容器 ID。 IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。 CREATED: 容器的创建时间。
STATUS: 容器状态-- ① created(已创建) ②restarting(重启中) ③running 或 Up(运行中) ④removing(迁移中) ⑤ paused(暂停) ⑥ exited(停止) ⑦dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。
7. docker logs 容器ID 查看容器内的标准输出
runoob@runoob:~$ docker logs 2b1b7a428627
8. docker stop 容器ID 命令停止容器
9. 查看所有的容器命令docker ps -a
runoob@runoob:~$ docker ps
10. 启动已经停止的容器
docker start /restart 容器ID
11. 后台运行docker服务 -d参数
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
12. 在使用 -d参数后,容器启动后会进入后台,
通过docker attach 进入容器
13. docker exec 命令 推出容器终端,但不会使容器终止
docker exec -it 243c32535da7 /bin/bash
14. 导出某个容器 docker export 容器ID 本地文件目录
$ docker export 1e560fca3906 > ubuntu.tar
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
15. 导入容器快照 docker import
将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
或者通过指定 URL 或者某个目录来导入
$ docker import http://example.com/exampleimage.tgz example/imagerepo
16. 删除容器 docker rm
$ docker rm -f 1e560fca3906 -----删除指定容器号的容器
$ docker container prune -----------清理掉所有处于终止状态的容器
查看WEB应用容器
1. docker ps 查看正在运行的容器 ---同上第九点
web应用容器有一个多出的信息 ports 可显示端口信息
2. -p 参数设置不一样的端口
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
3. docker port 查看指定ID容器的某个确定端口映射到宿主机的端口号
runoob@runoob:~$ docker port bf08b7f2cd89(容器ID)
5000/tcp -> 0.0.0.0:5000
runoob@runoob:~$ docker port wizardly_chandrasekhar(容器名)
5000/tcp -> 0.0.0.0:5000
4. 查看web应用程序日志 docker log -f 参数可以展示标准内容输出
runoob@runoob:~$ docker logs -f bf08b7f2cd89
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -
192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -
5. 查看web应用程序容器的进程 docker top 容器名
runoob@runoob:~$ docker top wizardly_chandrasekhar
UID PID PPID ... TIME CMDroot 23245 23228 ... 00:00:00 python app.py
- 重启web应用容器 docker start + 容器名
- 查询最后一次创建的容器 docker ps -l
- 移除web应用容器(容器一定是停止状态) docker rm + 容器名
6. 列出本地主机上的镜像 docker images
REPOSITORY--镜像的仓库源 TAG--镜像标签
IMAGE ID –镜像ID CREATED—镜像创建时间
DOCKer 镜像使用
当运行容器时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
列出主机所有镜像 | docker image | |
搜索镜像 | docker search 镜像名(例:httpd) | |
下载镜像 | docker pull 镜像名 | |
删除镜像 | docker rmi 镜像名 |
创建镜像
- 从已经创建的容器中更新镜像,并且提交这个镜像
- 使用Dockerfile 指令来创建一个新的镜像