容器云
认识容器
容器简介
容器是一种轻量级的、可移植的、自包含的软件打包技术
本质:一组受到资源限制且彼此间相互隔离的进程
与虚拟化技术的区别
传统虚拟化技术
虚拟了一套硬件后,在其上运行一个完整的 *** 作系统,在该系统上再运行所需应用进程
容器
可共享同一个 *** 作系统的内核,将应用进程与系统其他部分隔离开
资源有限时,想部署轻量级应用,容器更有优势
docker容器
定义:一个开源的应用容器引擎
三大技术
Namespace
分离进程树、网络接口、挂载点以及进程间通信等资源的方法
docker就是通过namespace对不同的容器实现隔离
Cgroups
作用:限制某个或某些进程的资源分配
AUFS
能透明地覆盖一或多个现有文件系统的层状文件系统,支持将不同目录挂载到同一个虚拟文件系统下的文件系统
是一种虚拟化技术,不用格式化,直接挂载
Copy on Write(写入复制)
docker的优势
更高效地利用系统资源
更快速的交付和部署
更高效的部署和扩容
更简单的管理
Docker容器的系统架构
docker的架构
C/S架构
docker的组件
docker daemon服务器
docker客户端
docker镜像
-
是一个只读模板,用于创建docker容器
-
自定义镜像
docker仓库
-
用于集中存放镜像文件的场所
-
分类
-
互联网公共镜像仓库:Docker Hub
-
私有镜像仓库:Registry
docker容器
Docker容器的实训
Docker引擎的安装
基础环境配置
配置yum源
vi /etc/yum.repod.s/local.repo
升级系统内核
yum upgrade -y
uname -r
配置防火墙和SELinux
systemctl stop firewalld && systemctl disable firewalld
iptables -t filter -F
iptables -t filter -X
iptables -t filter -Z
/usr/sbin/iptables-save
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config
reboot
开启路由转发
cat >> /etc/sysctl.conf << EOF
net.ipv4.ip_forward=1 net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF
modprobe br_netfilter
sysctl -p
Docker引擎安装
安装依赖包
yum install -y yum-utils device-mapper-persistent-data
安装docker-ce
yum install docker-ce-18.09.6 docker-ce-cli-18.09.6 containerd.io -y
启动docker
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
查看docker系统信息
docker info
Docker仓库的使用
构建私有仓库
在搭建好docker的环境下运行 Registry仓库
./image.sh
docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest
查看运行情况
docker ps
私有仓库的使用
上传镜像
cat /etc/docker/daemon.json
{ “insecure-registries”: [“10.18.4.30:5000”] }
systemctl restart docker
为镜像打上标记
docker tag centos:latest 10.18.4.30:5000/centos:latest
上传标记的镜像
docker push 10.18.4.30:5000/centos:latest
curl 命令查看仓库中的镜像
curl -L http://10.18.4.30:5000/v2/_catalog
拉取镜像
docker pull 10.18.4.30:5000/centos:latest
Docker仓库
构建https证书
生成 CA 证书
mkdir -p /data/ssl
cd /data/ssl/
openssl req -newkey rsa:4096 -nodes -sha256 -keyout ca.key -x509 -days 2.235 -out ca.crt
生成证书签名请求
openssl req -newkey rsa:4096 -nodes -sha256 -keyout www.yidaoyun.com.key -out www.yidaoyun.com.csr
生成注册表主机的证书
openssl x509 -req -days 2.235 -in www.yidaoyun.com.csr -CA ca.crt 10 -CAkey ca.key -CAcreateserial -out www.yidaoyun.com.crt
分发证书
cp -rfv www.yidaoyun.com.crt /etc/pki/ca-trust/source/anchors/
update-ca-trust enable
update-ca-trust extract
安装 docker-compose
mv docker-compose /usr/local/bin/
chmod +x /usr/local/bin/docker-compose
docker-compose --version
安装Harbor仓库
下载 Harbor 安装包
tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /opt/
进入到 harbor 目录
cd /opt/harbor/
编辑配置文件
vi harbor.cfg
-
hostname = 10.24.2.37 #修改 harbor 的启动 ip,这里需要依据系统 ip 设置
-
ui_url_protocol = https #启用加密传输协议 https
-
ssl_cert = /data/ssl/www.yidaoyun.com.crt #证书的位置
-
ssl_cert_key = /data/ssl/www.yidaoyun.com.key #证书密钥位置
-
harbor_admin_password = 000000 #修改 harbor 的 admin 用户的密码
安装 Harbor
./prepare
镜像管理与安全
配置本地 deamon.json 文件
{ “registry-mirrors”: [“https://5twf62k1.mirror.aliyuncs.com”], “insecure-registries”: [“10.24.2.37”] }
systemctl restart docker
重新启动 Harbor 私有镜像仓库
./prepare
清理所有 Harbor 容器进程
cd /opt/harbor
docker-compose down
docker-compose up -d
上传镜像
docker tag centos:latest 10.24.2.37/library/centos:latest
docker login https://10.24.2.37
docker push 10.24.2.37/library/centos:latest
重新启用漏洞扫描
./install.sh --with-notary --with-clair
Docker镜像和容器的使用
镜像的基本管理和使用
查看镜像列表
./image.sh
docker images
运行容器
docker run -i -t -d httpd:2.2.31 /bin/bash
查找镜像
docker search --filter=stars=10 java
从容器创建一个新的镜像
# docker commit -a “xiandian” -m “nginx-test” 5d42a9fafeb6 nginx:v1
docker命令
docker tag 语法
docker tag IMAGE:TAG/]REPOSITORY[:TAG]
docker images
REPOSITORY:表示镜像的仓库源。
TAG:镜像的标签。
IMAGE ID:镜像 ID。
CREATED:镜像创建时间。
SIZE:镜像大小。
docker run
-i:交互式 *** 作。
-t:终端。
-d:后台运行。
httpd:2.2.31:镜像名,使用 https:2.2.31 镜像为基础来启动容器。
/bin/bash:容器交互式 Shell。
获取镜像语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
查找镜像
docker search [OPTIONS] TERM
删除镜像
docker rmi [OPTIONS] IMAGE [IMAGE…]
强制删除。
–no-prune:不移除该镜像的过程镜像,默认移除。
启动容器
docker start [CONTAINER ID]
列出所有容器(包含终止状态)
docker ps -a
查看具体容器的信息
docker inspect [container ID or NAMES]
查看容器的使用资源状况
docker stats [container ID or NAMES]
进入容器
docker exec -it [CONTAINER ID] bash
删除终止状态的容器
docker rm [CONTAINER ID]
删除运行中的容器
docker rm -f [CONTAINER ID]
导入/导出容器
docker export [CONTAINER ID] > [tar file]
cat [tar file] | docker import - [name:tag]
将镜像保存为文件
docker save -o [tar file] IMAGE
从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-
-a:提交的镜像作者
-
-c:使用 Dockerfile 指令来创建镜像
-
-m:提交时的说明文字
-
-p:在 commit 时,将容器暂停
Dockerfile
FROM:指定基础镜像,必须为第一个命令。
MAINTAINER:维护者信息。
RUN:构建镜像时执行的命令。
ADD:将本地文件添加到容器中,tar 类型文件会自动解压(网络压缩资源不会被解 压),可以访问网络资源,类似 wget。
COPY:功能类似 ADD,但是是不会自动解压文件,也不能访问网络资源。
CMD:构建容器后调用,也就是在容器启动时才进行调用。
ENTRYPOINT:配置容器,使其可执行化。配合 CMD 可省去“application”,只使 用参数。
LABEL:用于为镜像添加元数据。
ENV:设置环境变量。
EXPOSE:指定与外界交互的端口。
VOLUME:用于指定持久化目录。
WORKDIR:工作目录,类似于 cd 命令。
评论列表(0条)