Docker入门
Docker架构
Docker三个基本概念
-
镜像(Image): Docker镜像(Image)相当于一个root文件系统, eg:ubuntu:16.04包含了完整的Ubuntu16.04最小系统root文件系统。
-
容器(Container): 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
-
仓库(Repository): 仓库可以看成一个代码控制中心,用来保存镜像。
Docker使用客户端-服务端(C/S)架构模式,使用远程API来管理和创建Docker容器。(Docker容器通过Docker镜像来创建)
| Docker | 面向对象 |
|---|---|
| 镜像(Image) | 类(Class) |
| 容器(Container) | 对象(Object) |
![]() |
| 概念(concept) | 说明(description) |
|---|---|
| Docker镜像(Images) | Docker镜像是用于创建Docker容器的模板,eg: Ubuntu系统 |
| Docker容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体 |
| Docker客户端(Client) | Docker客户端通过命令行或其他工具与Docker的守护进程通信 |
| Docker主机(Host) | 一个物理或虚拟的机器用于执行Docker守护进程和容器 |
| Docker Machine | Docker Machine是一个简化Docker安装的命令行工具 |
容器状态
created - 已创建 restarting - 重启中 running\up - 运行中 removing - 迁移中 paused - 暂停 exited - 停止 dead - 死亡
Docker常用命令
# docker -v // 查看当前Docker版本
# docker images // 查看本地镜像
# docker search xx // 搜索指定镜像
# docker pull xx // 拉去指定镜像
# docker rmi xx // 删除指定镜像
# docker run xx // 运行镜像
# docker run -i -t xx /bin/bash // 运行交互式的容器
# docker ps // 查看当前正在运行的容器
# docker stop xx // 停止当前正在运行的容器
Docker使用
获取镜像
docker pull ubuntu
启动容器
docker run -it ubuntu /bin/bash
-i: 交互式操作
-t: 终端
ubuntu: ubuntu镜像
/bin/bash: 放在镜像名后的时命令
启动已停止运行的容器
# docker ps -a // 查看所有容器
# docker start b70bbcxxx // 启动一个已经停止的容器
# docker run -itd --name ubuntu-test ubuntu /bin/bash // 后台运行一个服务
# docker stop <容器 ID> // 停止一个容器
# docker restart <容器 ID> // 重启一个容器
# docker exec -it <容器 ID> /bin/bash // 进入一个容器,退出该容器终端,不会导致容器的停止
# docker export <容器 ID> > test.tar // 导出容器到本地
# cat docker/test.tar | docker import - test/ubuntu:v1 // 使用docker import从容器快照文件中再导入为镜像\
# docker rm -f <容器 ID> // 删除容器
Docker镜像使用
当运行容器时,使用的镜像如果仔本地中不存在,docker就会自动从docker镜像仓库中下载,默认是从Docker Hub公共镜像源下载
1、管理和使用本地Docker主机镜像 2、创建镜像
列出镜像列表

- REPOSITORY: 镜像的仓库源
- TAG: 镜像的标签
- IMAGE ID: 镜像ID
- CREATED: 镜像创建时间
- SIZE: 镜像大小
获取一个新的镜像
在本地主机上使用一个不存在的镜像时Docker就会自动下载这个镜像,想预先下载这个镜像,可以使用docker pull命令来下载
# docker pull xxx:3.0 // 拉取镜像
# docker rmi hello-world // 删除镜像
# docker build // 从零开始构建一个新的镜像, 需要创建一个Dockerfile文件,其中包含一组指令来告诉Docker如何构建我们的镜像
runoob@runoob:~$ cat Dockerfile
FROM centos:6.7 ---- 第一条FROM 指定
MAINTAINER Fisher "fisher@sudops.com"
RUN /bin/echo 'root:123456' |chpasswd ---- RUN指令告诉docker镜像内执行命令,安装了什么
RUN useradd runoob
RUN /bin/echo 'runoob:123456' |chpasswd
RUN /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE 22
EXPOSE 80
CMD /usr/sbin/sshd -D
每一个指令都会在镜像上创建一个新的层,每一个指令的前缀都必须是大写的
eg: 使用DOckerfile文件通过docker build命令来构建一个镜像。
runoob@runoob:~$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
---> Using cache
---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
---> Using cache
---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
参数说明:
- -t : 指定要创建的目标镜像名
- . : Dockerfile文件所在目录,可以指定Dockerfile的绝对路径
使用docker images 查看创建的镜像已经在列表中存在,镜像ID为xxx
Docker容器链接
通过网络端口来访运行在Docker容器内的服务
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p参数来指定端口映射。
Docker容器互联
端口应黑色并不是唯一把docker连接到另一个容器的方法。
docker有一个连接系统允许将多个容器连接在一起,共享连接信息
docker连接会创建一个父子关系,其中父容器可以看到子容器的信息。
Docker仓库管理
仓库(Repository)是集中存放镜像的地方。只是远程的服务商不一样,操作都是一样的。
Docker Dockerfile
什么是Dockerfile?
Dockerfile是一个用来构建镜像的文本文件,文本内容包含一条条构建镜像所需要的指令和说明。
使用Dockerfile定制镜像
如何运行Dockerfile文件来定制一个镜像 ?


浙公网安备 33010602011771号