docker 常用命令 (容器, 镜像,数据卷)

    xiaoxiao2022-07-07  185

    docker 常用命令

    docker 镜像:docker 定制镜像docker 容器docker 数据管理

    docker 镜像:

    获取镜像 sudo docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] docker pull ubuntu:16.04运行镜像 sudo docker run -it --rm ubuntu:16.04 bash 退出 exit列出镜像 sudo docker image ls查看镜像、容器、数据卷所占用的空间 docker system df根据仓库名列出镜像 docker image ls ubuntu列出特定的某个镜像 docker image ls ubuntu:16.04删除本地镜像 docker image rm [选项] <镜像1> [<镜像2>…]

    docker 定制镜像

    创建自己的镜像路径

    在路径下touch Dockerfile

    docker build [选项] <上下文路径/URL/-> docker build -t scrapy:v3 .

    镜像构建上下文(Context) 1> ENV 设置环境变量 2> CMD 容器启动命令 3> ADD 更高级的复制文件 4> WORKDIR 指定工作目录 格式为 WORKDIR <工作目录路径>

    5> 列出所有在指定 image 之后创建的 image 的父 image docker image inspect --format=’{{.RepoTags}} {{.Id}} {{.Parent}}’ $(docker image ls -q --filter since=xxxxxx) # xxxxx image ID

    6> 强制删除none镜像 查看none镜像 docker images | grep none 查看none镜像ID docker images | grep none | awk ‘{print $3}’ 强制删除none镜像 docker images | grep none | awk ‘{print $3}’|xargs docker rmi

    docker 容器

    启动容器 docker run -t -i 镜像名 /bin/bash进入容器 docker exec -it 容器名 bash 退出 exit运行容器 docker run ubuntu:17.10 /bin/sh -c “while true; do echo helloworld; sleep 1; done” # 打印在宿主机上 docker run -d ubuntu:17.10 /bin/sh -c “while true; do echo hello world; sleep 1; done” # 输出在后台查看log信息 docker container logs [container ID or NAMES]终止容器 docker container stop [container ID or NAMES] 启动终止状态容器 docker container start 重启运行状态容器 docker container restart导入导出容器 导出容器 docker export 7691a814370e > ubuntu.tar 导入容器快照 cat ubuntu.tar | docker import - test/ubuntu:v1.0 指定URL、目录 docker import http://example.com/exampleimage.tgz example/imagerepo删除容器 用 docker container rm [] 删除一个终止状态的容器 如果想删除运行中的容器, 添加 -f 参数 docker container prune # 清理所有处于终止状态的容器查询容器信息 docker inspect [容器名]查看容器状态 docker inspect -f {{.State.Status}} [容器名] 10.查看容器ip docker inspect -f {{.NetworkSettings.IPAddress}} [容器名] docker inspect [容器名] | grep IPAddress查看docker 占用的系统资源 docker stats [容器名]

    docker 数据管理

    数据卷 1> 是一个可供一个或者多个容器使用的特殊目录它绕过 UFS,可以提供很多有用的特性: a. 数据卷 可以在容器之间共享和重用 b.对 数据卷的修改会立马生效 c. 对 数据卷的更新不会影响镜像 d. 数据卷 默认会一直存在, 即使容器被删除 2> 查看所有的数据卷 docker volume ls 3> 创建一个数据卷 docker volume create [数据卷名称] 4> 以查看指定 数据卷 的信息 docker volume inspect my-vol 5> 启动一个挂载数据卷的容器 docker run -d -P --name web --mount source=my-vol,target=/webapp training/webapp python app.py 6> 删除数据卷 docker volume rm my-vol 7> 清理无主数据卷 docker volume prune

    挂载主机目录 docker run -p 28018:27017 -v /data/db:/data/db -d --name mongo_server mongo:3.4

    数据卷进阶 volumes-from 用于数据卷容器(Data Volume Container) 1> 创建和挂载数据卷容器 有时候, 将相关的容器部署到同一个host上, 并且希望容器间可以数据共享, 我们应该创建一个命名的数据卷容器, 然后供其他容器挂载。 如: docker run -d -v /dbdata --name dbdata taining/postgres 然后通过–volumes-from 在其他容器挂载/dbdata 数据卷。 docker run -d --volumes-from dbdata --name db1 taining/postgres docker run -d --volumes-from dbdata --name db2 taining/postgres 可以同时使用多个–volumes-from 参数, 从多个容器挂载多个数据卷。 也可以从其他已经挂载数据卷的容器挂载数据卷。 docker run -d --name db3 --volnumes-from db1 taining/postgres 即使删除挂载了数据卷的容器(包括初始的容器和其他子容器), 数据卷并不会被删除。 如果想删除该数据卷, 必须在删除最后一个引用该数据卷的时候调用docker rm -v 显示删除数据卷

    2> 数据卷容器的应用 ---- 3>备份、恢复和迁移数据卷 使用数据卷共享数据,难免面临数据的备份, 恢复和迁移问题 a. 备份数据卷 通过参数 --volumes-from 从数据卷挂载数据卷, 然后备份数据卷中的数据。 docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backip.tar /dbdata 这里我们创建一个新的容器, 将Host本地目录挂载到/backup. 然后将数据卷容器的dbdata的数据卷(/dbdata)打包到/backuo/back.tar 然后在Host的当前目录下就可以得到backup.tar b. 恢复数据卷 我们可以将备份的数据恢复到原有的容器或者其他任何容器。 备份到新的容器 docker run -v /dbdata --name dbdata2 ubuntu /bin/bash 然后执行 docker run --volnumes-from dbdata2 -v $(pwd):/backup busybox xvf /backup/backup.tar

    最新回复(0)