资讯专栏INFORMATION COLUMN

docker命令详解

olle / 2713人阅读

摘要:说明方括号表示里面的参数可省任何查询结果都可以通过进行筛选注释符命令解释必填参数系统安装容器安装依赖安装容器服务容器版本仓库仓库是集中存放镜像的地方公有仓库私有仓库注册服务器存放仓库的具体服务器公有仓库输入用户信息登录到本地保存用户的

说明 :

[]          方括号表示 => 里面的参数可省
grep name   任何查询结果都可以通过 grep 进行筛选
#           注释符
()          命令解释
<>          必填参数

系统 :

安装容器 :
          yum install -y epel-relase # 安装依赖
          yum install docker-io    # 安装docker
容器服务 : systemctl <[start,stop,restart]> docker.service | service docker start
容器版本 : docker version

仓库 : 仓库是集中存放镜像的地方[公有仓库,私有仓库] (注册服务器:存放仓库的具体服务器)

公有仓库 : Docker Hub => https://hub.docker.com/
          docker login 输入用户信息登录到 => Docker Hub => 本地 .dockercfg保存用户的认证信息
          docker search # 不需要登录
                        # 官方的镜像一般为 基础镜像或者根镜像 => docker.io/mysql
                        # 个人用户的镜像一般为 用户名/镜像名称 => sokminyo/mysql-1
          docker pull www.self.com/mysql # 指定网站拉取镜像
自动创建 : 用户通过 Docker Hub指定跟踪一个目标网站上的项目,若有提交,则自动执行创建
创建和使用私有库 :
        创建 : docker run -d -p 5000:5000 registry  # 通过 registry镜像 来创建私有库,默认容器地址为 /tmp/registry,最好先拉取 docker pull registry
        创建指定 : docker run -d -p 5000:5000 -v /data/nginx/html:/tmp/registry registry # 指定路径创建
        打上标签 :   docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] => docker tag <33fbbf4a24e5> 127.0.0.1:5000/tt
        上传镜像 : docker push 127.0.0.1:5000/tt

镜像 :

获取镜像 : docker pull <名称>[:TAG(标签)]  =>  docker pull php
查看镜像 : docker images [名称]    =>  docker images
查看详情 : docker inspect <名称或Id>     =>  docker inspect php [-f(指定内容),...]  docker inspect php -f {{".Id"}}
搜索镜像 : docker search [OPTIONS] TERM  => docker search php:7.1-fpm
删除镜像 : docker rmi <名称>         =>  docker rmi [-f(强制删除)] php:7.1-fpm   # 正在运行的镜像无法删除
存出镜像 : docker save -o <存出的文件名.格式(php.tar)> <镜像名称或Id> =>  docker save -o php.tar 894f8d826f6a
载入镜像 : docker load --input php.tar(文件名称)

容器 :

新建容器 : docker create -it <镜像名称或ID(php:7.1-fpm)> # 默认情况下为不启动
新建并启动容器 : docker run
查看容器 : docker ps # 查看当前运行的容器  docker ps -a # 查看所有容器
运行容器 : docker run <容器名orID>
停止容器 : docker stop <容器名orID>
开启容器 : docker start <容器名orID>
终止容器 : docker kill <容器名orID>
重启容器 : docker restart <容器名orID>
容器日志 : docker logs <容器名orID>
容器端口 : docker port <容器名orID>
删除容器 : docker rm <容器名orID>
进入容器 : docker exec -it <容器名orID> /bin/bash
导出容器 : docker export <容器名orID> >文件名.格式   => docker export mysql >mysql.tar
导入容器 : docker import 文件名.格式

容器中 :

安装vi|vim : apt-get install -y vi|vim
更新apt : apt-get update # 安装其他功能时,更新-安装-更新

数据卷 : 供容器使用的特殊目录 volume(卷)

创建 : 在运行的时候加上 -v 可以使用多个
       docker run -d -p -v /data/nginx/html:/usr/share/nginx/html (将本机的文件映射到容器中的文件)
       docker run -p 8080:80 --name test_nginx -v /data/nginx/html:/usr/share/nginx/html -d docker.io/nginx
               -p      8000:80 把容器80端口映射到服务8000
               --name  设置名字
               -d      后台运行|守护
               -v /data/nginx/html:/usr/share/nginx/html (将本机的文件映射到容器中的文件)
       more :
               -a stdin : 指定标准输入输出内容类型 , 可选 STDIN/STDOUT/STDERR 三项
               
               -d : 后台运行容器 , 并返回容器ID
               
               -i : 以交互模式运行容器 , 通常与 -t 同时使用
               
               -p : : 端口映射  
               
               -t : 为容器重新分配一个伪输入终端 , 通常与 -i 同时使用
               
               --name  : 为容器指定一个名称
               
               --dns 8.8.8.8 : 指定容器使用的DNS服务器 , 默认和宿主一致
               
               --dns-search example.com: 指定容器DNS搜索域名 , 默认和宿主一致
               
               -h "mars": 指定容器的hostname
               
               -e username="ritchie": 设置环境变量
               
               --env-file=[]: 从指定文件读入环境变量
               
               --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行
               
               -m :设置容器使用内存最大值
               
               --net="bridge": 指定容器的网络连接类型 , 支持 bridge/host/none/container: 四种类型
               
               --link=[]: 添加链接到另一个容器
               
               --expose=[]: 开放一个端口或一组端口
               
数据卷容器 : 容器之间共享数据(挂载在同一个文件夹中)
       docker run -it -v /dbData --name dbData php  # 删除卷 docker rm -v dbData
       docker run -it --volumes-from dbData --name db1 php
       docker run -it --volumes-from dbData --name db2 php
数据卷迁移数据 : 备份和恢复(自行了解)

端口映射实现访问容器 :

  端口映射 : docker run -p 端口:端口
  自定义名称 : docker run --name 名称
  容器互联 : docker run --link 容器名称
  docker公开连接 : 环境变量(env) 或 更新 /etc/hosts文件

使用Dockerfile创建镜像 : 文本格式的配置文件

  指令 : 一般格式为 instruction(指令) arguments(参数) , 指令包括 from , maintainer(维护者) , run , cmd 等 .
  组成部分(一般而言) : 基础镜像信息 , 维护者信息 , 镜像操作指令 , 容器操作指令
      eg :
            # 第一行必须指定基于的基础镜像
            # FROM [:]
            FROM php:7.1

            # 维护者信息
            # MAINTAINER 
            MAINTAINER huangzhhui 

            # ENV   指定一个环境变量 , 可供 RUN 命令使用 , 并在容器中保持运行 
            ENV PHPREDIS_VERSION 4.0.0
            ENV HIREDIS_VERSION 0.13.3
            ENV SWOOLE_VERSION 4.0.3

            # 镜像操作指令(可以有多个)
            # RUN   在shell终端中运行命令,即 /bin/sh -C
            # 或者
            # RUN ["executalbe","param1","param2"] 这里的[]非说明中的 , 使用 exec 执行
            RUN curl -sS https://getcomposer.org/installer | php 
                && mv composer.phar /usr/local/bin/composer 
                && composer self-update --clean-backups

            # 容器暴露的端口号
            # EXPOSE  [...]
            EXPOSE 80 22 443

            # 容器操作指令
            ......

            # (只能有一个,如果有多个只会执行一个)
            # CMD ["executalbe","param1","param2"] 这里的[]非说明中的 , 使用 exec 执行 (推荐)
            # 或者
            # CMD command param1 param2 在 /bin/sh 中执行
            # 或者
            # CMD ["param1","param2"] 提供给 entrypoint 的默认参数
            CMD /usr/sbin/nginx
  其他指令 :
      ADD   : 复制指定的 src 到容器中的 dest
      COPY   : 复制本地的 src 到容器 dest
      ENTRYPOINT : 配置容器启动后执行的命令 ,只能有一个 , 如果有多个只会执行一个(最后一个生效)
                   1 : ENTRYPOINT command param1 param2 在 /bin/sh 中执行
                    or
                   2 : ENTRYPOINT ["param1","param2"]
      VOLUME : VOLUME ["/data"] # 创建一个可以从本地主机或其他容器挂载的挂载点 , 一般用于存放数据和保持数据
      USER : USER daemon # 指定运行容器是的用户名或UID
      WORKDIR : WORKDIR /path/to/workdir # 为后续 RUN , CMD , ENTRYPOINT 等指令配置工作目录 . 可多个 如果后续路径为相对路径,则会基于之前的指令
                WORKDIR /a
                WORKDIR b
                WORKDIR c
                RUN pwd   # /a/b/c
      ONBUILD : ONBUILD [INSTRUCTION]
  创建镜像 : 完成 dockerFile 后 , 可通过 docker build [option] 来创建镜像
            可配置 .dockerignore 文件 , 来忽略 docker 路径下的 目录和文件

常见问题 :

docker组没有 : could not change group /var/run/docker.sock to docker: group docker not found
         uname -r 查看内核
         Why:SELinux不支持 overlay2 graph driver
         Solve :
                vi /etc/sysconfig/docker,在docker里禁用selinux-enabled=false,

挂载失败 : /usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/b35b5d54a4bb354ff5bbf4b8906db3acce819339c8c9bf378d9e388d9dedbed7-init/merged: invalid argument.
           Solve :
                  rm -rf /var/lib/docker  # 会删除docker images
                  vi /etc/sysconfig/docker-storage   # 指定  DOCKER_STORAGE_OPTIONS="--storage-driver overlay"
                  vi  /etc/sysconfig/docker # 删除 --selinux-enabled
                  

图片介绍 :

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/27730.html

相关文章

  • awk在删除镜像过程中的用法及说明

    摘要:实际上,认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域段,域和域之间使用分割符分割。 看到一篇Docker 技巧:删除 Docker 容器和镜像其中提到删除标签为none的镜像的方法,其中用到了awk,就去查了下,下面举例说明: docker rmi $(docker images | awk $1 == && $2 == {print $3...

    lentoo 评论0 收藏0
  • 谁用光了磁盘?Docker System命令详解

    摘要:用了一段时间后,会发现它占用了不少硬盘空间。为了避免构建镜像时使用缓存,我在命令之前添加了一行命令。引入了命令,类似于上的命令,用于查看的磁盘使用情况。这些镜像占用了超过磁盘空间。现在,已使用的磁盘空间又变成了。 译者按: Docker镜像,容器,数据卷以及网络都会占用主机的磁盘空间,这样的话,磁盘很容易就会被用完。这篇博客介绍了一个简单的解决方案 - Docker System命令。...

    mdluo 评论0 收藏0
  • docker命令详解

    摘要:与命令不同,使用命令只能创建容器而并不启动选项镜像名称命令参数将标准输入标准输出标准错误链接到容器向容器的添加主机名与地址设置资源分配。输入命令退出后,容器不会停止,而会继续运行。命令命令用于以格式显示容器与镜像的详细 docker命令详解 前言 从技术老大那里听说了docker,闲下来之后就简单了解了一下,发现真的是一个好用的不得了的工具。遂周末去图书馆找了下相关资料,学习下姿势。说...

    mayaohua 评论0 收藏0

发表评论

0条评论

olle

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<