zoukankan      html  css  js  c++  java
  • Docker

    1. 基础的启动与关闭

      (1) 启动Docker

         systemctl start docker 

        由于启动docker并没有提示,所以需要使用命令查看docker是否正常启动。

         systemctl status docker 

        

        Active显示状态是running就表示正常启动了。

      (2) 关闭Docker

         systemctl stop docker 

      (3) 重启Docker

         systemctl restart docker 

      (4) 开机自启Docker

         systemctl enable docker 

     

    2. 安装镜像

      (1) 查看已安装的镜像

         docker images 

      (2) 查看指定镜像

         docker search centOS 

        

        NAME:镜像名称

        DESCRIPTION:说明

        START:收藏(点赞)数

        OFFICIAL:是否是官方镜像

        AUTOMATED:是否自动构建(免手动编译)

      (3) 拉取镜像    

      // 语法
      docker pull 要拉取镜像的名[:版本号]
      // 例如:
      docker pull centos/mysql-57-centos7

      (4) 删除镜像(无法删除名下还有容器的镜像)

    // 语法
    docker rmi 镜像ID
    // 镜像ID在使用docker images命令的时候会展示

      

     

    3. 容器操作

      (1) 检查正在运行的容器

         docker ps -a 

      (2) 根据镜像创建容器

    // 1.交互式创建容器(非后台运行)
    // 语法
    docker run -i -t --name=自命名(唯一) 镜像[:版本] /bin/bash
    // 退出,退出即停止容器
    exit
    // 2.守护式创建容器(后台运行)
    docker run -d -i --name=自命名(唯一) 镜像[:版本]
    // 进入容器
    docker exec -i -t 容器自命名 /bin/bash
    // 退出容器
    exit

      (3) 启动和停止容器

        启动容器: docker start 容器自命名或容器ID 

        停止容器: docker stop 容器自命名或容器ID 

      (4) 文件操作

        从宿主机拷贝文件到容器: docker cp 宿主机目录/文件 容器名:容器目录 

        从容器拷贝文件到宿主机: docker cp 容器名:容器路径/文件 宿主机路径[/文件] 

        目录挂载(仅限于容器创建时):

           docker run -d -i --name=自命名 -v 宿主机路径:容器路径 镜像名:版本号 

      (5) 查看容器详情

         docker inspect 容器自命名 

      (6) 删除容器(无法删除正在运行的容器)

         docker rm 容器自命名 

      (7) 容器保存为镜像

         docker commit 容器名 镜像自命名 

      (8) 备份镜像

         docker save -o 路径/文件名.tar 镜像名 

      (9) 根据镜像备份恢复镜像

         docker load -i 路径/文件名.tar 

     

    4. 常用环境部署

      (1) MySQL

    // 语法
    docker run -d -i --name=自命名 -p 宿主机端口:容器端口 -e MYSQL_ROOT_PASSWORD=自命密码 镜像
    // 这里的-p就是指端口映射,可以将宿主机和容器的端口连接
    // 宿主机端口看需求是否需要和容器接口相同,取值最大65535,所以不同的话尽量往5位数上起,以免和其他应用冲突
    // -e MYSQL_ROOT_PASSWORD 是初始化MySQL数据库root用户的密码的固定格式
    // 示例
    docker run -d -i --name=wk_mysql -p 33066:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7

      

      直接连接宿主机33066端口就可以直接访问容器wk_mysql的服务。

      (2) Tomcat

    // 语法
    docker run -d -i --name=自命名 -p 宿主机端口:容器端口 -v 宿主机路径:容器路径 镜像:版本
    // 这里的端口和mysql里的是一个意思,但是为什么要创建目录挂载?
    // 其实创建目录挂载就是为了便于在宿主机放置项目文件,使tomcat容器更方便的运行项目
    // 示例
    docker run -d -i --name=wk_tomcat -p 18080:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

       (3) Nginx

    // 语法
    docker run -d -i --name=自命名 -p 80:80 镜像
    // 示例
    docker run -d -i --name=wk_nginx -p 80:80 nginx

      (4) Redis

    // 语法
    docker run -d -i --name=自命名 -p 宿主机端口:容器端口 镜像
    // 示例
    docker run -d -i --name=wk_redis -p 6379:6379 redis

     

    5. Dockerfile

      Dockerfile实际上是一系列的命令和参数构成的脚本,这些命令应用于基础镜像并创建一个新的镜像。

      从开发、测试、运维来看,保证了环境的一致性,排除环境的原因导致的问题,减少搭建环境花费的开销。

      注意:Dockerfile文件的文件名必须是"Dockerfile"。

      (1) 主要语句

        基于镜像的操作: FROM 镜像名:版本号 

        标注作者: MAINTAINER 作者名 

        设置工作路径: WORKDIR 路径 

        执行命令: RUN 命令 

        添加文件: COPY 宿主机路径/文件 容器路径 

        添加文件并解压: ADD 宿主机路径/文件 容器路径 

        添加环境变量: ENV 环境变量 

      (2) 创建镜像

         docker build -t='镜像自命名' Dockerfile所在路径 

     

    6. 私有仓库

      (1) 搭建私有仓库

        Docker官方提供了一个搭载私有仓库的镜像,通过创建此镜像的容器,即可完成私有仓库的搭建。

          docker pull registry 

        默认上传到registry的镜像会保存到容器的/var/lib/registry目录下,所以最好将宿主机的目录也挂载到该目录下。

          docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name 容器自命名 registry 

        验证私有仓库是否搭建成功: http://IP地址:5000/v2/_catalog 

        在Docker的deamon.json文件中添加私有仓库: "insecure-registries" : ["宿主机IP:5000"] 

        重启Docker: systemctl restart docker 

        启动私有仓库容器: docker start 容器名 

      (2) 上传镜像到私有仓库

        给需要上传到私有仓库的镜像打一个标记,标记这是私有仓库的镜像: docker tag 镜像名 仓库IP:5000/镜像名 

        

        此时就可以上传镜像到私有仓库: docker push 打标的镜像名 

        

        此时再访问 http://IP地址:5000/v2/_catalog 如果repositories数组显示上传的镜像代表上传成功。

      (3) 删除私有仓库中的镜像(不建议)

        v2版本的docker禁止手动删除私有仓库中的镜像,需要配置registry容器的配置文件。

        使用文本编辑器打开registry容器的配置文件:

           docker exec -i -t 容器名 vi /etc/docker/registry/config.yml 

        修改或者添加storage.delete.enabled属性为true,然后保存并退出(ESC :wq!):

          

        重启registry容器:

           docker restart 容器名 

        查看私有仓库中镜像版本(tags):

           curl -XGET http://IP地址:5000/v2/镜像名/tags/list 

          

        查询镜像的sha256值:

           curl --header "Accept:application/vnd.docker.distribution.manifest.v2+json" -I -XGET http://IP地址:5000/v2/镜像名/manifests/版本号 

          

        删除私有仓库镜像索引:

           curl -I -X DELETE http://IP地址:50500/v2/镜像名/manifests/sha256:值 

          

        手动触发registry容器垃圾回收:   

        // 进入registry容器
        docker exec -it 容器名 sh
        // 执行垃圾回收
        registry garbage-collect /etc/docker/registry/config.yml
        // 退出容器
        exit

        由于之前将宿主机和register容器做了挂载,所以需要手动删除宿主机的挂载位置下的镜像文件:

          rm -rf /挂载路径/docker/registry/v2/repositories/镜像名称 

        再次访问私有仓库,则指定镜像已被删除:

           curl -XGET http://IP地址:5000/v2/_catalog 

  • 相关阅读:
    Android 微信分享信息
    微信朋友圈如何同时分享(图片+文字)
    Android应用加入微信分享
    讨论IT选定的技术招聘企业几点
    MSSQL发现第五到数据的第十
    STL 源代码分析 算法 stl_algo.h -- binary_search
    加快XCode编译链接速度(200%+)—XCode编译慢液
    linux复制文件命令scp
    写出高性能的多核并行编程
    SSH—Struts(三)—跑步者(Action)
  • 原文地址:https://www.cnblogs.com/NyanKoSenSei/p/13462753.html
Copyright © 2011-2022 走看看