Docker在centos等安装使用

发布时间:2024-11-12 人气:76次


Docker在centos等安装使用

Docker解决了什么问题?能这么流行  容器,就是一种轻量级的虚拟化技术,目的和虚拟机一样,都是为了创造“隔离环境”。

一句话理解Docker:以前各程序都睡大厅,有了Docker后都睡小房子里面。

docker.png

Docker容器具有以下三大特点:

轻量化:一台主机上运行的多个Docker容器可以共享主机操作系统内核;启动迅速,只需占用很少的计算和内存资源。

标准开放:Docker容器基于开放式标准,能够在所有主流Linux版本、Microsoft Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。

安全可靠:Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。

Docker默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台主机。

Docker和虚拟机的区别–

虚拟机VM:使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等。

Docker容器:使用Docker引擎进行调度和隔离,提高了资源利用率,在相同硬件能力下可以运行更多的容器实例;每个容器拥有自己的隔离化用户空间。

#Docker名词 容器、镜像、镜像层、容器编排、横向扩展

#前置技能 掌握基础Linux命令,网络基础 虚拟机搭建或云服务器使用(链接)

#Linux环境安装 虚拟机相关环境安装的文档参考

centos7下载地址:http://isoredirect.centos.org/centos/7/isos/x86_64/

vmware下载地址的链接:https://pan.baidu.com/s/1ueLnub1toyG-tpKGt4195g 提取码:g9fx

putty和FileZilla的链接:https://pan.baidu.com/s/11V1cXg_tjX4ZokWMY74Bhw 提取码:0woe #Docker

卸载

如果之前安装过Docker需要卸载可以参照如下命令列出当前docker相关的安装包$ yum list installed|grep docker

containerd.io.x86_64                 1.3.7-3.1.el7                  @docker-ce-stable

docker-ce.x86_64                     3:19.03.13-3.el7               @docker-ce-stable

docker-ce-cli.x86_64                 1:19.03.13-3.el7               @docker-ce-stable

如果yum被占用,提示Another app is currently holding the yum lock; waiting for it to exit…  则可以使用kill -9 pid 这个占用进程,如下  [root@first64 ~]# yum list installed|grep docker

Existing lock /var/run/yum.pid: another copy is running as pid 21308. Another app is currently holding the yum lock; waiting for it to exit… The other application is: PackageKit Memory : 31 M RSS (455 MB VSZ) Started: Tue May 3 14:44:32 2022 - 06:29 ago State : Sleeping, pid: 21308

Exiting on user cancel.

$ kill -9 21308  如果出现BDB2053 Freeing read locks for locker 0x1136: 9370/140057345120064提示

$ yum clean all 即可  # 卸载对应的包

$ yum -y remove containerd.io.x86_64 docker-ce.x86_64 docker-ce-cli.x86_64   # 删除docker目录

$ rm -rf /var/lib/docker

$ rm -rf /var/lib/containerd

#安装

注意:且Docker 要求操作系统必须为64位,且centos内核版本为3.1及以上,查看系统内核

$ uname -r 3.10.0-1062.el7.x86_6 # 我这里高于3.1  # 系统我使用的是CentOS 7

$ cat /etc/os-release

NAME=“CentOS Linux”

VERSION=“7 (Core)”

ID=“centos”

ID_LIKE=“rhel fedora”

保证yum包是最新  # 使用root执行,更新到最新

$ yum update

列出可安装的docker包  # 列出可以按照的docker包

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

安装(较慢,不推荐)  因为官方下载较慢,这里,我们走阿里云的仓库下载安装:

$ yum install -y yum-utils

$ yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

指定版本安装  # 这里要指定版本

$ yum -y install docker-ce-18.09.6-3.el7

在直接安装最新版docker命令如下:

$ yum install docker-ce -y

查看当前版本

$ docker version

Client: Docker Engine - Community

Version:           20.10.14

API version:       1.41

Go version:        go1.16.15

Git commit:        a224086

Built:             Thu Mar 24 01:49:57 2022

OS/Arch:           linux/amd64

Context:           default  Experimental:      true

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

此处需要重启Docker

不能连接到Docker daemon异常,装完后使用docker命令后会提示异常:Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

需要重启下docker

重启  $ service docker restart

配置开机启动

$ systemctl enable docker

#镜像仓库 Docker中央仓库

由于中央仓库网络较慢,通常使用国内镜像,所以需要给当前Docker进行配置

#国内镜像网易【推荐】目前体验下来是最快的 http://hub-mirror.c.163.comdaocloud https://hub.daocloud.io清华大学 https://mirrors.tuna.tsinghua.edu.cn/Docker中国区官方镜像 https://registry.docker-cn.comustc https://docker.mirrors.ustc.edu.cn搜狐 http://mirrors.sohu.com/阿里云 阿里镜像需要登录阿里云控制台获取,每个账号有唯一镜像加速地址 https://cr.console.aliyun.com/#镜像配置 找到cd /etc/docker目录下的vi daemon.json文件进行编辑,

输入如下内容  vi /etc/docker/daemon.json

{   “registry-mirrors”: [“http://hub-mirror.c.163.com”] }

如果没有该文件/etc/docker/daemon.json,可自行创建,也可以使用如下命令

tee /etc/docker/daemon.json <<-‘EOF’

{   “registry-mirrors”: [“http://hub-mirror.c.163.com”] } EOF

重载配置文件,重启docker

$ systemctl daemon-reload

$ systemctl restart docker#部署应用#Docker常用命令指定镜像,运行成一个容器$ docker run redis拉取名为redis的最新的镜像$ docker pull redis查看本地拥有的镜像$ docker images查看本地所有的容器(包含未启动的)$ docker ps -a查看目前镜像情况,根据镜像ID删除其镜像$ docker rmi -f a10f849e1540[]根据容器ID删除其容器$ docker rm -f c7e6480f1590进入已经启动的容器里【linux】$ docker exec -it 容器名称 /bin/bash#镜像私服配置和制作

目前主流的Docker4种私有仓库

docker-registry:docker hub 提供的一直私有仓库解决方案。没有图形化界面

Harbor:带有图形化界面的工具,用户管理,及查看更加方便

Nexus:一般我们Maven和Gradle用得比较多,管理jar包,也能存储docker镜像,由于一个版本一个版本的保存和叠加,所以清理起来比较麻烦。

云平台容器服务(如阿里云,常用于生产环境) 。

这里主要介绍2种相对较友好的镜像私服:“harbor”和“阿里云容器服务”。

系统环境说明:

Centos 7

Docker Version: 20.10.14

#Harbor #简介

Harbor Registry(又称 Harbor 云原生制品仓库或 Harbor 镜像仓库)由 VMware 公司中国研发中心云原生实验室原创,并于 2016 年 3 月开源。Harbor 在 Docker Distribution的基础上增加了企业用户必需的权限控制、镜像签名、安全漏洞扫描和远程复制等重要功能,还提供了图形管理界面及面向国内用户的中文支持,开源后迅速在中国开发者和用户社区流行,成为中国云原生用户的主流容器镜像仓库。

Harbor特性:

基于角色的访问控制 :用户与Docker镜像仓库通过“项目”进行组织管理,用户可以对多个镜像仓库在同一命名空间(project)里有不同的权限。

镜像复制 :镜像可以在多个Registry实例中复制(同步)。尤其适合于负载均衡,高可用,混合云和多云的场景。

图形化用户界面 :用户可以通过浏览器来浏览,检索当前Docker镜像仓库,管理项目和命名空间。

AD/LDAP 支持 :Harbor可以集成企业内部已有的AD/LDAP,用于鉴权认证管理。

审计管理 :所有针对镜像仓库的操作都可以被记录追溯,用于审计管理。

国际化 :已拥有英文、中文、德文、日文和俄文的本地化版本。更多的语言将会添加进来。

RESTful API :RESTful API 提供给管理员对于Harbor更多的操控, 使得与其它管理软件集成变得更容易。部署方便 :提供在线和离线两种安装工具, 也可以安装到vSphere平台(OVA方式)虚拟设备。#下载安装包

Harbor 提供了多种途径来帮助用户快速搭建Harbor 镜像仓库服务,

包括:

离线安装包:通过docker-compose编排运行。安装包除了包含相关的安装脚本外,还包含了所有安装所需要的Harbor组件镜像,可以在离线环境下安装使用。

在线安装包:与离线安装包类似,唯一的区别就是不包含harbor组件镜像,安装时镜像需要从网络上的仓库服务拉取。

手动下载:官方源码戳我,找到最新Tag拉到底部进行下载,

建议采用迅雷

采用wget下载(较慢):

wget https://github.com/goharbor/harbor/releases/download/v2.5.0/harbor-offline-installer-v2.5.0.tgz

这里我们选择离线版。

#安装docker-compose Harbor由多个组件组成,其每个组件都是以Docker容器的形式构建的,官方采用Docker Compose来对它进行部署。

用于部署Harbor的Docker Compose模板位于 harbor/docker-compose.yml中,这个模板文件中有多个镜像定义,常见如:harbor-log,harbor-db,registry,harbor-core,nginx,harbor-portal,harbor-jobservice等,版本不一样所依赖的容器熟练不一样。所以我们需要提前安装好docker compose。下载 http://github.com/docker/compose/releases网络原因可能会失败

$ curl -L “https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-(uname−s)−(uname -s)-(uname−s)−(uname -m)” -o /usr/local/bin/docker-compose  chmod +x /usr/local/bin/docker-compose也可以手动下载https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64重命名$ mv docker-compose-linux-x86_64 docker-compose授权$ chmod +x /usr/local/bin/docker-compose可定义全局变量或者软链接,方便执行:$ ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose验证$ docker-compose --version Docker Compose version v2.5.0注意如果运行docker-compose出现Segmentation fault错误,可以做如下操作 1. 重启docker服务 2. 删除docker-compose文件重新下载

#生产HTTPS证书

由于我们是在本地或虚拟机,可以不用安装,大家也可以采用其他免费证书官方下载地址https://goharbor.io/docs/1.10/install-config/configure-https/

#安装Harbor 解压配置

$ tar xvf harbor-offline-installer-v2.5.0.tgz -C /usr/local/

$ cd harbor/编辑harbor.yml(老版本是harbor.cfg),修改hostname、https证书路径、admin密码(可选)先复制一份harbor.yml$ cp -f harbor.yml.tmpl harbor.yml

$ vim harbor.yml

– 示例如下用于访问用户界面和 register 服务。它应该是目标机器的 IP 地址或完全限 定的域名。例如 192.168.2.195 或 hub.it235.com。不要使用 localhost 或 127.0.0.1 为主机名。hostname: 192.168.2.195

http:port避免和nginx冲突,改成非80即可,本文改为9080port: 8098注意,如果不开启https,则需要把https节点的内容注释掉,否则安装会报错,在老版本中由enable属性控制 https:   port: 443ssl证书地址 仅当协议设置为 https 时才应用。certificate: /your/certificate/path

private_key: /your/private/key/pathharbor默认用户名密码harbor_admin_password: Harbor12345harborDB 用于db_auth 的MySQL数据库root 用户的密码。database:

password: root123

max_idle_conns: 100

max_open_conns: 900The default data volumedata_volume: /data运行$ sh /usr/local/harbor/install.sh

或进入到harbor目录执行

./install.sh   # 安装成功的结果

----Harbor has been installed and started successfully.----注意,如果失败,修改相关配置后再次执行./install.sh即可(一般失败原因大多是端口冲突)重启docker-compose  # 关闭

$ docker-compose down -v  # 启动

$ docker-compose up -d  # 如果出现以下错误,请启动docker,或重启docker

$ docker-compose ps no configuration file provided: not found

$ systemctl start docker

$ systemctl restart docker

查看harbor安装情况  # 查看已经拉取的镜像

$ docker images  # 查看所有容器

$ docker ps -a  # 查看compose容器相关运行情况

$ docker-compose ps

清空所有容器和镜像

docker rm -f

(dockerps−aq)dockerrmi−f(docker ps -aq)  docker rmi -f(dockerps−aq)dockerrmi−f(docker images -aq)

访问harbo,如果使用了https出现检查证书的情况,说明证书失效或配置存在问题,可点击继续访问

默认账号密码:admin/Harbor12345,可在harbor.yml中修改

作为开发人员,与harbor打交道最多的就是项目模块,其他模块可以暂时忽略

#镜像推送 在harbor创建项目,找另外一台Linux机器

安装docker环境  配置docker的镜像仓库为harbor的机器注意,这里不再是其他的国内镜像仓库,而是要使用我们的私服harbor

$ cat /etc/docker/daemon.json {  “registry-mirrors” : [“http://hub-mirror.c.163.com”],国内镜像代理“insecure-registries” : [“192.168.2.195:8098”],harbor私服“live-restore”: true重载docker守护进程而不重启容器 }在我们另外另外一台机器上把harbor的密码存下来,写到一个文件中  使用命令行的方式登录到harbor在我们另外另外一台机器上把harbor的密码存下来,写到一个文件中$ echo Harbor12345 > /etc/docker_passwd登录,因为harbor对密码有一定的要求,所以要采用这种方式$ cat /etc/docker_passwd | docker login -u admin --password-stdin http://192.168.2.195:8098  Login Succeeded注意:如果出现了https问题,那么请检查daemon.json配置是否与我上面描述的一致。随意从官方仓库下载一个镜像

$ docker pull nginx

给镜像打标签docker tagSOURCE_IMAGE[:TAG] 192.168.2.195:8098/it235/REPOSITORY[:TAG]

$ docker tag redis:latest 192.168.2.195:8098/it235/nginx:v1

推送到harbor仓库docker push 192.168.2.195:8098/it235/REPOSITORY[:TAG]$ docker push 192.168.2.195:8098/it235/nginx:v1

进入ui页面查看

删除已存在的镜像,并从harbor拉取镜像

$ docker rmi nginx

$ docker pull 192.168.2.195:8098/it235/nginx:v1

启动容器并验证

$ docker run -d -p 8888:80 192.168.2.195:8098/it235/nginx:v1

浏览器访问:http://192.168.2.194:8888注意,如果是在云服务器上,需要在安全组中配置8888端口或使用nginx代理才可以在外网访问本地如果有防火墙未直接暴露8888端口,则需要将8888端口加入到防火墙中。


选择订阅-通过 Docker 订阅在协作、安全性和支持之间找到完美的平衡!
在线客服
联系方式

热线电话

18221674630

上班时间

周一到周五

公司电话

18221674630

二维码
线
获取免费体验资格

提交后,我们将在3个小时内与您联系