创新路
我们一直在努力

Docker的简单使用

什么是docker:docker是一套完整的容器管理系统

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

      1. CGroups(Control Groups)-资源管理

      2. NameSpace-进程隔离

      3. SELinux安全

    Docker优点

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

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

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

    Docker的缺点

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

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

      3. SELinux难以驾驭

      4. 监控容器和容器排错是挑战

 

    部署Docker

      1. 需要64位的操作系统,可用qemu-img快速生成前端盘,内存至少4G

      2. linux的版本至少为6.5以上的版本,6.5有很多的bug,强烈推荐7及以上

      3. 关闭防火墙

      4. 软件包列表:docker-engine,docker-engine-selinux,直接yum安装,会需要依赖包,建议挂载centos镜像

      5. 注意需要修改成为静态IP地址

      6. 启动docker    systemctl start docker

                              systemctl enable docker

      7. 重启虚拟机

      8. 可以lsblk查看,和ifconfig查看

 

    Docker镜像

      Docker容器是基于镜像启动的,镜像是容器的核心,镜像采用分层设计,加载是采用联合加载,采用cow技术

    

    Docker常用命令 (docker help 命令 //docker查看某个命令的帮助文档)

        docker version                       //查看版本

        docker images                       //查看镜像

        docker search 关键字             //搜索

        docker pull 镜像的名字           //下载镜像

        docker push 镜像的名字         //上传镜像

        docker load < xx.tar              //通过tar包导入镜像文件

        docker save 镜像名称:TAG名 > xx.tar   //导出镜像为tar包,TAG可通过docker image查看

        docker history 镜像名:TAG标签  //查看镜像制作历史

        docker inspect //查看镜像底层信息(详细信息)

        docker rmi 镜像名:TAG标签  //删除本地镜像(有容器就失败,需要先删除容器)

        docker tag  原镜像名:标签  修改后镜像名:新标签    //修改镜像名称和标签

            例:docker tag centos:latest test:v1 (相当于创建一个链接,ID还是一样的)

 

    容器命令

      docker ps  查看正在运行的docker容器列表,加-a:查看所有的

      docker run -it 镜像名字:TAG标签名 镜像里面运行的命令

        例:docker run -it centos:latest /bin/bash  //bash就是打开终端

            不写镜像里面运行的命令,就是默认命令(有些命令是交互命令。有些是非交互命令),不写TAG标签,就是默认latest标签

            注意:docker容器中运行的命令其实就是运行在容器的宿主机上的,只是通过CGroup进行了隔离。虚拟机就是单独的一台机器,运行的进程并不会在宿主机上出现。

     -i:交互式 如:docker run -it centos  /bin/bash

     -t:终端   

     -d:后台进程  如:docker run -d nginx            可以docker ps查看

         例:docker run -itd centos //启动一个交互式的终端放入后台

      启动的时候取个别名

        Docker run –name xxx -it centos /bin/bash

        注:如果启动一个交互式的系统,没有给它分配终端,那么会别系统识别为一个空的脚本,会立即退出

    docker ps //查看容器列表

    docker stop 容器的ID或者名称//关闭容器

    docker start 容器的ID或者名称  //启动容器

    docker restart 容器的ID或者名称 //重启容器

    docker attach|exec  容器的ID或者名称 //进入某个容器,attach是连接的pid为1的进程,如果退出来那么容器就会停止消失 如果按住ctrl+p+q退出,那么容器不会消失 exec是启动一个新的命令

    docker inspect  容器的ID或者名称 //查看容器底层信息(ps查看容器的ID)

    -f “{{.xxx.xxx}}” //过滤某个数据下的某个数据

        例:docker inspect -f "{{.NetworkSettings.IPAddress}}" abb807a5ba87

    docker top  容器的ID或者名称  //查看容器进程列表

    docker rm 容器的ID或者名称  //删除容器

        例:docker rm `docker ps -aq` 删除所有的容器

 

Dockerfile(自定义镜像制作脚本)

  使用Dockerfile工作流程,mkdir的dockerfile工作目录

      1. mkdir build; cd build

      2. vim Dockerfile

      3. docker build -t imagename Dockerfile所在的文件夹

  Dockerfile语法格式

      1. FROM:基础镜像  例FROM centos

      2. MAINTAINER:镜像创建者信息 例

      3. EXPOSE:开放的端口

      4. ENV:设置变量

      5. ADD:复制文件到镜像  例:ADD a.repo(必须放在dockerfile工作目录)  /etc/yum.repos.d/a.repo(容器中的命令)

      6. RUN:制作镜像时执行的命令,可以有多个  例:RUN yum -y install xxx(镜像里面执行的命令)

      7. WORKDIR:定义容器默认工作目录

            例:WORKDIR /var/www/html/  目录切换到html下了,RUN cd xxx 切换了后断开就没了

      8. CMD:容器启动时执行的命令,仅可以有一条CMD

            例: CMD [“全路径命令”,“选项”]

                   CMD [“/usr/bin/python”] //进入后默认启动python

    创建镜像步骤

        1.先创建一个文件夹,然后cd进入

        2.Vim Dockerfile  注意:这个文件必须这个名字,并且首字母大写

        3.在文件中写入修改镜像的内容

              FROM centos:latest

              RUN rm -rf /etc/yum.repos.d/*

              ADD a.repo /etc/yum.repos.d/a.repo

              RUN yum -y install net-tools psmisc lftp iproute vim

        4.在这个目录中执行命令

              docker build -t 创建的名称:标签 .(dockerdile所在的目录,当前目录就用.表示)

                  例:docker build -t myos1:latest .

        5.docker images 可以查看到自己创建的镜像  

 

自定义私有仓库

  1.先在有安装docker服务的主机上创建一个装镜像的仓库

        Vim /etc/docker/daemon.json

        {

          "insecure-registries" : ["仓库主机的IP:5000"]

        }

        例:"insecure-registries" : ["192.168.1.5:5000"]

  2.重启docker服务

        Systemctl restart docker

  3.启动这个私有仓库服务

        docker run -d -p 5000:5000 registry

  3.给需要上传的镜像打一个标记

        docker tag 镜像名:TAG标签 192.168.1.5:5000/镜像名:TAG标签

        例子:docker tag busybox:latest 192.168.1.5:5000/busybox:latest

        注意:需要上传哪个就给哪个镜像打上标签

  4.上传镜像到仓库

        docker push 标签名:TAG标签

        例:docker push 192.168.1.5:5000/busybox:latest

        注意:有大小显示,有进度条表示成功

  5.客户机配置私有的镜像源

        A.配置daemon.json

              Vim /etc/docker/daemon.json

              {

              "insecure-registries" : ["仓库源主机的IP:5000"]

              }

              例:"insecure-registries" : ["192.168.1.5:5000"]

        B.重启docker服务  systemctl restart docker

        C.远程启动容器

              docker run -it 192.168.1.5:5000/busybox:latest /bin/sh

    6.客户端查看私有仓库有什么镜像(在浏览器中)

          查看镜像:IP地址/v2/_catalog

              curl http://192.168.1.10:5000/v2/_catalog

          查看某个镜像有什么标签:IP地址/v2/镜像名/tags/list

              P l http://192.168.1.10:5000/v2/myos/tags/list

 

持久化存储(将真实的目录映射到容器中的目录)

    docker容器不保持任何数据

    重要数据请使用外部卷存储(数据持久化)!!!

    容器可以挂载真实机目录或共享存储为卷!!!

   将真实的目录挂在到容器中提供持久化存储!!!

        docker run -v 真实机的目录:容器中的目录 -it centos /bin/bash

        例:docker run -v /abc:/var/www/html/ -it centos /bin/bash

        注意:如果容器中的目录不存在,那么会自动生成一个目录

未经允许不得转载:天府数据港官方信息博客 » Docker的简单使用

客官点个赞呗! (0)
分享到:

评论 抢沙发

评论前必须登录!

天府云博 - 做有态度的开发&运维&设计学习分享平台!

联系我们百度云主机