Docker基础命令

  • Docker 常用命令

    • 学习网站:https://yeasy.gitbook.io/docker_practice/

    • 查看所有镜像:“docker images”

    • 删除image

      • docker rmi IMAGE ID
      • 若上步无法删除,则需要先删除运行过该images的container,先利用“docker ps -a”查看退出的container;再利用“docker rm CONTAINER ID”;再利用上步删除images
      • 若发现无法删除container,利用“docker ps”查看正在运行的container,再利用“docker stop CONTAINER ID”关闭container,最后再利用上一步操作完成
    • 非root用户加入docker用户组省去sudo

      • sudo usermod -aG docker

      • 查看用户组中有木有docker组“sudo cat /etc/group | grep docker”

      • 确定可以直接运行docekr命令 “docker info”

      • 若提示没有权限,则修改权限“sudo chmod a+rw /var/run/docker.sock”

    • docker基本概念

      • 镜像(Image):特殊的文件系统,不包含动态数据,类似于面向程序设计中的“类”
      • 容器(Container):容器是镜像运行时的实体,可以被创建,启动,停止,删除,暂停。类似于面向程序设计中的“实例”。容器的实质是进程,拥有独立的命名空间,root文件系统,网络配置等,处于一个隔离环境中。
      • 仓库(Repository):镜像构成后,很容易在本机上运行,为了在其他服务器上使用镜像,需要一个集中的存储,分发镜像的服务Docker Registry 。仓库可用于存储镜像,一个仓库包含多个标签,每个标签对应一个镜像。利用<仓库名>:<标签>指定具体是该软件的哪个版本的镜像。仓库多以两段式路径出现,如jwilder/nginx-proxy,前者用户名,后者软件名。
    • docker 运行

      • 有了镜像后,以该镜像为基础启动一个容器:“docker run -it --rm ubuntu:18.04 bash”
        • -it:表示-i(交互式操作)和-t(终端),-it表示交互式终端
        • --rm:容器退出后即删除
        • ubuntu:18.04:镜像:版本
        • bash:使用bash作为交互式shell,一般写作/bin/bash
      • 退出容器:exit
    • 使用Dockerfile定制镜像

      • 新建文本文件:“mkdir test && touch Dockerfile && vi Dockerfile”
      • 编辑Dockerfile
        • FROM:指定基础镜像。为了使镜像体积更小,可以使用:“FROM scratch”
        • RUN:执行命令行命令,分为shell格式和exec格式,前者为“RUN <命令>”,后者“RUN ["可执行文件",“参数1”,“参数2”]”,类似于函数调用的格式。为了降低镜像层数,尽量减少RUN的数量,不同命令可以使用“&&”串起来,用一个RUN将其放在一层。Dockerfile支持Shell类的行尾添加 的命令换行,行首添加#注释。
        • COPY:将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置,例如 COPY src pdffigure-detection,需要提前指定工作目录,"WORKDIR /apps"
        • ADD:类似于COPY,但是源路径可以是URL,一般不用
        • CMD:ubuntu中CMD默认为/bin/bash
        • ENV:设置环境变量
      • 构建镜像:在Dockerfile目录下直接:“docker build -t nginx:v3 .”,也可以用-f指定Dockerfile路径,例如:“docker build -f Dockerfile -t nginx:v3 .”
    • 其他镜像制作方法

      • 从rootfs压缩包导入:docker import 压缩包(压缩包下载地址)仓库名:标签
      • 保存镜像为压缩包:docker save Image(镜像名) 压缩名 ,例如"docker save hello-world" a.tar
      • 从压缩包加载镜像:docker load -i 压缩包地址 ,例如"docker load -i a.tar"
    • docker的容器与本地文件复制

      • 本地to容器:docker cp path Container ID:path,例如 "docker cp /home/wps/ssh.txt 1b4cd38be498:/apps/k.txt"
      • 容器to本地:docker cp Container ID:path path,例如"docker cp 1b4cd38be498:/apps/requirements.txt /home/wps/r.txt"
    • 容器操作

      • 查看所有容器:docker ps -a

      • 查看当前开启的容器:docker ps

      • 开启容器:docker start Container ID

      • 停止容器:docker stop Container ID

      • 进入容器:docker attach Container ID

      • 互不干扰的进入容器:docker exec -it Container ID bash

      • 导出容器到本地:docker export Container ID > 压缩包名

      • 导入容器快照:docker import 压缩包 仓库名:标签

      • 删除容器:先终止容器,再删除:"docker rm Container ID"

      • 容器保存为镜像:docker commit [Container ID] [仓库名:标签]

    • 仓库操作

      • 查找官方仓库镜像:docker search 镜像名
      • 登录:docker login
      • 拉取镜像:docker pull 镜像名
      • 推送镜像:docker tag 镜像名 username/镜像名,例如:docker tag ubuntu:18.04 username/ubuntu:18.04;也可以登录后直接push,例如:docker push username/ubuntu:18.04
原文地址:https://www.cnblogs.com/peng-yuan/p/14874555.html