1.Docker容器学习之新生入门必备基础知识

0x00 Docker 快速入门

1.基础介绍

描述:Docker [ˈdɑ:kə(r)] 是一个基于Go语言开发实现的遵循Apache 2.0协议开源项目,目标是实现轻量级的操作系统虚拟化解决方案; ,诞生于2013年初最初发起者是dotCloud公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,后续由于docker的发展后来也改名为Docker Inc,它是仅次于OpenStack最受欢迎的云计算开源项目;Docker 从 17.03版本之后分为 CE(Community Edition) 和 EE(Enterprise Edition)

Docker 的目标是"Build,Ship and Run Any App,Anywhere",通过对应用组件的封装\[Packaging]-> 分发\[Distribution] -> 部署\[Deployment] -> 运行\[Runtime]等生命周期进行管理,达到应用级别"一次封装,到处运行"; 例如:它可以独立运行一个Web应用,也可以是一套数据库服务,甚至是一个操作系统或编译器;

Apache 2.0 授权 Github 项目开源 : github.com/docker/dock…


Dcoker与OpenStack的区别?


完整的Docker由以下几部分构成:


Linux容器基础之LXC技术介绍:

描述:Docker引擎的基础是Linux容器(Linux Containers,LXC)技术,容器有效的将各个操作系统管理的资源划分到孤立的组,以便更好的在孤立的组之间平衡有冲突的资源使用需求。 容器可以在核心CPU本地运行指令,并不需要任何专门的解释机制;最早的容器技术可以追溯到1982年Unix系列操作系统上的chroot工具;用户操作容器就像操作一个轻量级虚拟机那样简单,也可以将容器比作为一种沙盒(Sandbox);


Docker 优势:

什么是虚拟化技术? 虚拟化技术是一个通用的概念,在不同的领域有不同的理解;在计算机领域一般指的是计算机虚拟化(Computer Virtualization)或者说是服务器虚拟化;虚拟化的核心是对资源进行抽象和管理,目标往往是为了在同一个主机上运行多个系统或者应用,从而提高系统资源的利用率,同时带来降低成本,方便管理和容错和容灾等好处;

传统虚拟机的比较:


传统虚拟化方式与Docker虚拟化方式


物理机-虚拟机-Docker容器容易理解的对比


Docker 应用场景


2.Docker 架构

描述:Docker对使用者来讲是一个C/S模式(使用客户机-服务器)的架构而Docker的后端是一个非常松耦合的架构,模块各司其职并有机组合支撑Docker的运行。

具体流程:


Docker 内部具体实现:


3.Docker 资源隔离

Docker 本质是宿主机上的一个进程,docker通过namespace实现资源隔离以及轻量级虚拟化容器服务,通过cgroup实现了资源限制,通过写时复制技术(Copy-on-write)实现了高效的文件操作;

Docker通过由内核namespace提供实现的隔离,namespace的API包括clone(),sents()以及unshare()还有在/proc下的部分文件

即namespace的六项隔离(内核实现 namespace 资源隔离内容 - 系统调用参数 )如下标所示:

名称宏定义隔离的内容IPCCLONE_NEWIPCSystem V IPC, POSIX message queues (since Linux 2.6.19) 信号量消息队列和共享内存NETWORKCLONE_NEWNETnetwork device interfaces, IPv4 and IPv6 protocol stacks, IP routing tables, firewall rules, the /proc/net and /sys/class/net directory trees, sockets, etc (since Linux 2.6.24) 网络设备,网络栈,端口等MOUNTCLONE_NEWNSMount points (since Linux 2.4.19) 挂载点(文件系统)PIDCLONE_NEWPIDProcess IDs (since Linux 2.6.24) 进程编号UserCLONE_NEWUSERUser and group IDs (started in Linux 2.6.23 and completed in Linux 3.8) 用户和用户组(3.8后内核支持)UTSCLONE_NEWUTSHostname and NIS domain name (since Linux 2.6.19) 主机名与域名(自Linux 2.6.19)CgroupCLONE_NEWCGROUPCgroup root directory (since Linux 4.6) Cgroup根目录(自Linux 4.6)

cgroup的特点与功能:


4.Docker 容器文件系统

描述:从下面的图片可以看见出以下几点:

总结:

参考书籍:Docker技术入门与实战


0x01 Docker 安装

1. Linux

系统环境:docker最低支持centos7且在64位平台上,内核版本在3.10以上 官方安装文档:docs.docker.com/install/lin… 镜像开源安装站点:mirrors.tuna.tsinghua.edu.cn/help/docker…


官方一键安装脚本 补充时间:[2020年4月22日 11:00:59]

一键安装Docker-ce以及Docker-compose:

##[docker]
#国外
curl -fsSL https://get.docker.com | bash -s docker
#国内
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -fsSL https://get.docker.com -o get-docker.sh && chmod +x get-docker.sh && ./get-docker.sh
#测试安装结果
docker-info

##[docker-compose]
sudo curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
#测试安装结果
docker-compose version

Yum安装Docker / Docker-compose

#删除历史docker版本
yum remove -y  docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

#下载docker repo包
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#或者手动设置官方源
sudo tee /etc/yum.repos.d/docker.repo <<-'EOF'
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

#下载安装docker-ce社区版本
#Docker Community Edition (CE)对于希望开始使用Docker并尝试基于容器的应用程序的开发人员和小型团队来说非常理想。
#Docker CE有三种更新通道:稳定通道、测试通道和夜间通道:
sudo yum install -y docker-ce docker-compose  #手动官方源执行 docker-ce-cli containerd.io

# 更新docker-ce
yum -y upgrade docker-ce

#按照版本号从高到低排序
[root@zabbix log]$ yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64            3:18.09.5-3.el7                    docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                    @docker-ce-stable  #当前使用版本

# Docker 是一个 C/S 架构的服务,安装好 docker 之后需要启动 docker 软件后才能使用 docker 命令;
systemctl start/status docker  # 启动docker-ce

# 查看docker启动状态
docker version
Client:
 Version:           18.09.5
 API version:       1.39
 Go version:        go1.10.8
 Git commit:        e8ff056
 Built:             Thu Apr 11 04:43:34 2019
 OS/Arch:           linux/amd64

# 移出docker-ce
$ sudo yum remove docker-ce
#主机上的映像、容器、卷或自定义配置文件不会自动删除。删除所有图像、容器和卷:
$ sudo rm -rf /var/lib/docker

#测试 docker 下载 hello-world 或者 alpine
docker pull hello-world
docker images
docker run hello-world

docker-compose的安装补充时间:[2020年1月22日 10:54:55]

docs.docker.com/compose/ -> 选择InstallCompose

#安装docker-compose
#切换为root权限下载并安装docker-compose ( current stable release (v1.25.0)  )
$ curl -L "https://github.com/docker/compose/releases/download/1.25.5/docker-compose-$(uname -s)-$(uname -m)" > /usr/local/bin/docker-compose  
$ chmod +x /usr/local/bin/docker-compose    #添加执行权限
#在centos7中使用python-pip安装docker-compose
$yum install -y python3
$pip3 install pip --upgrade
[root@vm-1575613390 ~]# pip --version
pip 19.3.1 from /usr/local/lib/python3.6/site-packages/pip (python 3.6)

$pip3 install docker-compose

补充说明:[2020年4月22日 10:58:21]


其它操作系统参考: Ubuntu的安装:docs.docker.com/install/lin…


2. Windows

Windows 下安装 Docker:www.docker.com/products/do… 使用CPU虚拟化检测工具(LeoMoon CPU-V)检测环境:


window 7 Step 1.下载 docker Tool box 进行全安装FULL Installation

Step 2.安装成功后会在桌面出现virtual VM,docker,Kitematic(Alpha)等等

Oracle VM VirtualBox:虚拟机管理器,可以创建虚拟机;也可对当前正在运行的虚拟机进行管理.

Step 3.点击 Docker Quickstart Terminal进行下载boot2docker.iso 运气好不报错的话可以说明安装完成

Step 4.而我win7启动 Docker Quickstart Terminal报错,解决方法也是很简单

下载后放在C:\Users\WeiyiGeek.docker\machine\cache\boot2docker.iso即可

解决上述问题后,验证安装:

docker pull hello-world
docker images
docker run hello-world


Step 5.安装后的docker是可以通过ssh连接的,boot2docker用户和密码 ```bash docker tcuser ssh root command:sudo -i (docker用户下执行) ``` ![WeiyiGeek.dockerssh](https://cdn.jsdelivr.net/gh/WeiyiGeek/blogimage/2019/20190505215933.png)

window 10 描述: 现在在Windows 10 Pro, Enterprise, and Education等系统版本中可以进行下载安装Docker Desktop for Windows下载地址-当前版本2.3.0.3,它可以进行使用的界面来操作查看docker中的容器,以此来简化了学习成本; Step 1.设置docker进行安装,加入到PATH之中 Step 2.安装成功,关闭窗口 Step 3.安装后利用powershell进行查看docker版本

> docker version
> docker run hello-world

Step 4.查看docker pull下来得镜像,并且运行

> docker images  #查看镜像
> docker run -it hello-world


3. MAC


4. 加速器配置

方式1:使用DaoCloud加速器 简介:DaoCloud 加速器 是广受欢迎的 Docker 工具,解决了国内用户访问 Docker Hub 缓慢的问题。DaoCloud 加速器结合国内的 CDN 服务与协议层优化,成倍的提升了下载速度。 DaoCloud官网: www.daocloud.io/mirror#acce…


方式2:使用阿里云容器镜像服务加速器 推荐安装1.10.0以上版本的Docker客户端,您可以通过修改daemon配置文件/etc/docker/daemon.json来使用加速器:

#方法1.常规加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://xlx9erfu.mirror.aliyuncs.com"]
}
EOF

#方法2:对于 1.12 以前的版本, dockerd 换成 docker daemon 
#注:编辑docker.service文件
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --registry-mirrors=https://xlx9erfu.mirror.aliyuncs.com

#方法3:Docker-CE17.12版本以及之后(CentOS7.0)
vi /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd --registry-mirror=https://xlx9erfu.mirror.aliyuncs.com

#通用启动
sudo systemctl daemon-reload   #重载守护
sudo systemctl restart docker

#检查加速器是否生效
sudo ps -ef | grep dockerd
root 5346 1 0 19:03 ? 00:00:00 /usr/bin/dockerd --registry-mirror=https://jxus37ad.mirror.aliyuncs.com

补充一键配置:

# Docker中国 mirror
# export REGISTRY_MIRROR="https://registry.docker-cn.com"
# 腾讯云 docker hub mirror
# export REGISTRY_MIRROR="https://mirror.ccs.tencentyun.com"
# 华为云镜像
# export REGISTRY_MIRROR="https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"
# DaoCloud 镜像
# export REGISTRY_MIRROR="http://f1361db2.m.daocloud.io"
# 阿里云 docker hub mirror
# export REGISTRY_MIRROR=https://registry.cn-hangzhou.aliyuncs.com
export REGISTRY_MIRROR=https://xlx9erfu.mirror.aliyuncs.com
curl -sSL https://kuboard.cn/install-script/set_mirror.sh | sh -s ${REGISTRY_MIRROR}

WeiyiGeek Blog - 为了能到远方,脚下的每一步都不能少。

博主 Blog 镜像站点(友链交换请邮我哟):

更多原创学习笔记文章请关注 WeiyiGeek 公众账号

【点击我关注】