架构师的成长之路初片~Virtual-容器

什么是容器?

  现实中的容器用来装东西的

Linux里面的容器用来干嘛?

  Linux中的容器是装应用的

  容器就是将软件打包成标准单元,用于开发、交付和部署

  容器技术已经成为应用程序封装和交付的核心技术

 

容器技术的核心有以下几个内核技术组成:

  Cgroups(Control Groups)资源管理

  SELinux 安全

  NameSpace--命名空间

 

容器技术的优缺点

优点:

  相比于传统的虚拟化技术,容器更加简洁高效

  传统的虚拟机需要给每个VM安装操作系统

  容器使用的共享公共库和程序

缺点:

  容器的隔离性没有虚拟化强

  共用Linux内核,安全性有先天缺陷

 

 

传统虚拟化VS容器技术(图)

 

 

Docker与容器

  *docker和容器的关系

  Docker是完整的一套容器管理系统

  Docker提供一组命令,让用户更加方便直接地使用容器技术,而不需要过多关心底层内核技术

 

 

DOCKER安装:

配置系统环境:

1:需要64位操作系统

2:至少rhel6.5以上的版本,建议rhel7

3:关闭防火墙(不是必须)

  由于docker软件会自动管理防火墙

 

 

 

配置YUM仓库:

  系统软件,位于centos-1804源中

  扩展依赖包,位于extras源中

  docker软件,位于docker目录中

 

安装前准备:

 

 

1、禁用 selinux [SELINUX=disabled]

​ 2、卸载防火墙 [yum -y remove firewalld-*]

​ 3、docker软件安装包在 云盘\kubernetes\docker 目录下,将 docker 目录上传到跳板机

​ 4、准备 2 台 2cpu,2G内存的云主机

主机名    IP地址    最低配置
docker-0001    192.168.1.31    2CPU,2G内存
docker-0002    192.168.1.32    2CPU,2G内存
跳板机yum源添加docker软件

[root@ecs-proxy ~]# cp -a docker /var/ftp/localrepo/ 
[root@ecs-proxy ~]# cd /var/ftp/localrepo/
[root@ecs-proxy localrepo]# createrepo --update .
在 node 节点验证软件包

[root@docker-0001 ~]# yum makecache
[root@docker-0001 ~]# yum list docker-ce*
以下操作所有 node 节点都需要执行

开启路由转发

[root@docker-0001 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@docker-0001 ~]# sysctl -p
[root@docker-0001 ~]# yum install -y docker-ce
[root@docker-0001 ~]# systemctl enable --now docker
[root@docker-0001 ~]# ifconfig # 验证,能看见 docker0
[root@docker-0001 ~]# docker version # 验证,没有报错

导入 centos nginx redis ubuntu 四个镜像到 node 节点(使用 lftp 或 scp 均可)

镜像素材在云盘的 kubernetes/docker-images/ 目录下

 

 

 

docker run 启动一个新的容器

​ -i 交互式,-t 终端, -d 在后台启动

# 在后台启动容器
[root@docker-0001 ~]# docker run -itd nginx:latest 
9cae0af944d81770c90fdeacf7a632aaa749b0c9fbc0f4cb104e1d1257579e5e
# 在前台启动容器
[root@docker-0001 ~]# docker run -it --name myos centos:latest /bin/bash
[root@de46e6254efd /]# ctrl+p, ctrl+q # 使用快捷键退出,保证容器不关闭

# 查看容器
[root@docker-0001 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED
de46e6254efd        centos:latest       "/bin/bash"              2 minutes ago  
9cae0af944d8        nginx:latest        "nginx -g 'daemon of…"   7 minutes ago  
# 只查看id
[root@docker-0001 ~]# docker ps -q
# 查看所有容器,包含未启动的
[root@docker-0001 ~]# docker ps -a

# 进入容器的默认进程
[root@docker-0001 ~]# docker attach de46e6254efd
[root@de46e6254efd /]# exit # 退出后容器会关闭

# 启动、停止、重启容器
[root@docker-0001 ~]# docker start   de46e6254efd
[root@docker-0001 ~]# docker stop    9cae0af944d8
[root@docker-0001 ~]# docker restart 9cae0af944d8

# 查看容器详细信息
[root@docker-0001 ~]# docker inspect 9cae0af944d8
... ...
      "IPAddress": "172.17.0.2",
... ...
[root@docker-0001 ~]# curl http://172.17.0.2/

# 进入容器,查看路径
[root@docker-0001 ~]# docker exec -it 9cae0af944d8 /bin/bash
root@9cae0af944d8:/# cat /etc/nginx/conf.d/default.conf
... ...
      root   /usr/share/nginx/html;
# 从容器内拷贝首页文件到宿主机,修改后拷贝回容器内
[root@docker-0001 ~]# docker cp 9cae0af944d8:/usr/share/nginx/html/index.html ./index.html
[root@docker-0001 ~]# vim index.html
Hello Tedu
Hello Tedu
Hello Tedu
[root@docker-0001 ~]# docker cp ./index.html 9cae0af944d8:/usr/share/nginx/html/index.html
[root@docker-0001 ~]# curl http://172.17.0.2/

# 删除容器
[root@docker-0001 ~]# docker rm -f de46e6254efd
# 删除所有容器
[root@docker-0001 ~]# docker rm -f $(docker ps -aq)

 


容器内部署应用

[root@docker-0001 ~]# docker rm -f $(docker ps -aq)
[root@docker-0001 ~]# docker run -it --name myapache centos:latest
[root@a7f9d0c3e3e2 /]# rm -f /etc/yum.repos.d/*.repo
#---------------------不要退出这个终端,在另一个终端拷贝 yum 配置文件到容器--------------------
[root@docker-0001 ~]# docker cp /etc/yum.repos.d/CentOS-Base.repo myapache:/etc/yum.repos.d/
#------------------------回到创建容器的终端继续执行命令--------------------------------------
[root@a7f9d0c3e3e2 /]# yum install -y net-tools httpd
[root@a7f9d0c3e3e2 /]# echo Hello world >/var/www/html/index.html
[root@a7f9d0c3e3e2 /]# export LANG=C
[root@a7f9d0c3e3e2 /]# ifconfig
[root@a7f9d0c3e3e2 /]# /usr/sbin/httpd -DFOREGROUND
# 启动服务以后 ctrl-p, ctrl-q 退出
[root@docker-0001 ~]# curl http://172.17.0.2/
Hello world

 

posted @ 2021-05-13 19:48  樱花泪  阅读(67)  评论(0编辑  收藏  举报