美文网首页
Docker常用命令

Docker常用命令

作者: itshajia | 来源:发表于2022-01-09 21:53 被阅读0次

    启动容器

    # 后台启动容器,-d 为开启后台模式(守护进程)
    docker run -d 镜像名称
    # 注意点:
    # docker容器使用后台运行时,必须要有一个前台进程,不然docker发现没有应用,就会自动停止
    
    # 用完就删除,一般用来测试
    docker run --rm 镜像名称
    

    退出容器

    # 退出并停止容器
    exit
    
    # 退出但不停止容器
    Ctrl + P + Q
    

    删除容器

    # 删除指定容器,但不能删除正在运行中的容器,可以用rm -f参数强行删除
    docker rm 容器id
    
    # 删除所有容器
    docker rm -f $(docker ps -aq)
    

    启动和停止容器

    # 启动容器
    docker start 容器id
    
    # 重启容器
    docker restart 容器id
    
    # 停止当前正在运行的容器
    docker stop 容器id
    
    # 强制停止当前容器
    docker kill 容器id
    

    进入当前正在运行的容器

    # 方式一:进入容器后开启一个新的终端(或会话),可以在里面操作(常用!!!)
    docker exec -it 容器id /bin/bash
    
    # 方式二:进入容器正在执行的终端(或会话),不会启动新的进程
    docker attach 容器id
    

    从容器内拷贝文件到宿主机上

    docker cp 容器id:容器内路径 宿主机目的路径
    
    # 注意点:
    # 拷贝文件,不需要容器处于运行中,即时处于停止状态,只要文件存在,都可以拷贝
    # 拷贝是一个手动的过程,可以通过-v挂在目录,实现文件自动同步
    

    查看镜像变更历史(镜像构建步骤)

    # 可通过该命令学习借鉴好的镜像的构建过程!!!
    docker history 镜像id
    

    提交镜像

    # 提交容器成为一个新的副本
    docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名称:[TAG]
    

    使用数据卷

    # 方式一:直接使用命令来挂载
    docker run -it -v 宿主机目录:容器内目录
    docker run -it -v 挂载名称(不带斜杠):容器内目录
    docker run -it -v 容器内目录
    
    # 方式二:Dockerfile
    # FROM centos
    # VOLUME ["volume01", "volume02"]
    # CMD echo "----end----"
    
    # 查看容器卷挂载情况(通过容器镜像元数据查看)
    docker inspect 容器id
    
    # 查看所有的 volume 的情况
    docker volume ls
    
    # 查看卷的详细情况
    docker volume inspect 卷名
    
    # 注意点:
    # 通常docker卷在没有指定目录的情况下,都是在/var/lib/docker/volumes/xxx/_data
    
    # 如何确定是具名还是匿名挂载,还是指定路面挂载?
    # -v 容器内路径 => 匿名挂载
    # -v 卷名(不带斜杠):容器内路径 => 具名挂载
    # -v 宿主机路径(带斜杠):容器内路径 => 指定路径挂载
    
    
    # 数据卷拓展
    docker run -d 具名:容器内路径:ro nginx
    docker run -d 具名:容器内路径:rw nginx
    
    # 只读,表明该路径只能通过宿主机来操作,容器内部是无法操作的!!!
    ro => readonly
    # 可读可写(默认)
    rw => readwrite
    
    # 注意点:
    # 一旦设置了容器权限,容器对挂载出来的内容就有了限定
    

    数据卷容器(实现不用容器之间的数据共享)

    # 使用 --volumes-form
    docker run -d -p 3310:3306 \
    -v /etc/mysql/conf.d \
    -v /var/lib/mysql \
    -e MYSQL_ROOT_PQSSWORD=123456 \
    --name mysql01 mysql:5.7
    
    docker run -d -p 3311:3306 \
    -e MYSQL_ROOT_PQSSWORD=123456 \
    --name mysql02 \
    --volumes-form mysql01 mysql:5.7
    
    # 运行完后,两个容器数据同步(数据通过拷贝的形式完成同步,每个容器都有一个副本!!!)
    

    导入导出

    # 镜像导出(当前命令执行路径即为镜像导出目录)
    docker save 镜像id > XXX.tar
    
    # 镜像导入
    docker load < XXX.tar
    
    # 容器导出
    docker export 容器id > XXX.tar
    
    # 容器导入
    docker import XXX.tar
    

    其他命令

    # 查看日志
    docker logs -f -t --tail 显示条数 容器id
    
    # 查看容器中进程信息
    docker top 容器id
    
    # 查看镜像元数据
    docker inspect 容器id/镜像id
    
    # 删除所有无名称的镜像(悬空镜像)
    docker rmi $(docker images -f "dangling=true" -q)
    

    相关文章

      网友评论

          本文标题:Docker常用命令

          本文链接:https://www.haomeiwen.com/subject/htcpcrtx.html