Docker 的简单使用(常用命令)

  1. 镜像

    1. 镜像管理

      1. 镜像列表 docker images

      2. 删除镜像 docker image rm imageid/imagename:tagname

      3. 根据Dockerfile创建镜像 docker build . 参数详情可参考: docker build

      4. 获取 容器 / 镜像的元数据 docker inspect [OPTIONS] NAME|ID [NAME|ID...]

      5. 给镜像重命名(打标签) docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

      6. 将指定镜像保存成 tar 归档文件 docker save [OPTIONS] IMAGE [IMAGE...]

      7. 导入使用 docker save 命令导出的镜像 docker load [OPTIONS]

      8. 从归档文件中创建镜像 docker import 与 docker export 相对应

      9. 经历多次 docker commit 后镜像过大的优化办法,可参考:docker容器commit的镜像越来越大怎么办?酱紫试试

        #进入容器内部后
        
        #查看各个目录体积
        du -h -d 1
        
        # 在根目录下把需要的东西打包:
        tar --exclude=base_img.tar -cvf base_img.tar .
        
        # 退出容器
        
        # 将打包的文件copy到宿主机
        docker cp [容器id]:/base_img.tar .
        
        # 导入容器
        cat base_img.tar|docker import - base_img
        
        # 查看容器情况
        # 直观上体积减少了
        docker images
        # history,只有一个记录:Imported from -
        docker history [新镜像id]
        
    2. 运行镜像-->启动容器
      docker run 参考地址:docker run
      例:
      docker run -dit
      -p 80:80 -p 443:443 -p 3306:3306 -p 9000:9000
      -v /xxx/:/www
      --name=name --privileged=true imagename:tagname /bin/bash

      1. -t: 在新容器内指定一个伪终端或终端
      2. -i: 允许你对容器内的标准输入 (STDIN) 进行交互
      3. -d: 后台模式运行
      4. -P: 随机端口映射,容器内部端口随机映射到主机的端口
      5. -p:端口映射,格式为:主机(宿主)端口:容器端口
      6. -v:目录映射,如上例所示,将本地目录 /xxx 映射到 容器内部的 /www
      7. --privileged=true container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。
      8. --net
        1. --net=bridge 这个是默认值,连接到默认的网桥。
        2. --net=host 该模式下的 Docker 容器会和 host 宿主机共享同一个网络 namespace,Docker Container的 IP 地址即为宿主机 eth0 的 IP 地址
        3. --net=container:NAME_or_ID 相关联的两个容器之间不存在网络隔离,而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离
        4. --net=none 不为 Docker 容器构造任何网络环境
  2. 容器

    1. 启动/关闭 容器 docker start / stop

    2. 容器列表 docker ps

    3. 查看容器中运行的进程信息 docker top

    4. 列出指定的容器的端口映射 docker port

    5. 进入容器

      1. 连接到正在运行中的容器 docker attach [OPTIONS] CONTAINER 退出的时候,容器也会跟着退出
      2. docker exec [OPTIONS] CONTAINER COMMAND [ARG...] 退出的时候,容器不受影响
        1. docker exec -it containerId /bin/bash
    6. 从容器创建一个新的镜像 docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

      1. -a :提交的镜像作者;
      2. -c :使用Dockerfile指令来创建镜像;
      3. -m :提交时的说明文字;
      4. -p :在commit时,将容器暂停
    7. 容器与主机之间的数据拷贝

      docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
      docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
      
    8. 容器删除 docker rm

  3. 镜像库

    1. 登录登出镜像库

      docker login [OPTIONS] [SERVER]
      docker logout [OPTIONS] [SERVER]
      // -u :用户名
      // -p :密码
      docker login -u 用户名 -p 密码
      
    2. 从镜像仓库中拉取或者更新指定镜像 docker pull

       docker pull [OPTIONS] NAME[:TAG|@DIGEST]
       // -a :拉取所有 tagged 镜像
       // --disable-content-trust :忽略镜像的校验,默认开启
      
    3. 从Docker Hub查找镜像

      docker search [OPTIONS] TERM
      // --automated :只列出 automated build类型的镜像;
      // --no-trunc :显示完整的镜像描述;
      // -f <过滤条件>:列出收藏数不小于指定值的镜像。
      
    4. 将本地的镜像上传到镜像仓库

      docker push [OPTIONS] NAME[:TAG]
      // --disable-content-trust :忽略镜像的校验,默认开启
      // 推送前需要先使用docker login 登录私有镜像库
      // 如果要将镜像推送到私有镜像库的话,需要先使用 docker tag 现将镜像重命名 例:
      // docker tag imageId xxxxx.com/lin_zone/lnmp:v1
      

注:整理不易,如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/p/15102860.html

posted @ 2021-08-05 13:23  lin_zone  阅读(342)  评论(0编辑  收藏  举报