• Docker 入门


    Docker

    安装Docker

    环境准备

    1. 查看系统版本

      [root@VM-12-10-centos ~]# cat /etc/redhat-release
      CentOS Linux release 7.9.2009 (Core)
      
      [root@VM-12-10-centos ~]# cat /etc/os-release
      NAME="CentOS Linux"
      VERSION="7 (Core)"
      ID="centos"
      ID_LIKE="rhel fedora"
      VERSION_ID="7"
      PRETTY_NAME="CentOS Linux 7 (Core)"
      ANSI_COLOR="0;31"
      CPE_NAME="cpe:/o:centos:centos:7"
      HOME_URL="https://www.centos.org/"
      BUG_REPORT_URL="https://bugs.centos.org/"
      
      CENTOS_MANTISBT_PROJECT="CentOS-7"
      CENTOS_MANTISBT_PROJECT_VERSION="7"
      REDHAT_SUPPORT_PRODUCT="centos"
      REDHAT_SUPPORT_PRODUCT_VERSION="7"
      
    2. 查看内核版本

      [root@VM-12-10-centos ~]# uname -r
      3.10.0-1160.15.2.el7.x86_64
      

    安装

    安装流程

    1. 卸载旧的版本
    2. 需要的安装包
    3. 设置镜像的仓库
    4. 安装docker
    5. 启动docker systemctl start docker
    6. 启动hello-world镜像 docker run hello-world
    7. 查看是否存在hello-world镜像 docker images
    8. 镜像加速

    底层原理

    Docker 是怎么工作的

    Docker是Client-Server结构的的系统

    Docker 的常用命令

    docker version # 版本信息
    docker info # 显示docker的系统信息,包括镜像和容器的数量
    docker 命令 --help # 帮助命令
    

    一、 镜像命令

    1. docker images
    docker images
    [root@VM-12-10-centos ~]# docker images
    REPOSITORY    TAG       IMAGE ID       CREATED       SIZE
    hello-world   latest    d1165f221234   2 weeks ago   13.3kB
    
    # 解释
    REPOSITORY 镜像的仓库源
    TAG			 镜像的标签
    IMAGE ID	镜像的ID
    CREATED		镜像的创建时间
    SIZE		 镜像的大小
    Options:
      -a, --all             Show all images (default
                            hides intermediate images)
          --digests         Show digests
      -f, --filter filter   Filter output based on
                            conditions provided
          --format string   Pretty-print images using a
                            Go template
          --no-trunc        Don't truncate output
      -q, --quiet           Only show image IDs
    
    1. docker search
    [root@VM-12-10-centos ~]# docker search mysql
    
    1. docker pull 下载镜像

      如果不写版本默认为latest,下载方式为分层下载(docker image的核心 联合文件系统)

      指定版本下载:docker pull mysql:5.7

    2. docker rmi 删除镜像

      docker rmi -f $(docker images -aq) 删除所有的镜像


    二、容器命令

    有了镜像才可以创建容器,下载一个centos来测试学习

    1. 新建容器并启动docker pull centos

      docker run [可选参数] image
      
      # 参数说明
      --name="Name"		容器的名字,用来区分容器
      -d					  后台方式运行
      -it 				  使用交互方式运行,进入容器查看内容
      -p					  指定容端口 -p 8080:8080
      	-p 主机端口:容器端口 (常用)
      	-p 容器端口
      	容器端口
      -P					  随机指定端口
      
      #测试
      # 启动并进入容器
      [root@VM-12-10-centos ~]# docker run -it centos /bin/bash
      [root@b3d28c7229f1 /]#
      
    2. 查看运行的容器

      docker ps 查看运行中的容器

      docker ps -a 查看包括运行过的容器

      docker ps -a -n=? 列出包括运行过的n个容器

      docker ps -q 只显示容器的编号

    3. 退出容器

      exit # 容器停止退出
      Ctrl + P + Q # 容器不停止退出
      
    4. 删除容器

      docker rm 容器id
      docker rm -f $(docker ps -aq) 删除所有的容器
      
    5. 启动和停止容器的操作

      start restart stop kill

    三、常用其他命令

    start 是启动docker里面创建过的容器,run 是新建容器并运行

    1. 后台启动容器

      # 命令 docker run -d 镜像名
      
      # 问题:docker ps 发现 容器停止了
      # 常见的坑:docker 容器使用后台运行,就必须要有一个前台进程,docker发现没有应用就会自动停止。
      
    2. docker logs 查看日志信息

    3. docker top 查看容器中的信息

    4. 进入当前正在运行的容器

      # 我们通常容器都是使用后台的方式运行的,需要进入容器,修改一些配置
      
      # 命令
      docker exec -it 容器id bashshell
      
    5. 从容器内拷贝文件到主机上

      docker cp 容器id:容器内路径 目的主机路径

    实例

    一、安装 nginx

    # 1. 搜索镜像
    docker search nginx
    # 2. 下载镜像
    docker pull nginx
    # 3. 查看是否已下载
    docker images
    

    二、安装 tomcat

    # 官方的使用
    $ docker run -it --rm tomcat:9.0
    
    # 我们之前的启动都是后台,停止容器之后,容器还是可以查到 docker run -it --rm, 一般用来测试,用完就删除
    

    思考:我们以后部署项目,如果每次都要进入容器就会非常麻烦,是否可以在容器外部提供一个映射路径,在外部放置项目,就自动同步到内部。

    三、部署 es + kibana

    # 部署的端口很多
    # es 十分的耗内存
    # es 的数据一般需要放到安全目录 挂载
    # --net somenetwork 网络配置
    # 启动
    $ docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:tag
    
    # 通过修改内存限制来处理内存占用过大的问题
    

    可视化

    • portainer (先用这个)

      docker run -d -p 8080:9000 
      --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
      
    • Rancher(CI/CD再用)

    什么是portainer

    Docker图形化界面管理工具,提供一个后台面板供我们操作,运行,并访问公网

    界面

    选择本地:

    进入之后的面板:

    可视化面板平时不会使用。

    Docker镜像

    特点

    Docker镜像是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层就是我们通常说的容器层,容器之下的都叫镜像层(镜像层无法改变)

    提交一个自己的镜像(commit)

    docker commit 提交容器成为一个新的副本
    
    # 命令和git类型
    docker commit -m="提交容器的描述信息" -a="作者" 容器id 目标镜像名 [TAG]
    

    实战测试:

    # 启动默认的Tomcat
    # 发现webapps下没有文件
    
  • 相关阅读:
    文件打开的几种访问模式
    数据分析师简介
    python数据处理----常用数据文件的处理
    markdown使用方法介绍
    gdb调试常用方法介绍
    [OPEN CV] 常用视频操作方法
    [转载]C++中四种强制类型转换方式
    python 定时服务模块
    pymysql安装和使用
    VS2019开发Qt程序中文乱码
  • 原文地址:https://www.cnblogs.com/mayapony/p/14606061.html
Copyright © 2020-2023  润新知