Docker 基本操作

Docker架构总览

架构图.png

最核心的是 Docker Daemon 我们称之为 Docker 守护进程,也就是 Server 端,Server 端可以部署在远程,也可以部署在本地,因为 Server 端与客户端 ( Docker Client ) 是通过 Rest API 进行通信。

Docker CLI 实现容器和镜像的管理,为用户提供统一的操作界面,这个客户端提供一个只读的镜像,然后通过镜像可以创建一个或者多个容器 (container),这些容器可以只是一个 RFS ( Root File System ),也可以是一个包含了用户应用的 RFS。容器在 Docker Client 中只是一个进程,两个进程是互不可见的。

用户不能与 server 直接交互,但可以通过与容器这个桥梁来交互,由于是操作系统级别的虚拟技术,中间的损耗几乎可以不计

Docker核心概念

相关概念 说明
Docker 镜像(Images) Docker 镜像是用于创建 Docker 容器的模板。
Docker 容器 (Container) 容器是独立运行的一个或一组应用。
Docker 客户端 (Client) Docker 客户端通过命令行或者其他工具使用 Docker API 与 Docker 的守护进程通信。
Docker 主机 (Host) 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器
Docker 仓库 (Registry) Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。
Docker Machine Docker Machine 是一个简化 Docker 安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装 Docker,比如 VirtualBox、 Digital Ocean、Microsoft Azure。

常用操作命令

容器相关命令

1. 运行 docker run

示例:docker run ubuntu:15.10 /bin/echo "Hello world"
参数:
ubuntu:15.10: 镜像名(先检测本地主机上查找镜像是否存在,如果不存在则去 Docker Hub 下载公共镜像)
/bin/echo "Hello world":在镜像中运行的命令
其他参数:

参数 说明
-i 允许你对容器内的标准输入 (STDIN) 进行交互
-t 进入指定系统的终端(伪终端)
-d 后台运行(创建一个以进程方式运行的容器)
-P 将容器内部使用的网络端口映射到我们使用的主机上
-p 设置端口号(-p 127.0.0.1:5001:5000/udp 通过 5001 访问 5000 端口设置为 udp )
--name 设置启动容器名
-v 设置挂载目录(如:-v $PWD/www:/www 将主机中当前目录下的 www 挂载到容器的 / www)
2. 查看正在运行的 docker 容器 docker ps

返回内容说明

字段名 说明
CONTAINER ID 容器 ID
IMAGE 镜像名
COMMAND 执行命令
CREATED 创建时间
STATUS 状态
PORTS 端口信息
NAMES 名称

其他参数

参数 说明
-l 显示最后创建的容器(包括所有状态)
-a 显示所有容器(默认显示刚刚运行)
-n 显示最后创建的n 条
-q 只显示 id
-s 显示文件大小
3. 停止容器 docker stop id/name
4. 启动容器 docker start id/name
5. 删除容器 docker rm id/name
6. 查看容器运行日志 docker logs id/name
7. 查看端口映射情况 docker port id
8. 查看容器内部运行的进程 docker top id/name
9. 查看Docker底层信息 docker inspect id/name
10. 删除容器 docker rm id/name 删除时必须停止不然报错

镜像相关命令

1. 查看有哪些镜像 docker images
2. 搜索镜像 docker search name
3. 下拉镜像 docker pull name
4. 创建镜像 docker bulid

流程:

  • 创建文件 Dockerfile
    docker build -t runoob/centos:6.7 ./
    -t 指定要创建的目标镜像名
    最后一个参数是 Dcokerfile 文件位置,可以绝对可以相对

  • Dcokerfile 文件内容:
    内容说明:
    FROM: 指定使用哪个镜像源
    RUN: 告诉 docker 在镜像内执行的命令

内容示例:

FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
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
5. 使用 docker commit 创建副本

在一个新的容器中安装你想要的软件然后对出这个容器可以获取到 ID
然后使用 docker commit -m="has update" -a="aaa" e218edb10161 aaa/ubuntu:v2 来创建一个副本
参数说明:

参数 说明
-m 提交的描述信息
-a 指定镜像作者
e218edb10161 容器ID
runoob/ubuntu:v2 指定要创建的目标镜像名
6. 修改镜像标签 docker tag ID tag
7. 删除镜像 docker rmi id

推荐阅读更多精彩内容