目录

Docket 容器简述

Docket 核心概念

安装环境检查

Docker 容器卸载

Docker 容器安装

Docker 启动 与 停止

Docker 容器开机自启

Docker 使用步骤

常见错误处理

 read: connection refused


Docket 容器简述

1、Docker 是一个开源的应用容器引擎,是一个轻量级容器技术,基于Go 语言并遵从 Apache2.0 协议开源。

2、Docker 让开发者可以打包自己的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化

3、容器是完全使用沙箱机制,相互之间不会有任何接口,性能好,启动快。

4、Docker 官网地址:https://www.docker.com

容器 VS 虚拟机
特性容器虚拟机
启动秒级分钟级
硬盘使用一般为 Mb一般为 Gb
性能接近原生弱于
系统支持量单机支持上千个容器一般几十个

Docket 核心概念

主机(Host)

1、安装了 Docker 程序的机器(Docker直接安装在操作系统之上),可以是物理机或者虚拟机上,可以是 Windows 或者 Linux 上,可以是本地也可以是远程。

2、安装了 Docker 则可以运行守护进程以及容器了。

客户端(Client)

1、用于连接 docker 主机进行操作,类似于 Mysql 客户端连接 Mysql 进行操作。

2、docker 客户端通过命令行或者其它工具使用 Docker

仓库(Registry)

1、Docker 仓库用来保存打包好的各种软件镜像,可以理解为代码控制中的代码仓库。程序员也可以建立自己的私有仓库

2、Docker Hub 中提供了庞大的镜像集合供大家使用,就像 Maven 的中央仓库提供大家访问下载一样。

镜像(Images)

1、软件打包好的镜像,放在 docker 仓库中;

2、Docker Hub 中以及拥有了庞大的镜像集合供大家使用下载使用。

3、软件镜像(Images)启动之后就会有一个对应的容器(Container),镜像位于自己的容器中,容器之间相互隔离

容器(Container)

1、镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用,容器之间相互隔离。

2、镜像与容器的关系类比面向对象中的类和对象。

安装环境检查

1、检查 Linux 内核版本,Docker 要求CentOS 系统的内核版本高于3.10,如下所示 内核版本为 3.10.0-327.el7

2、本文环境:CentOS 7.2.1511 发行版本,内核版本为 3.10.0-327.el7 + Docker 1.13

[root@localhost home]# uname -a
Linux localhost.localdomain 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost home]# lsb_release -a
LSB Version:	:core-4.1-amd64:core-4.1-noarch
Distributor ID:	CentOS
Description:	CentOS Linux release 7.2.1511 (Core) 
Release:	7.2.1511
Codename:	Core
[root@localhost home]# 

3、如下所示当前 CentOS 服务器没有安装 Docker,而且提供了安装包可以安装,是一个 1.13 版本的 Docker。

[root@localhost home]# yum list docker
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
可安装的软件包
docker.x86_64                                      2:1.13.1-162.git64e9980.el7.centos                                       extras
[root@localhost home]# 

4、使用 yum 安装 Docker 之前,需要检查一下 CentOS 系统环境的软件是否需要更新,自己第一次在虚拟机上安装 docker 的时候,就是因为没有更新软件,导致安装后 Docker 启动失败。

所以强烈建议先使用 "yum check-update" 命令检查是否有软件需要更新,然后使用 "yum update" 命令更新所有软件,如下所示 已经全部更新完了。

[root@localhost home]# yum check-update
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
[root@localhost ~]# yum update
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.zju.edu.cn
 * updates: centos.ustc.edu.cn
No packages marked for update
[root@localhost ~]# 

Docker 容器卸载

1、如果已经安装了 docket,想要重新安装,则需要先卸载 docker 。

查看安装包

[root@localhost docker]# yum list installed |grep docker
docker.x86_64                        2:1.13.1-68.gitdded712.el7.centos @extras  
docker-client.x86_64                 2:1.13.1-68.gitdded712.el7.centos @extras  
docker-common.x86_64                 2:1.13.1-68.gitdded712.el7.centos @extras  
[root@localhost docker]# 

删除安装包

[root@localhost docker]# yum -y remove docker.x86_64
...
[root@localhost docker]# yum -y remove docker-client.x86_64
...
[root@localhost docker]# yum -y remove docker-common.x86_64
...
[root@localhost docker]# yum list installed |grep docker
[root@localhost docker]# 

删除 docker 镜像

/var/lib/docker 是 Docker 安装后默认的容器和镜像目录,也要一并删除

[root@localhost lib]# rm -rfv /var/lib/docker/
...
[root@localhost docker]# 

Docker 容器安装

1、yum 安装软件是非常简单的,比 Windows 系统上安装软件还要简单,使用 “ yum -y install docker ” 一行命令即可安装 dcoker。

2、安装完成后,使用 docker version 查看安装情况,如下所示表示安装成功,如果看不到下面的 Server 信息,则可以通过 systemctl start docker 命令启动 docker。

[root@localhost ~]# docker version
Client:
 Version:         1.13.1
 API version:     1.26
 Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      64e9980/1.13.1
 Built:           Wed Jul  1 14:56:42 2020
 OS/Arch:         linux/amd64

Server:
 Version:         1.13.1
 API version:     1.26 (minimum version 1.12)
 Package version: docker-1.13.1-162.git64e9980.el7.centos.x86_64
 Go version:      go1.10.3
 Git commit:      64e9980/1.13.1
 Built:           Wed Jul  1 14:56:42 2020
 OS/Arch:         linux/amd64
 Experimental:    false
[root@localhost ~]# 

Docker 启动 与 停止

1、docker 程序安装完成后自己本身就是一个服务,类似于 mysql 安装后自己也是一个服务。

2、对于注册为服务的软件,管理操作起来更加简单,可以使用 Linux 的 “ service ” 命令,对于 CentOS 7.0 及以上的版本建议使用 “systemctl ” 命令

systemctl start docker启动 docker 服务
systemctl restart docker重启 docker 服务
systemctl status docker查看服务运行的状态
systemctl stop docker 停止 Docker  服务
[root@localhost ~]# systemctl start docker

[root@localhost ~]# 
[root@localhost ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
   Active: active (running) since 日 2020-08-02 15:08:27 CST; 3s ago
     Docs: http://docs.docker.com
 Main PID: 9448 (dockerd-current)
   CGroup: /system.slice/docker.service
           ├─9448 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-...
           └─9454 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-t...

8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.062988257+08:00" level=warning msg="overlay2: the backing ...
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.146956026+08:00" level=info msg="Graph migration to ...conds"
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.147854010+08:00" level=info msg="Loading containers: start."
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.164857148+08:00" level=info msg="Firewalld running: true"
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.316017863+08:00" level=info msg="Default bridge (doc...dress"
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.444229408+08:00" level=info msg="Loading containers: done."
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.473971174+08:00" level=info msg="Daemon has complete...ation"
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.473992715+08:00" level=info msg="Docker daemon" comm...1.13.1
8月 02 15:08:27 localhost.localdomain dockerd-current[9448]: time="2020-08-02T15:08:27.485248295+08:00" level=info msg="API listen on /var/....sock"
8月 02 15:08:27 localhost.localdomain systemd[1]: Started Docker Application Container Engine.
Hint: Some lines were ellipsized, use -l to show in full.

Docker 容器开机自启

1、因为 Docker 本身是服务,做成开机自启就方便多了,使用命令:systemctl enable docker

[root@localhost ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@localhost ~]# 

Docker 使用步骤

1、安装 Docker 

2、从 Docker 仓库(Docker Hub )找到目标软件对应的镜像

3、使用 Docker 运行这个镜像,这个镜像就会生成一个 Docker 容器;

4、对容器的启动与停止就是对软件的启动停止;

https://blog.csdn.net/wangmx1993328/category_7934575.html

常见错误处理

 read: connection refused

1、之前安装使用了很长一段时间都没有问题,隔了很久有一天来用的时候,居然报错了连接超时了,可能和我平时捣鼓环境有关系:

[root@wangmaoxiong001 docker]# docker search mysql
Error response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:40486->[::1]:53: read: connection refused

2、网上说这是因为dns域名没有解析的原因,编辑 /etc/resolv.conf 文件,增加一行dns地址,例如:nameserver 8.8.4.4,照着这样操作后,亲测确实正常了。

[root@wangmaoxiong001 docker]# cd /etc
[root@wangmaoxiong001 etc]# vim /etc/resolv.conf 
[root@wangmaoxiong001 etc]# cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.4.4
[root@wangmaoxiong001 etc]# systemctl restart network
[root@wangmaoxiong001 etc]# docker search mysql
INDEX       NAME                                      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                           MySQL is a widely used, open-source relati...   14709     [OK]       
......                                                               0                    
[root@wangmaoxiong001 etc]# 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐