docker容器技术介绍

docker

docker的介绍

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker,可以让开发者将自己的程序以及依赖打包成一个镜像文件,然后可以发布到开源社区中,自己可以用,也可以造福其他人。发布到各种服务器后,都是可以是虚拟化,容器之间都是沙盒(沙盒是沙箱的另一种叫法),相互之间没有影响,可以充分隔离,保证每个沙盒程序都可以不受其他影响,独立运行。他也是可移植的,支持主流操作系统。

沙盒

沙盒是在计算机领域中的一种虚拟技术,多用于计算机安全技术、软件安全,可以让程序在沙盒中运行,如果存在病毒、程序bug或者恶意行为,都只局限于自己的沙盒,不会影响到其他。

docker容器和虚拟机的区别

相同点:docker容器和虚拟机都采用了虚拟的技术
不同点:

docker相对于虚拟机而言,少了虚拟机操作系统这层,少了一层就少了很多资源的浪费,所以docker的效率要高于虚拟机很多。

Docker架构

第一步需要安装docker,第二步小组镜像文件到docker中,第三启动docker容器实例,最后反馈给用户

镜像:image,可以理解成一个系统的镜像文件

容器:container,容器是镜像在运行时的一个状态
image相当于磁盘上的文件,container相当于运行时磁盘上的这个文件,包括内存数据

核心概念

Docker 使用客户端-服务器架构,Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护程序使用 REST API,通过 UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

Clients 是docker客户端,用来连接docker主机

Host 是docker主机,安装了docker程序机器

Registry 是仓库,用来存储各种打包好的镜像文件

image 是镜像文件

container 是容器,独立运行应用

docker的特性及优点

特点:
文件系统隔离,每个容器运行在一个完全独立的沙盒中
资源隔离,隔离系统资源,比如CPU、内存等,分配到不同的容器中
网路隔离,每个容器运行在自己的网络中,有虚拟的IP地址
日志记录,docker对每个容器都有日志功能
交互式的shell、管理沙盒程序等
优点:
有很多虚拟机的优势,而且某些方面比虚拟机要更优秀
占用的资源也比较少,比如说现在的PC机,可以运行多个docker实例
不需要关心具体的操作系统,只要大型号没有问题就可以。
支持多平台,例如Linux、Windows、Mac
应用比较广发,很多全球知名公司都在用docker
缺点:
对于应用的程序是最有利的,但是不善于处理文件和数据,一般会将文件(日志等),数据库的数据文件,挂载到容器之外

部署docker环境

以下操作是在在 CentOS 上安装 Docker 引擎,若想在其他系统上安装则按照docker安装文档来做

查看版本号

docker只支持Linux 3.10及以上版本,所以在部署之前先查看一下Linux内核版本,查看命令如下:

1
uname -r

查看结果如下:

卸载旧版本docker,避免产生影响

旧版本的 Docker 被称为docker或docker-engine. 如果安装了这些,请卸载它们以及相关的依赖项。

1
2
3
4
5
6
7
8
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

yum如果报告没有安装这些软件包,那也没关系。

的内容/var/lib/docker/,包括图像、容器、卷和网络,都被保留。Docker 引擎包现在称为docker-ce.

升级yum和配置源

在新主机上首次安装 Docker Engine 之前,您需要设置 Docker 存储库。之后,您可以从存储库安装和更新 Docker。

设置存储库
安装yum-utils包(提供yum-config-manager 实用程序)并设置稳定的存储库

1
2
3
4
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo

在虚拟机中安装docker

这是安装最新版本的docker,一般公司工作都会选用最稳定版本,有很多时候需要知道如何去安装历史版本。
安装最新版本的 Docker Engine 和 containerd,或者进入下一步安装特定版本:

1
$ sudo yum install docker-ce docker-ce-cli containerd.io

列出并排序您的存储库中可用的版本

1
$ yum list docker-ce --showduplicates | sort -r

安装指定版本的docker

1
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

是代表要按照的版本号

1.安装成功

2.启动服务进行验证
启动docker

1
systemctl start docker

停止docker

1
systemctl stop docker

重启docker

1
systemctl restart docker

查看docker正在运行时的状态

1
systemctl status docker

3.查看docker版本信息

1
docker -v

如果运行正常,代表安装成功.

docker的常用操作

1.查看本地镜像

第一次查询时是没有镜像的,只有拉取之后才有

1
docker images

2.查找指定镜像

1
docker search 名字(如果想限定版本,就加版本号)

3.拉取镜像

1
2
3
4
docker pull 名称(如果需要指定版本,添加版本号)
以Tomcat为例
docker pull tomcat:下载最新版本
docker pull Tomcat:版本号:下载指定版本

4.查看容器

1
2
3

docker ps:查看在运行的
docker ps –a:查看所有的

5.移除容器

1
docker rm 容器id/names

6.启动容器

1
2
3
4
docker start 容器id/names
docker stop :停止容器
docker restart:重启容器

以启动Tomcat为例:

1
docker run --name mytomcat -d -p 8080:8080 734d712b8777

docker run是启动Tomcat
–name是给这个镜像取一个名字,当前名字叫做mytomcat
-d是后台运行,可以不认Tomcat把日志输出到控制,这样控制台可以做其他操作
-p 8080:8080是端口映射,将docker中Tomcat的8080端口,映射到虚拟机的8080端口。第一个8080是虚拟机的端口号,第二个是docker的
最后一个是镜像的id或者名字+标签也可以

7.进入容器内

1
docker exec –it 容器名字/id /bin/bash

docker exec –it:是进入容器,-it等同于-i –t
/bin/bash是命令需要的路径参数

8.补充

exit:从容器中退出
进入容器是需要用-it,-i以交互模式运行虚拟机 –t为容器重新分配一个输入终端(准确的说是一些假的,也叫伪终端)
run中除了-d以外还有-c,run命令执行结束后执行的其他命令,可以让程序自动执行一些命令。
docker logs 容器id/名字