ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

云原生学习(二)之容器化基础

2022-06-25 20:34:18  阅读:114  来源: 互联网

标签:原生 容器 学习 nginx yum 镜像 docker id


Docker基本概念

解决的问题

统一标准

应用构建

java、c++、javaScript
打包成镜像
exe
docker build.....镜像
应用分享
所有软件的镜像放到一个指定的地方 docker hub
安卓、应用市场
应用运行
统一的标准的镜像
docker run
容器化技术
1.基础镜像MB级别
2.创建简单
3.隔离性强
4.启动速度秒级
5.移植与分享方便

资源隔离

cpu、memory资源隔离与限制
访问设备隔离与限制
网络隔离与限制
用户、用户组隔离限制

架构  

Docker Host:
    安装Docker的主机

Docker Daemon
    运行在Docker主机上的Docker后台进程

Client
    操作Docker主机的客户端(命令行、UI等)

Registry
    镜像仓库
    Docker Hub

Images
    镜像、带环境打包好的程序、可以直接启动运行

Containers
    容器、由镜像启动起来正在运行中的程序

Docker的安装  

确定你是Centos7及以上版本

cat /etc/redhat-release
卸载旧版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

yum安装gcc相关

yum -y install gcc
yum -y install gcc-c++ 

安装需要的软件包

yum install -y yum -utils

使用阿里云服务器要再加上一步才可以设置镜像

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

设置stable镜像仓库

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

设置阿里云镜像

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

更新yum软件包索引

yum makecache fast 

安装DOCKER CE 

sudo yum install docker-ce docker-ce-cli containerd.io 
启动如果没有报错说明没有问题
systemctl start docker 
查看后台服务
 ps -ef |grep docker

 测试

docker version

 

docker run hello-world 

卸载

 systemctl stop docker
 yum remove docker-ce docker-ce-cli containerd.io
 rm -rf /var/lib/docker
 rm -rf /var/lib/containerd

镜像加速器配置

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://l3su1l19.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload

sudo systemctl restart docker

为什么Docker会比vm虚拟机快  

传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;
2.容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
3.每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。

1.docker 有着比虚拟机更少的抽象层
由于docker不需要Hypervisor(虚拟机)实现硬件资源虚拟化,运行在docker容器上的程序直接试用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显的优势。。

2.docker利用的是宿主机的内核,而不需要加载操作系统的OS内核
当新建一个容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载OS,返回新建的过程时分钟级别的,而docker由于直接利用宿主机的操作系统,则省略了返回过程,因此新建一个docker容器只需要几秒钟。

帮助启动类命令

启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help 

原本的docker源:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

换成了阿里的:

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

但是问题也就出现在这里了,
但我使用sudo systemctl enable docker命令的时候
给我报了这个

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

最后知道了,因为我在使用源的时候,执行了这个

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

但是如果我们换成了阿里的之后,这个并没有先操作!
因此如果我们换了了阿里云之后,还是必须执行这个命令

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

然后就能解决这个报出来了问题了.

安装Nginx

#拉取最新镜像
docker pull nginx
#镜像名:版本号
docker pull nginx:1.20.1
#拉取最新镜像
docker pull redis
#镜像名:版本号
docker pull redis:6.2.4
##下载来的镜像都在本地
docker images #查看所有镜像
redis =redis:lateest
#卸载
docker rmi 镜像名:版本号/镜像id

容器操作 

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

docker run 设置项 镜像名  镜像启动运行的命令(镜像里面默认有的,一般不会写)

#文档帮助
docker run --help

#启动nginx
-d后台运行
--restart=always:开机自启
-p设置端口 docker run --name=nginx -d --restart=always -p 88:80 nginx #查看正在运行的容器 docker ps #查看所有 docker ps -a #删除停止的容器 docker rm 容器的名字/id
#强制删除命令
docker rm -f mynginx #停止容器 docker stop 容器id/名字 #再次启动 docker start 容器id/名字 #访问 curl 127.0.0.1:80 #更新容器的设置项 docker update 容器id/名字 --restart=always #重启 reboot

 进入容器修改内容 

#查看
docker ps
#进入docker容器中
docker exec -it 容器id /bin/bash
#进入nginx中
 cd /usr/share/nginx/
#查看
ls
#进入html
cd html
#查看
ls
#替换
echo "<h1>Welcome to yongyuankuaile</h1>" > index.html
#查看
cat index.html
#退出
exit
#退出
exit

提交改变  

#查看运行的
docker ps
#提交
docker commit --help

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

#提交(容器id是运行的容器id)
docker commit -a "leifengyang" -m "首页变化" 容器id guignginx:v1.0

#查看
docker images

#测试删除(容器id是运行的容器id)
docker rm -f 容器id

#启动
docker run -d -p 88:80 --name mybnginx nginx

#查看是否运行
docker ps

#测试删除(容器id是运行的容器id)
docker rm -f 容器id

#启动
docker run -d -p 88:80  guignginx:v1.0

#查看是否运行
docker ps

容器传输

#查看
docker images
#帮助
docker save --help
#将镜像保存成为压缩包
docker save -o abc.tar 容器名:v1.0
#查看
ls
#复制别的主机
scp abc.tar  root@远程主机ip:/root/
输入密码就开始传输

#别的机器加载这个镜像
docker load -i abc.tar

另一个被传输的主机

#需要安装gitlab和prometheus

#查看
ls

#帮助
docker load --helo

#使用传输的镜像
docker load -i abc.tar

#检查
docker images

#启动
docker ps

#启动
docker run --name=mynginx -d -p 80:80 guignginx:v1.0

#查看
docker ps

镜像推送

 登录https://hub.docker.com/里面

 创建仓库

docker tag local-image:tagname new-repo:tagname
docker push new-repo:tagname
#把旧镜像的名字、改成仓库要求的新版名字
docker tag guignginx:v1.0 zhangyongyuan/guignginx:v1.0
#检查
docker images
#登录到github
docker login
username和password
提示 Login Successed
#(推送完成进行后退出)
docker logout
#推送
docker push  zhangyongyuan/guignginx:v1.0 
推送完成后使用
#查看
docker ps
#删除
docker rm -f 容器id前三个
#查看
docker images
#删除
docker rmi 容器id
#拉取提交后的容器
docker pull zhangyongyuan/quignginx:v1.0
#查看
docker images
#启动
docker run -d -p 80:80 zhangyongyuan/guignginx:v1.0
#查看
docker ps 

挂载

#查看
docker ps
或
docker ps -a
#删除
docker rm 容器id
#查看下载的镜像
docker images
进入容器内部修改
#进行容器内部的系统、修改容器内容
docker exec -it 容器id /bin/bash
#数据到外部修改ro(只读)rw;(读写)
docker run --name=mynginx -d --restart=always -p 88:80 -v /data/html:/usr/share/nginx/html:rw nginx
#修改页面只需要去主机的/data/html

扩展

#查看docker日志
docker logs 容器id
#进入docker容器
docker exec -it 容器id /bin/bash
#docker经常修改nginx配置文件
docker run -d -p 80:80 \
-v /data/html:/usr/share/nginx/html:ro \
-v /data/conf/nginx.conf:/etc/nginx/nginx.conf \
--name mynginx-02 \
nginx
#/data/conf/nginx.conf
nginx.conf是一个目录必须是一个文件才可以所以最好提前在本地建好后在挂载Docker

#把容器指定位置的东西复制出来
docker cp 容器id:/etc/nginx/nginx.conf /data/conf/nginx.conf

docker cp
#把外面的内容复制到容器里面
/data/conf/nginx.conf 容器id:/etc/nginx/nginx.conf

  

  

  

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



标签:原生,容器,学习,nginx,yum,镜像,docker,id
来源: https://www.cnblogs.com/aimangguo/p/16409068.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有