Docker之基础

0x01、Docker基础

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
而容器是一种轻量级的虚拟技术。
Docker的主要部件:
Docker:开源的容器虚拟化平台
Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台

0X02、Docker平台的基本构成


基本由三部分组成:
1、客户端:用户使用Docker提供的工具(CLI 以及 API 等)来构建,上传镜像并发布命令来创建和启动容器;
2、Docker 主机:从 Docker registry 上下载镜像并启动容器
3、Docker registry:Docker 镜像仓库,用于保存镜像,并提供镜像上传和下载

0x03、Docker基本语法

三个重要概念:镜像、容器、库
镜像: 是一个包含了应用程序和其运行时依赖环境的只读文件;利用 Union FS 的技术,将其设计为分层存储的架构
容器: 通过一个镜像我们可以构造出很多相互独立但运行环境一样的容器;容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
仓库: Docker提供了Hub来保存公有或私有的镜像,也允许第三方搭建。每个仓库可以包含多个标签(Tag),每个标签对应一个镜像。
下表清楚的表示出了三者之间的关系

命令分类:

镜像操作:

build     Build an image from a Dockerfile
commit    Create a new image from a container's changes
images    List images
load      Load an image from a tar archive or STDIN
pull      Pull an image or a repository from a registry
push      Push an image or a repository to a registry
rmi       Remove one or more images
search    Search the Docker Hub for images
tag       Tag an image into a repository
save      Save one or more images to a tar archive (streamed to STDOUT by default)
history   显示某镜像的历史
inspect   获取镜像的详细信息

容器及其中应用的生命周期操作:

create    Create a new container (创建一个容器)        
kill      Kill one or more running containers
inspect   Return low-level information on a container, image or task
pause     Pause all processes within one or more containers
ps        List containers
rm        Remove one or more containers (删除一个或者多个容器)
rename    Rename a container
restart   Restart a container
run       Run a command in a new container (创建并启动一个容器)
start     Start one or more stopped containers (启动一个处于停止状态的容器)
stats     Display a live stream of container(s) resource usage statistics (显示容器实时的资源消耗信息)
stop      Stop one or more running containers (停止一个处于运行状态的容器)
top       Display the running processes of a container
unpause   Unpause all processes within one or more containers
update    Update configuration of one or more containers
wait      Block until a container stops, then print its exit code
attach    Attach to a running container
exec      Run a command in a running container
port      List port mappings or a specific mapping for the container
logs      获取容器的日志    

容器文件系统操作:

cp        Copy files/folders between a container and the local filesystem
diff      Inspect changes on a container's filesystem
export    Export a container's filesystem as a tar archive
import    Import the contents from a tarball to create a filesystem image

Docker registry 操作:

login     Log in to a Docker registry.
logout    Log out from a Docker registry.

Volume 操作:

volume    Manage Docker volumes

网络操作:

network   Manage Docker networks

Swarm 相关操作:

swarm     Manage Docker Swarm
service   Manage Docker services
node      Manage Docker Swarm nodes       

系统操作:

version   Show the Docker version information
events    Get real time events from the server  (持续返回docker 事件)
info      Display system-wide information (显示Docker 主机系统范围内的信息)

0x04、Docker的应用场景

Docker 使用客户端-服务器 (C/S) 架构模式。Docker 客户端会与 Docker 守护进程进行通信。Docker 守护进程会处理复杂繁重的任务,例如建立、运行、发布我们的Docker容器。Docker 客户端和守护进程可以运行在同一个系统上,当然你也可以使用Docker客户端去连接一个远程的Docker守护进程。Docker客户端和守护进程之间通过 socket 或者 RESTful API 进行通信。
Docker的应用场景有:

加速本地开发:快速搭建好开发环境和运行环境。
自动打包和部署应用。
创建轻量级的私有Paas环境。
自动化测试和持续集成。
创建安全沙盒。

0x05、基于centos 7 的安装

查看系统版本

cat /etc/redhat-release 

安装docker

yum install docker

检查是否安装成功

docker version


运行docker

service docker start

设置为开机自启

systemctl enable docker.service

在Docker Hub 注册用户,他可以为我们提供私有仓库,我们可以上传存储我们自己的镜像,Docker通过docer search、pull、login和push等命令提供了连接Docker Hub服务的功能
使用sudo docker login 我们可以登录到Docker Hub。(sudo,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具)

搜索镜像

docker search centos


我们可以看到 docker.io/centos 和docker.io/jdeathe/centos-ssh,第二个表示从jdeathe/的用户仓库中搜索到的,而第一个没有用户空间表示他是可信的顶级命名空间。/字符分割用户镜像和存储库的名称。

下载镜像

docker pull <imagename>