诺禾-容器云技术

容器云技术

Docker引擎的装置
准备两台虚拟机,一台为docker主节点,一台为docker客户端,装置CentOS7.5_1804系统

根底环境配置
网卡配置(master节点)
修正docker主节点主机名

hostnamectl set-hostname master

配置网卡

vi /etc/sysconfig/network-scripts/ifcfg-ens33

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=099334fe-751c-4dc4-b062-d421640ceb2e
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.7.10
NETMASK=255.255.255.0
GATEWAY=192.168.7.2
DNS1=114.114.114.114

网卡配置(slave节点)
修正docker客户端主机名

hostnamectl set-hostname slave

配置网卡

vi /etc/sysconfig/network-scripts/ifcfg-ens33

iTYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=53bbedb7-248e-4110-bd80-82ca6371f016
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.7.20
NETMASK=255.255.255.0
GATEWAY=192.168.7.2
DNS1=114.114.114.114

配置YUM源(两个节点)
将提供的紧缩包Docker.tar.gz上传至/root目录并解压

tar -zxvf Docker.tar.gz

配置本地YUM源

vi /etc/yum.repos.d/local.repo

[kubernetes]
name=kubernetes
baseurl=file:///root/Docker
gpgcheck=0
enabled=1

晋级系统内核(两个节点)
Docker CE支持64位版本CentOS 7,并且请求内核版本不低于3.10

yum -y upgrade

配置防火墙(两个节点)
配置防火墙及SELinux

systemctl stop firewalld && systemctl disable firewalld

Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

iptables -t filter -F

iptables -t filter -X

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

reboot

开启路由转发(两个节点)

vi /etc/sysctl.conf

net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1

modprobe br_netfilter

sysctl -p

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1

Docker引擎装置
装置依赖包(两个节点)
yum-utils提供了yum-config-manager的依赖包,device-mapper-persistent-data和lvm2are需求devicemapper存储驱动

yum install -y yum-utils device-mapper-persistent-data

装置docker-ce(两个节点)
Docker CE是免费的Docker产品的新称号,Docker CE包含了完好的Docker平台,十分合适开发人员和运维团队构建容器APP

装置指定版本的Docker CE

yum install -y docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io

启动Docker(两个节点)
启动Docker并设置开机自启

systemctl daemon-reload

systemctl restart docker

systemctl enable docker

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

查看docker的系统信息

docker info

Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.09.6
Storage Driver: overlay2

Docker仓库的运用
构建私有仓库
官方的Docker Hub是一个用于管理公共镜像的仓库,用户能够在上面找到需求的镜像,也能够把私有镜像推送上去。官方在Docker Hub上提供了Registry的镜像,能够直接运用该Registry镜像来构建一个容器,搭建私有仓库效劳

运转Registry(master节点)
将Registry镜像运转并生成一个容器

./image.sh

docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest

dff76b9fb042ff1ea15741a50dc81e84d7afad4cc057c79bc16e370d2ce13c2a

Registry效劳默许会将上传的镜像保管在容器的/var/lib/registry中,将主机的/opt/registry目录挂载到该目录,可完成将镜像保管到主机的/opt/registry目录

查看运转状况(master节点)
查看容器运转状况

docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
dff76b9fb042 registry:latest “/entrypoint.sh /etc…” About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp registry

查看状态
Registry容器启动后,翻开阅读器输入地址http://192.168.7.10:5000/v2/

上传镜像(master节点)
配置私有仓库

vi /etc/docker/daemon.json

{
“insecure-registries”:[“192.168.7.10:5000”]
}

systemctl restart docker

标志镜像

docker tag centos:latest 192.168.7.10:5000/centos:latest

运用上传标志的镜像

docker push 192.168.7.10:5000/centos:latest

The push refers to repository [192.168.7.10:5000/centos]
9e607bb861a7: Pushed
latest: digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf size: 529
查看仓库中的镜像

curl -L http://192.168.7.10:5000/v2/_catalog

{“repositories”:[“centos”]}
拉取镜像(slave节点)
配置私有仓库地址

vi /etc/docker/daemon.json

{
“insecure-registries”:[“192.168.7.10:5000”]
}

systemctl restart docker

拉取镜像并查看结果

docker pull 192.168.7.10:5000/centos:latest

latest: Pulling from centos
729ec3a6ada3: Pull complete
Digest: sha256:6ab380c5a5acf71c1b6660d645d2cd79cc8ce91b38e0352cbf9561e050427baf
Status: Downloaded newer image for 192.168.7.10:5000/centos:latest

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.7.10:5000/centos latest 0f3e07c0138f 7 months ago 220MB

Docker镜像和容器的运用
在docker主节点master主机上操作

镜像的根本管理和运用
镜像有多种生成办法:

(1)能够从无到有开端创立镜像

(2)能够下载并运用他人创立好的现成的镜像

(3)能够在现有镜像上创立新的镜像

能够将镜像的内容和创立步骤描绘在一个文本文件中,这个文件被称作Dockerfile,经过执行docker build 命令能够构建出Docker镜像

查看镜像列表
列出本地主机上的镜像

./image.sh

docker images

REPOSITORY TAG IMAGE ID CREATED SIZE
httpd latest d3017f59d5e2 7 months ago 165MB
busybox latest 020584afccce 7 months ago 1.22MB
nginx latest 540a289bab6c 7 months ago 126MB
redis alpine 6f63d037b592 7 months ago 29.3MB
python 3.7-alpine b11d2a09763f 7 months ago 98.8MB
4cda95efb0e4 7 months ago 80.6MB
192.168.7.10:5000/centos latest 0f3e07c0138f 7 months ago 220MB
centos latest 0f3e07c0138f 7 months ago 220MB
registry latest f32a97de94e1 14 months ago 25.8MB
swarm latest ff454b4a0e84 24 months ago 12.7MB
httpd 2.2.32 c51e86ea30d1 2 years ago 171MB
httpd 2.2.31 c8a7fb36e3ab 3 years ago 170MB

REPOSITORY:表示镜像的仓库源

TAG:镜像的标签

IMAGE ID:镜像ID

CREATED:镜像创立时间

SIZE:镜像大小

运转容器
同一仓库源能够有多个TAG,代表这个仓库源的不同个版本

docker run -i -t -d httpd:2.2.31 /bin/bash

be31c7adf30f88fc5d6c649311a5640601714483e8b9ba6f8db853c73fc11638

-i:交互式操作

-t:终端

-d:后台运转

httpd:2.2.31:镜像名,运用https:2.2.31镜像为根底来启动容器

/bin/bash:容器交互式Shell

假如不指定镜像的版本标签,则默许运用latest标签的镜像

获取镜像
当本地主机上运用一个不存在的镜像时,Docker会自动下载这个镜像。假如需求预先下载这个镜像,能够运用docker pull命令来下载

格式

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

OPTIONS阐明:

-a:拉取一切tagged镜像。

–disable-content-trust:疏忽镜像的校验,默许开启

查找镜像
查找镜像普通有两种方式,能够经过Docker Hub(https://hub.docker.com/)网站来搜索镜像,也能够运用docker search命令来搜索镜像

格式

docker search [OPTIONS] TERM

OPTIONS阐明:

–automated:只列出automated build类型的镜像

–no-trunc:显现完好的镜像描绘

–filter=stars:列出珍藏数不小于指定值的镜像

搜索httpd寻觅合适的镜像

docker search --filter=stars=10 java

NAME DESCRIPTION STARS OFFICIAL AUTOMATED
node Node.js is a JavaScript-based platform for s… 8863 [OK]
tomcat Apache Tomcat is an open source implementati… 2739 [OK]
openjdk OpenJDK is an open-source implementation of … 2265 [OK]
java Java is a concurrent, class-based, and objec… 1976 [OK]
ghost Ghost is a free and open source blogging pla… 1188 [OK]
couchdb CouchDB is a database that uses JSON for doc… 347 [OK]
jetty Jetty provides a Web server and javax.servle… 336 [OK]
groovy Apache Groovy is a multi-faceted language fo… 92 [OK]
lwieske/java-8 Oracle Java 8 Container - Full + Slim - Base… 46 [OK]
nimmis/java-centos This is docker images of CentOS 7 with diffe… 42 [OK]
fabric8/java-jboss-openjdk8-jdk Fabric8 Java Base Image (JBoss, OpenJDK 8) 28 [OK]
cloudbees/java-build-tools Docker image with commonly used tools to bui… 15 [OK]
frekele/java docker run --rm --name java frekele/java 12 [OK]

NAME:镜像仓库源的称号

DESCRIPTION:镜像的描绘

OFFICIAL:能否是Docker官方发布

stars:相似GitHub里面的star,表示点赞、喜欢的意义

AUTOMATED:自动构建

删除镜像
格式

docker rmi [OPTIONS] IMAGE [IMAGE…]

OPTIONS阐明:

-f:强迫删除

–no-prune:不移除该镜像的过程镜像,默许移除

强迫删除本地镜像busybox

docker rmi -f busybox:latest

Untagged: busybox:latest
Deleted: sha256:020584afccce44678ec82676db80f68d50ea5c766b6e9d9601f7b5fc86dfb96d
Deleted: sha256:1da8e4c8d30765bea127dc2f11a17bc723b59480f4ab5292edb00eb8eb1d96b1

容器的根本管理和运用
容器是一种轻量级的、可移植的、自包含的软件打包技术,使应用程序简直能够在任何中央以相同的方式运转。容器由应用程序自身和依赖两局部组成

运转容器
运转第一个容器

docker run -it --rm -d -p 80:80 nginx:latest

d7ab2c1aa4511f5ffc76a9bba3ab736fb9817793c6bec5af53e1cfddfb0904cd

-i:交互式操作

-t:终端

-rm:容器退出后随之将其删除,能够防止糜费空间

-p:端口映射

-d:容器在后台运转

过程
简单描绘

(1)下载Nginx镜像

(2)启动容器,并将容器的80端口映射到宿主机的80端口

运用docker run来创立容器

(1)检查本地能否存在指定的镜像,不存在就从公有仓库下载

(2)应用镜像创立并启动一个容器

(3)分配一个文件系统,并在只读的镜像层外面挂载一层可读写层

(4)从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去

(5)从地址池配置一个IP地址给容器

(6)执行用户指定的应用程序

你可能感兴趣的:(诺禾-容器云技术)