一. docker 容器

  1.docker是什么?

1.linux下容器技术有很多,docker是做的最杰出的一款

2.docker能够支撑阿里双十一,京东618的业务,说明,性能,安全性不得差

3.docker容器很容易被大规模创建

4.python为什么火?因为运维领域,golang则是因为docker

5.docker能够解决什么问题?解决环境配置问题

6.每一个docker容器,单独运行一个应用程序

7.docker如同在os的进程上,披着一个马甲,其实还是运行在一个单独linux系统上

8.让开发人员最头疼的就是,环境配置问题,运行一个crm,可能要解决很多的依赖关系,才能运行 

保证操作系统一致性,你本地是windows,服务器可能是centos/ubuntu
你本地开发的是python3,也得保证服务器是python3
还得解决pip的依赖包,linux的PATH变量等等

9.有没有一种办法,能把本地的开发代码,和环境,全部切换到服务器上呢?

解决办法1:vmware 虚拟机模板克隆功能

解决办法2:
docker容器技术
基于系统镜像,安装好的操作系统。
将你的应用程序,和代码,全部打包在一个系统镜像内,(docker image  容器镜像),
镜像就是一个操作系统的压缩文件

10.docker能保证服务器的环境一致性

 linux --- 9. docker 容器 和 rabbitmq 队列 随笔 第1张

 

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  2.docker 的三大概念

容器  container            基于镜像,运行出的容器实例  
镜像 image 系统镜像, 电脑城,老板卖的光盘 了,
            只要基于这个镜像光盘,安装的系统,环境完全一致性
仓库 存放镜像的地方


基于docker镜像,运行出实例
容器 就像是 类的实例化
镜像 就像是 class

 

注:

#托管代码的平台,叫做github
#托管docker镜像的平台,docker hub

 

  3.安装

1.yum安装,必须得指定yum源,yum源大致分为,centos官方的源,
阿里云这样的第三方源,docker官方源(生产环境配置它,最正确)


获取docker社区版
社区ce缩写
企业版是EE缩写 


2.选择阿里云的安装方式,配置好阿里云的yum源

yum install docker -y 


3.启动docker服务端

systemctl start docker

 

4.查看状态

systemctl status docker

 

   4.配置docker加速器,加速下载

  ①下载

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | 
sh -s
http://95822026.m.daocloud.io

  ② 修改配置文件

vim /etc/docker/daemon.json
#修改如下
{"registry-mirrors": ["http://95822026.m.daocloud.io"]}  #去掉结尾的逗号

 

   ③重启

sudo systemctl restart docker   

 

  5.增

①
#获取一个hello-world镜像 ,默认去docker hub 搜索docker镜像
docker search   hello-wolrd    #搜索镜像
docker pull hello-world   #下载镜像,就如同我骑车去电脑城买光盘一样 ,目的都是为了回去一个镜像文件


#基于镜像,运行出容器实例
docker run hello-world  #运行hello-world镜像文件  #语法是 ,docker  run  镜像名 


②
#下载ubuntu的镜像文件    ,下载一个微型的ubuntu系统
docker pull ubuntu

#运行一个ubuntu系统!!!!基于微型的ubuntu系统,运行了一个容器实例,里面是ubuntu微型操作系统
docker run ubuntu 


#交互式的运行一个ubuntu系统,可以进行命令交互,,并且进入容器空间内,另一个操作系统
docker run -it ubuntu /bin/bash
    #参数解释
    -i 交互式的运行
    -t  开启一个终端 termenl
    /bin/bash 就是linux的shell解释器  ,


③    
#运行一个交互式的centos容器记录

docker run -it centos 
    
    
什么是linux的shell解释器? 

python解释器是用来解释且执行python代码的
shell解释器是用来解释且执行shell代码的,我们输入的ls  cd  都是通过shell进行翻译,linux才认识的
shell和python都是一个语言的解释器


④ #运行一个后台有进程的容器,活着的容器 docker run
-d centos /bin/sh -c "while true;do echo 买了佛冷; sleep 1;done" #参数解释 docker run 运行镜像 -d daemonize 后台运行 centos 镜像名 /bin/sh 指定shell的sh解释器 -c 指定一段shell代码 "while true;do echo 买了佛冷; sleep 1;done" #死循环的每秒钟打印一个买了佛冷 #运行一个自定义名字的容器记录 docker run --name s18foleng -d centos /bin/sh -c "while true;do echo 买了佛冷; sleep 1;done"

 

  6.删

 


#删除容器记录
docker rm 容器id

 

#一次性删除所有容器记录

 

docker rm `docker ps -aq`
`` 反引号是取得命令的结果,保存下来

 



#删除镜像
docker rmi 镜像id(可写前三个)

 


docker rmi -f `docker images -aq`
#危险命令 ,这个命令,只能删除没有容器记录依赖的镜像文件
-f 强制删除

 

 

  7.改

#进入正在运行的容器空间内
docker exec -it 容器id  /bin/bash 

#修改docker镜像的名字

docker tag 镜像id   新的镜像名
docker  tag  9ed836d5dd03  yuchao163/s18-aliyun-centos-vim 


#启停docker容器
docker start 容器id
docket stop 容器id

#批量停止docker容器
docker stop `docker ps -aq`

 

  8.查

#查询当前机器拥有的镜像文件
docker image ls  #列出镜像文件
docker images  #同上,版本升级,命令也就升级了 

#运行过镜像后,会产生一个容器记录,容器进程的查看

docker  ps          #查看正在运行的容器记录 ,容器内必须有后台运行的进程,否则容器挂掉 

docker ps  -a  #显示所有运行过的容器进程记录

#查询容器内的日志信息
docker logs  容器id  #一次性打印日志
docker logs -f  容器id  #不间断打印容器日志 

cat /etc/os-release  查看本机的具体系统参数

 

 

  9.导入,导出  镜像

#构建自己自己的docker镜像,提交本地的docker容器 
1.运行一个centos基础镜像,默认没有vim,在容器空间内安装vim(也可以替换成python),且配置阿里云的yum源  

docker run -it centos /bin/bash 

2.安装wget,下载阿里云的yum源
yum install wget -y  

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo


3.  此时基于阿里云的yum源下载vim
yum install vim -y 

4.退出容器空间
exit

5.提交这个容器记录,生成一个新的镜像文件
docker commit  容器id   镜像名

docker commit  b6a15b909caa  yuchao163/s18-vim-aliyun-centos 



6.导出这个镜像,成为一个压缩文件,我就可以给大家发送下去 

#导出docker镜像
docker save   9ed836d5dd03  > /opt/mydocker.tar.gz


#导入docker镜像
docker load  <  /opt/mydocker.tar.gz

 

   10.端口映射

① 随机端口
#容器内的端口映射,是在容器空间内,暴露一个端口,供给外部客户端去访问 docker run
-d -P training/webapp python app.py #参数解释 -d 后台运行容器 -P 大写的P 随机端口映射 宿主机端口:容器内端口 随机的映射宿主机的端口:容器内的端口 -p 小写的p 指定端口映射 8080:8000 training/webapp 这个是镜像的名字 python app.py 容器要执行的命令 #docker run 如果运行不存在的镜像,默认会去先docker pull ② 指定端口 #指定端口映射,暴露宿主机的7000,指定映射到容器的5000,这个5000是在容器代码内控制的 docker run -d -p 7000:5000 training/webapp python app.py 0~65535 端口范围

 

   11.托管docker镜像的网址

 

#登录dockerhub个人主站,托管docker镜像的网址

https://hub.docker.com/

yuchao163
Zz2222zz 


1.下载dockerhub上的镜像
docker pull yuchao163/s13-hello-docker-world


2.在linux登录docker hub,然后推送镜像到公网

docker login 

3.修改本地镜像的名字,为docker hub的仓库id
docker tag 镜像id   dockerhubID/镜像名

linux --- 9. docker 容器 和 rabbitmq 队列 随笔 第2张

 

4.推送镜像到docker hub

docker push 镜像id

linux --- 9. docker 容器 和 rabbitmq 队列 随笔 第3张
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄