本文目录
一、Namespace和cgroup
二、Docker的安装
三、Docker的常用命令和使用
四、部署单机harbor
docker和harbor脚本以及Centos7镜像资源获取地址:百度云
链接:https://pan.baidu.com/s/1xpCymEm4gZ5lLQPT3UpP0w
提取码:dock
-----------------------------------------------------------------------------------
一、namespace和cgroup
在Docker中,由于个容器运行在一个操作系统上,共用宿主机的ghost os,隔离和限制成为问题。
docker容器的隔离和限制。docker利用操作系统的namespace做隔离,使用cgroups做资源限制。
概括:
cgroup主要作用:管理资源的分配、限制;可以概括为资源控制
Namespace 主要作用:封装抽象,限制,隔离,使命名空间内的进程看起来拥有他们自己的全局资源;可以概括为访问隔离
1.Namespace
namespce的类型
表现形式:
查看36654进程的namespace,可以看到namespace 是链接文件,格式为[隔离类型:唯一标识],唯一标识可看成namespace的ID,同一个ID下的进程共享该namespace的全局资源。
PID Namespace调度
进程在 PID namespace 中的调度只能是单向调度(从高 -> 低)。即:
- 进程只能从父 PID namespace 调度到 子 PID namespace 中;
- 进程不能从子 PID namespace 调度到 父 PID namespace 中;
2.cgroup
cgroup 是 Control group 的简称,cgroup 管理资源的分配、限制;可以概括为资源控制-
cgroup 可以对进程进行任意分组,如何分组由用户自定义。
二、Docker的安装(脚本安装)
环境准备:
系统:Centos7.7(7.5及以上) unbuntu20.0.4 或18.0.4
Docker版本:19.03或20.10
kubernetes:1.21.x或1.22.x
ceph:16.2.5
1.Centos7.7安装部署(可使用百度云链接中的centos7mini镜像)
# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.181.80
NETMASK=255.255.255.0
GATEWAY=192.168.181.1
## 配置DNS
[root@localhost yum.repos.d]# vim /etc/resolv.confnameserver 192.168.181.
## 配置主机名
# hostnamectl --static set-hostname docker-90
## 光驱通电,挂载光盘,自动挂载,
[root@localhost ~]# mkdir /iso
[root@localhost ~]# mount /dev/sr0 /iso
[root@localhost ~]# chmod +x /etc/rc.d/rc.local
[root@localhost ~]# vi /etc/rc.d/rc.local
##挂载
mount /dev/sr0 /iso
## 导入docker-ce 的 repo,使用aliyun的镜像
#vim /etc/yum.repo/aliyun.repo
[base]
name=base
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0
[extras]
name=extras
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0
[aliyun-os]
name=aliyun-os
baseurl=https://mirrors.aliyun.com/centos/7/os/x86_64/
enabled=1
gpgcheck=0
[aliyun-epel]
name=aliyun-epel
baseurl=https://mirrors.aliyun.com/epel/7/x86_64/
enabled=1
gpgcheck=0
[aliyun-extra]
name=aliyun-extra
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/
enabled=1
gpgcheck=0
[root@Docker1 /etc/yum.repos.d]# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
[root@Docker1 /etc/yum.repos.d]#yum clean all
[root@Docker1 /etc/yum.repos.d]#yum makecache fast
## 补充一些必要的工具包
[root@localhost yum.repos.d]# yum install ntsysv bash-completion net-tools tree psmisc gpm mlocate vim wget
## 关闭防火墙和SElinux,及不必要服务
[root@localhost yum.repos.d]# iptables -F
[root@localhost yum.repos.d]# iptables -t nat -F
[root@localhost yum.repos.d]# systemctl stop firewalld
[root@localhost yum.repos.d]# systemctl disable firewalld
[root@localhost yum.repos.d]# systemctl stop NetworkManager
[root@localhost yum.repos.d]# systemctl disable NetworkManager
[root@localhost yum.repos.d]# systemctl stop postfix
[root@localhost yum.repos.d]# systemctl disable postfix
## 关闭SElinux
[root@localhost yum.repos.d]# getsebool -a
[root@localhost yum.repos.d]# vim /etc/selinux/config
##修改为 disabled
SELINUX=disabled
## 重启虚拟机
升级操作系统内核(Docker安装前需要系统内核至少到3.1以上)
1、导入key
[root@docker ~]#rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
2、安装yum源,使用elrepo源
[root@docker ~]#rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
[root@docker ~]#yum clean all
[root@docker ~]#yum makecache fast
3、安装内核
[root@docker ~]#yum --enablerepo=elrepo-kernel install kernel-ml-devel kernel-ml -y
4、更改grub菜单的默认启动顺序
[root@docker ~]#grub2-set-default 0
5、重启 reboot
[root@docker ~]#uname -r
5.11.16-1.el7.elrepo.x86_64
6.使用docker-19.03.15-binary-install.tar脚本安装Docker
脚本在上面百度连接
没脚本可参考前几篇文章的Docker安装(超详细入门部署)
7.解压harbor-offline-installer-v2.3.2.gz
#mv harbor.yml.htl harbor.yml
#vim harbor.yml
主要修改以下几点:
hostname:192.168.181.90 修改为IP
harbor——admin——password: harbor的登陆密码
data_vlume: harbor的卷挂载目录
注释https证书认证
8.harbor页面访问
9.登陆远程登陆harbor
直接远程连接harbor将会出现以下信息
如图,默认访问了443端口,但是我们在harbor.yml注释了https和443.
找到service文件,添加本地仓库信任
或者第二种方法添加本地仓库信任
#vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://xjwwbj57.mirror.aliyuncs.com"],
"insecure-registries": ["192.168.181.90"],#此处填本地仓库信任地址
"debug": true,
"experimental": false
}
重新加载某个服务的配置文件
#sudo systemctl daemon-reload
重新启动 docker
#sudo systemctl restart docker
登陆验证:成功
10.harbor的简单使用
格式docker tag imagesID harborIP/项目名
#docker tag nginx 192.168.181.90/nginx
上传镜像到仓库
#docker push 192.168.181.90/nginx
下载镜像
#docker pull 192.168.181.90/nginx
四、docker命令使用