Docker入门

什么是Docker?

  1. Docker就是一种虚拟化的技术
  2. 可以通过Docker快速的下载使用第三方技术,方便搭建环境
  3. Securely build,share and run any application,anywhere

为什么选择Docker?

  1. 更高效利用系统资源

    1. 不需要硬件虚拟及运行完整操作系统
  2. 更快速的启动时间

  3. 一致的运行环境

  4. 持续交付和部署

  5. 更轻松的迁移

    image

    image

Docker组件

  1. C/S架构

    image

  2. 镜像与容器

    1. 镜像是构建Docker的基石,用户基于镜像运行自己的容器
      1. 镜像是容器的模板
      2. 镜像是容器的类
      3. 主要是构建和打包
    2. 容器是基于镜像启动的
      1. 容器是镜像的实例
      2. 主要是启动和执行
    3. 注册中心
      1. 用来保存用户构建的镜像
        1. 公共:DockerHub(类似github)
        2. 私有

安装

  1. 建议在ubuntu中安装

  2. yum update
    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum -y install docker-ce
    
    docker -v # 查看版本号
    
  3. 设置ustc镜像

    mkdri -p	/etc/docker
    vim /etc/docker/daemon.json
    
    # daemon.json中编辑
    {
    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
    }
    

Docker启动与停止

  1. systemctl start docker:启动
  2. systemctl stop docker:停止
  3. systemctl status docker:查看docker状态
  4. docker info:查看docker对应的信息
  5. docker --help:查看操作文档
  6. systemctl restart docker:重启
  7. systemctl enable docker:开启启动docker

常用命令

  1. 镜像

    1. docker images:查看镜像
    2. docker search 镜像名:在网络上搜索镜像
    3. docker pull 镜像名:版本号:拉取(下载)镜像,不加版本号下载的是最新版本
    4. docker rmi 镜像ID:删除镜像
      1. docker rmi `docker images -q`删除所有镜像
  2. 容器

    1. docker ps:查看运行的容器

      1. docker ps -a:查看所有容器
    2. docker run:创建容器

      1. -i:运行容器

      2. -t:容器启动后进入其命令行,即分配一个为容器

      3. --name:为创建的容器命名

      4. -v:标识目录映射(挂载)关系(宿主机目录:容器目录)

        # 将宿主机的目录和容器中的目录相互映射
        mkdir -p /usr/local/mydata
        docker run -div /usr/loacl/mydata:/usr/local/mydata --name=mycentos3 centos:7
        
      5. -d:创建一个守护式容器在后台运行(不会自动登陆容器)

      6. -p:端口映射(宿主机端口:容器端口)

      7. -e:设置容器的环境变量

        docker run -it --name=mycentos centOs:7 /bin/bash
        
        exit # 退出容器
        
    3. docker exec:执行容器

      # 登陆后台运行的容器
      docker exec -it mycentos2 /bin/bash
      
    4. docker stop 容器ID:停止容器

    5. docker start 容器ID:启动容器

    6. docker cp 文件名 容器ID:容器的目录:将文件从宿主机拷贝到容器中

      1. docker cp 容器ID:容器的文件 宿主机路径:将文件从容器拷贝到宿主机中
    7. docker inspect 容器名:查看容器中的运行的数据

      1. docker inspect 容器名 --format="{{.字段名}}"
    8. docker rm 容器ID:删除容器(必须先停止了再删)

部署

  1. MySQL

    # 下载镜像
    docker pull mysql:5.7
    # 创建容器,并将宿主机的3306端口和容器的端口映射
    docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
    
  2. Nginx

    docker pull nginx
    docker run -di --name=nginx -p 80:80 nginx
    # 将容器中的配置目录拷贝到宿主机
    docker cp nginx:/etc/nginx /usr/local/mydata/nginx/
    
    # 挂载
    docker stop nginx
    docker rm nginx
    docker run -di --name=nginx -p 80:80 -v /usr/local/mydata/conf/:/etc/nginx nginx
    
  3. Redis

    docker pull redis
    docker run -di --name=redis -p 6379:6379 redis
    
  4. RabbitMQ

    docker pull rabbitmq:3.7.12
    docker run -di --name=rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 rabbitmq:3.7.12
    docker exec -it rabbitmq /bin/bash
    #启动rabbitmq的UI插件
    rabbitmq-plugins enable rabbitmq_management
    
  5. Elasticsearch

    docker pull elasticsearch:7.5.0
    # 修改虚拟内存大小
    sysctl -w vm.max_map_count=262144
    # 创建容器
    docker run -di --name=elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single.node" -e "cluser.name=elasticsearch" -v /usr/local/elasticsearch/plugins:/usr/share/elasticsearch/plugins elasticsearch:7.5.0
    # 登陆启动容器
    docker exec -it elasticsearch /bin/bash
    # 安装IK中文分词器
    elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-id/releases/download/v7.5.0/elasticsearch-analysis.ik.7.5.0.zip
    # 重启
    exit
    docker restart elasticsearch
    
  6. Zookeeper

    docker pull zookeeper:3.4.13
    docker run -di --name=zookeeper -p 2181:2181 zookeeper:3.4.13
    

迁移与备份

  1. docker commit 容器名 镜像名:将容器打包成为镜像
  2. docker save -o 镜像名.tar 镜像名:镜像打包(备份)
  3. docker load -i 镜像名.tar:加载镜像(还原)

Dockerfile

  1. 由一系列命令和参数构成的脚本,应用于基础镜像并最终创建一个新的镜像

    1. 对开发:提供完全一致的开发环境
    2. 对测试:直接拿开发构建的镜像开始工作
    3. 对运维:实现应用的无缝移植
  2. 常用命令

    命令 作用
    FROM image_name:tag 定义使用哪个基础镜像启动构建流程
    MAINTAINER username 声明镜像的创建者
    ENV key value 设置环境变量(可以写多条)
    RUN command 是Dockerfile核心部分(可以写多条)
    ADD source_dir/file dest_dir/file 将宿主机的文件位置到容器内,若是压缩文件,会自动解压
    COPY source_dir/file dest_dir/file 和ADD相似,但是不能自动解压
    WORKDIR path_dir 设置工作目录
  3. 例子

    mkdir -p /usr/local/dockerjdk8
    mv jdk.8u202.linus.x64.tar.gz /usr/local/dockerjdk8/
    
    vim Dockerfile
    FROM centos:7
    MAINTAINER xxx
    WORKDIR /usr
    RUN mkdir /usr/local/java
    ADD jdk.8u202.linus.x64.tar.gz /usr/local/java
    ENV JAVA_HOME /usr/local/java1.8.0_202
    ENV PATH $JAVA_HOME/BIN:$PATH
    
    # 执行当前路径下的Dockerfile,进行构建
    docker build -t='jdk1.8' .
    

Docker私有仓库

  1. 搭建与配置

    1. docker pull registry:拉取私有仓库的镜像
    2. docer run -di --name=registry -p 5000:5000 registry:启动私有仓库容器
    3. 修改/etc/docker/daemon.json(设置信任)
    {"insecure-registres":["192.168.10.101.:5000"]}
    
    1. systemctl restart docker:重启docker服务
    2. docker start registry
  2. 上传

    1. 打标签:docker tag jdk1.8 192.168.10.101:5000/jdk1.8
    2. 上传:docker push 192.168.10.101:5000/jdk1.8
posted @ 2021-08-18 17:43  注入灵魂  阅读(42)  评论(0)    收藏  举报