您的位置:首页 > 运维架构 > Docker

Docker入门学习(3)----Docker架构与常用命令总结

2017-12-10 19:27 1146 查看

1、Docker架构详解



首先我们要知道,Docker是使用的是客户端服务器架构,其实我们从docker version这个命令也可以看出来:

root@ubuntu:~# docker version
Client:
Version:      1.13.1
API version:  1.26
Go version:   go1.8.3
Git commit:   092cba3
Built:        Thu Oct 12 22:34:44 2017
OS/Arch:      linux/amd64

Server:
Version:      1.13.1
API version:  1.26 (minimum version 1.12)
Go version:   go1.8.3
Git commit:   092cba3
Built:        Thu Oct 12 22:34:44 2017
OS/Arch:      linux/amd64
Experimental: false


如上所示:结果代码中分为客户端和服务器端

我们看一下之前的上面的那一张docker架构图,里面Client就是我们所说的客户端了,DOCKER_HOST其实就可以说成服务器端,在host之中,有一个docker daemon是docker的守护进程。最右边的Registry就是一个网上的共有镜像仓库,比如我们说的Docker hub。

Docker客户端和Docker守护进程交流,Docker守护进程做非常重要的工作,构建,运行和分发你的Docker容器。Docker客户端和守护进程可以运行在同样的系统上,或者是你可以连接一个Docker客户端到一个远程Docker守护进程中。Docker客户端和守护进程通过sockets或通过RESTful API进行沟通交流。

我们再来看一下这三个概念:

==Docker镜像==

一个Docker镜像是一个只读的模板。例如,一个镜像可以包含一个带有Apache和你的web应用的Ubuntu操作系统。镜像被用来创建Docker容器。Docker提供了一个简单的方式来构建一个新的镜像或更新一个存在的镜像,或者是你可以下载其他人已经创建的Docker镜像。Docker镜像是Docker的build组件。

==Docker注册处==

Docker注册处保留镜像。这些是来自于上传或下载镜像的公共或私密存储的地方。公共的Docker注册处又Docker Hub提供。他提供了一个你可以使用的已存镜像的集合。这些可以是你自己创建的或其他人创建的你可以使用的镜像。Docker注册处是Docker的distribution组件。

==Docker容器==

Docker容器和目录是相似的。一个Docker容器可以保存任何东西,这些东西是运行一个应用程序所必须的。每一个容器都是从一个Docker镜像中创建的。Docker容器可以被运行,开启,停止,移动和删除。每一个容器都是一个分离的和安全的应用平台。Docker容器是Docker的运行组件。

在了解了以上概念之后,我们通过具体的命令来查看Docker架构这个抽象的概念。

2、一些常用命令

<1.>docker search 命令 + 镜像名字,来查看官方镜像仓库中的镜像

例如:



<2.>docker pull + 镜像名字,拉取镜像

例如:

docker pull ubuntu:16.04 //拉取ubuntu 16.04版本的镜像


<3.>docker images查看当前拉取的所有镜像



<4.>docker run 命令 启动容器

启动容器有两种方式,一种是基于镜像新建一个容器并启动,另外一个是将在终止状态( stopped )的容器重新启动。

因为 Docker 的容器实在太轻量级了,很多时候用户都是随时删除和新创建容器。

新建并运行容器:

例如,下面的命令输出一个 “Hello World”,之后终止容器。

$ docker run ubuntu:14.04 /bin/echo 'Hello world'
Hello world


这跟在本地直接执行 /bin/echo ‘hello world’ 几乎感觉不出任何区别。

下面的命令则启动一个 bash 终端,允许用户进行交互。

$ docker run -t -i ubuntu:14.04 /bin/bash
root@af8bae53bdd3:/#


其中, -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入上, -i

则让容器的标准输入保持打开。

在交互模式下,用户可以通过所创建的终端来输入命令,例如:

root@af8bae53bdd3:/# pwd
/
root@af8bae53bdd3:/# ls
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var


让容器后台运行:-d参数

docker run -d nginx


我们进入容器可以使用exec参数:

root@ubuntu:~# docker run -d nginx
d41c5b18b6b8c03bc680e2c420e7ec53ed5a526fca2b0e3df7da411dea1f7a38
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
d41c5b18b6b8        nginx               "nginx -g 'daemon ..."   5 seconds ago       Up 3 seconds        80/tcp              inspiring_jennings
root@ubuntu:~# docker exec -it d4 bash
root@d41c5b18b6b8:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr


<5.>docker ps 或者docker container ls 来查看正在运行的容器信息:

root@ubuntu:~# docker container ls
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
efebe0da3df1        nginx               "nginx -g 'daemon ..."   3 hours ago         Up 3 hours          0.0.0.0:8080->80/tcp   dazzling_tesla
root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
efebe0da3df1        nginx               "nginx -g 'daemon ..."   3 hours ago         Up 3 hours          0.0.0.0:8080->80/tcp   dazzling_tesla


<6.>终止容器:

docker container stop 容器id


<7.>查看终止状态的容器信息

docker ps -a或者docker container ls -a


<8.>启动终止的容器,重启正在运行的容器:

docker container start       docker container restart
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  架构 docker