Docker的一些常用命令

本文环境:

  • docker v24.0.6

常用命令

  • 首先查看已有的镜像文件:

    docker images 
    
  • 将镜像打包成本地文件

    docker save [镜像id] > [文件名.tar]
    docker save -o [文件名.tar] [镜像id]
    

    ps:第一行和第二行分别是两种方式

  • 在另一台主机加载本地文件到镜像

    docker load  < 文件名.tar
    docker load  -i 文件名.tar
    

    同上

  • 镜像重命名

    docker tag 镜像id 镜像名:标签
    

    标签可以是容器的版本号

  • 删除镜像

    docker rmi 镜像id
    
  • 创建容器

    docker run -it --name [指定一个用于与其它容器区分的name] -it
    
  • 启动/关闭容器

    docker start/stop 容器id
    
  • 退出容器

    ctrl D
    exit
    

    ps:两种方式均可

  • 列出所有在运行的容器

    docker ps
    
  • 列出所容器

    docker ps -a
    
  • 容器内文件或文件夹和宿主机之前相互传递

    docker cp 容器id:/var/..  /home/..宿主机目录
    
  • 要保存对一个docker容器的改动怎么办?

    commit 上面用的save和load用于把已经存在的镜像在服务器之间搬运,而对一个容器做了改动之后,可以通过commit命令把容器生成成镜像,然后就可以通过save和load搬运了 docker commit [容器id] [起一个镜像名]
    
  • docker run 之后生成的container不是root权限?

    如果执行docker run 是root用户执行的,生成的container不是root的话,在docker run时加参数:-u root
    
  • docker tag 如果我通过docker save存出来一个image,load到另一台机器的话,可能load出来的image的repository和tag都是none

    所以用docker tag给它标记 docker tag imageID 名字:tag
    
  • 关于docker exec进入容器

    一般是,docker exec -it 容器名或id bash -it很重要,如果不加的话其实执行完这条命令就退出容器了 bash其实就是进入容器使用的命令,就相当于dockerfile里最后那个CMD命令,就是说CMD命令是可以在docker run或exec的时候替换最后的bash的。