docker理解与基本运用

docker - ce 

 

 

 

 

  docker概念:Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台。使用Linux容器来部署应用程序称为集装箱化。使用docker轻松部署应用程序。

优点:

  • 灵活:即使是复杂的应用程序也可封装。
  • 轻量级:容器利用并共享主机内核。
  • 便携式:您可以在本地构建,部署到云上并在任何地方运行。
  • 可扩展性:您可以增加和自动分发容器副本。
  • 可堆叠:您可以垂直堆叠服务并及时并及时堆叠服务。

三大组成

镜像(images) 容器(Containers) 仓库(registry)

一,镜像

image  :docker镜像是一个特殊的文件系统,除了提供容器运行所需要的程序,库,资源等,还包含了一些运行时准备的一些参数(匿名卷,环境变量,用户等),镜像不包含任何动态数据,其内容在构建之后也不会被改变

分层存储:简单来说,这里的image不是一个真正ISO那样的文件,这里只是一个虚拟的概念,体现方式不是文件组成,是由一组文件系统组成,或者说,多层系统联合。

二,容器

containers:容器是镜像运行时的,实质就是进程,但是与宿主机进程不同,它有自己的网络配置,有自己独立的命名空间,容器存储层的周期和容器一样,容器消亡时,容器存储

三,仓岙库(docker regsistry)

镜像构建完成后,如果需要其他服务使用这个镜像,就需要一个容器存储,来分发镜像,这个时候就需要库了,在库里,一个仓库包含一个软件不同版本的镜像,每个仓库可以包含多个标签,标签就常用于对应软件的各个版本

 仓库 < 镜像 < 容器 

公共的仓库(docker Hub)

私有库

docker简单的操作

下载:docker-ce
搭建源,再用YUM直接安装即可(以下源任选一个即可)
阿里下载源
# wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
国内下载源(最新)
# wget https://download.docker.com/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
 ********************每个节点安装docker前需要的软件包********************************

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

#wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
#yum install -y docker-ce....

安装完后,dockers目录在/etc/docker/

*********只是简单Yum安装的docker不是最新版本的

*****************************安装最新版本的docker如下:******************************

#卸载# yum remove  docker

#如果还有docker的一些包残留,用rpm -e 全部卸载掉

#cd /etc/yum.repos,d/

#mv  backup/CentOS-Base.repo   ./

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

#wget http://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

#yum -y install docker-ce

安装完后是最新版本19.03.13

配置加速器(自己登陆阿里云也可以自己创建一个加速器https://cr.console.aliyun.com/)

#vim   /etc/docker/daemon.json

{
        "exec-opts": ["native.cgroupdriver=systemd"],
        "log-driver": "json-file",
        "log-opts": {
                "max-size": "100m"
        }
}

#systemctl  daemon-reload

#systemctl restart docker

 

dokcer命令:
镜像基本命令:

docker start ID   容器启动            docker stop ID  关闭容器

docker ps         查看容器             -a 所有  -q 只查看ID

docker logs ID    查看容器内的输入

删除:rm (删除已停的容器)            rm -f (删除未停止的容器)

docker info  查看信息                  docker  search  服务名(查找)

docker pull ID 下载                    docker push ID   上传

docker images ID 查看镜像              docker tag ID 修改标签

docker save -o  保存镜像               docker inspect 镜像名

 

退出:exit 退出并结束                ctrl+p+q   退出并运行

 

导出:docker export ID/名称 > 文件

 

导入:cat 文件名 | docker import - 生成的镜像名:标签

 

拷贝:docker cp 主机文件路径 容器ID:目录

 

docker search   -s(好评高的)  100    centos.....[镜像名]  
docker pull 镜像名(nginx) 
docker images 
docker inspect  镜像ID
docker tag 原镜像名:标签    新镜像名:新标签
docker rmi  镜像名:标签
docker save -o 指定下载到本地目录/文件名    镜像名:标签
docker load  -i <绝对路径的包
 
容器:
docker create -itd  镜像名:标签   /bin/bash          创建容器                  
docker start  容器ID                                             运行容器
docker ps -a                                                         查看容器
docker run -d 镜像名:标签                                   
docker run -it 镜像名:标签   -v /html:/usr/local/nginx/html             运行一个容器,并把本机/html映射到容器内部的/html,做为数据卷
docker logs                                                          查看容器输入的命令
docker commit   ID   镜像名:标签                        提交容器
docker  stop    容器iD                                          停止容器
构建镜像:
docker  build  -f file文件  -t  镜像名
dockerfile文件
格式:
FROM  centos:latest
MAINTAINER  ming
RUN <命令>
EXPOSE  <端口>                              #指定端口映射
ENV  <key> <value> 
ENV JAVA_HOME  /usr/local/jdkxxxxx/      #环境变量
ADD <源路径>   <目标路径>                    #拷贝文件
COPY <源路径>   <目标路径>
VOLUME    <容器内路径>                #定义匿名数据卷,会自动挂载到此卷
WORKDIR   <指定工作目录>
CMD    <命令>                 #不同于run,一遍用完于文件最后指定运行文件,
CMD   [<文件命令>,<参数>.......]
 
 
 
 
对docker优化、
容器cpu使用率---------资源限制:
#运行容器后,找到容器cpu分配文件:cpu.cfs_quota_us (默认文件内容只有1000000:这里指cpu100%)
在docker19.0版本,指的是这个路径#cd  /sys/fs/cgroup/cpu,cpuacct/system.slice/docker-2c839b698ddf7886936899c467559a21f3efa81adcc8b502f713ab6258d146b1.scope
在以前的老版本#我们通过命令来查询cpu.cfs_quota_us 文件在哪里
#find  /sys/fs   -name   "cpu.cfs_quota_us "   
会有很多文件列出来,我们要找的是docker容器运行的id那个容器
然后设置cpu使用率  如:要设置一个使用百分之20的容器                       
#echo “20000”   >   cpu.cfs_quota_us
查询一下是否可以
#top  看cpu占用率是不是20左右
按比例分配cpu
#docker run -itd  --cpu-share   1024   镜像名:标签   /bin/bash
 
对内存的限制
在run 时就可以设置容器对内存的限制
# docker  run -m   512MB    镜像名:标签   /bin/bash
 
 

 

posted @ 2020-08-11 14:39  Supernova-L李  阅读(133)  评论(0编辑  收藏  举报