0x00 前言
docker已经学过一部分了,继续学习下面的部分
0x01 docker常用操作
之前已经学习了容器操作和镜像操作等,但其中常见操作不太方便看
于是这里先归纳之前所学的常用操作并加以补充:
1、镜像的操作
docker search 镜像名 #查询镜像 docker history 镜像名 #查询历史镜像 docker pull 镜像名[:tag] #拉取镜像到本地 docker images #查看本地全部镜像 docker rmi 镜像id #删除本地镜像,id可以只写前几位 docker save -o 导出的路径 镜像id #将本地镜像导出 docker load -i 镜像文件 #加载本地镜像文件 docker tag 镜像id 镜像名:版本 #修改镜像名称 #镜像文件加载后,镜像的REPOSITORY和TAG为none。通过此命令,REPOSITORY为镜像名,TAG为版本 docker commit -a '镜像作者' -m '镜像构建信息' 容器名/容器id 构建镜像名#通过容器构建镜像,-p不暂停正在运行的容器 docker build -t='镜像名' . #通过Dockerfile文件构建镜像。先创建Dockerfile文件,然后执行命令构建 docker push 镜像名[:tag] #推送镜像
shell复制代码
2、容器的操作
#运行容器,简单操作 docker run 镜像id/镜像名[:tag] #运行守护式容器 docker run -d -p 宿主机端口:容器端口 -v 宿主机目录:容器目录 --name 容器名称 镜像id/镜像名[:tag] #-d 代表后台运行容器 #-p 宿主机端口:容器端口 为了端口映射 #-v 宿主机目录:容器目录 为了目录映射 #--name 指定容器名 #-e 指定一个环境名,如MySQL容器指定MySQL密码:-e MYSQL_ROOT_PASSWORD=123456 #运行交互式容器 docker run -it 镜像id/镜像名[:tag] /bin/bash 退出交互式bash(这样容器就会在后台运行):Ctrl+P Ctrl+Q #-i 以交互模式运行容器 #-t 为创建的容器分配一个伪tty终端 docker run 镜像id/镜像名[:tag] apt-get install -y app_name #在容器安装新的程序 docker attach 容器id/容器名 #进入容器,交互式 docker ps [-qal] #查看正在运行的容器 #-a 查看全部容器,包括没有运行的 #-q 只查看容器的标识 #-l 列出最近一次启动的容器 docker logs -f 容器id/容器名 #查看容器日志 #-f 可以滚动查看日志的最后几行 docker diff 容器id/容器名 #查看容器修改操作 docker top 容器id/容器名 #查看容器内进程 docker inspect 容器id/容器名 #获取容器信息,如容器内部ip docker exec -it 容器id/容器名 /bin/bash #进入到容器内部 #也可写成docker exec -it 容器id/容器名 bash #-i 以交互模式运行容器 #-t 为创建的容器分配一个伪tty终端 docker stop 容器id/容器名 #停止指定容器 docker stop $(docker ps -qa) #停止所有容器 docker kill 容器id/容器名 #杀死指定容器 docker start 容器id/容器名 #启动容器 docker restart 容器id/容器名 #重启容器 docker rm 容器id/容器名 #删除容器(删除前,需停止容器) docker rm $(docker ps -qa) #删除所有容器(删除前,需停止容器) docker cp 文件名 容器id/容器名:容器内部路径 #将宿主机的内容复制到容器内部
shell复制代码
3、远程访问
参考之前我写的博客:Docker学习笔记(一)-容器、镜像和客户端与守护进程
0x02 Docker容器的数据管理
1、Docker容器的数据卷
1.数据卷
数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。
数据卷设计目的,在于数据的永久化,它完全独立于容器的生存周期。
2.数据卷的特点
- 数据卷在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到新初始化的数据卷中。
- 数据卷可以在容器之间共享或重用数据
- 可以对数据卷的内容直接进行修改
- 数据卷的变化不会影响镜像的更新
- 卷会一直存在,即使挂载数据卷的容器已经被删除
3.数据卷基本操作
数据卷:将宿主机的一个目录映射到容器的一个目录中
可以在宿主机中操作目录中的内容,那么容器内部映射的文件也会跟着一起改变
(1)创建数据卷
docker volume create 数据卷名 #创建后,默认会存放在/var/lib/docker/volumes/数据卷名/_data
shell复制代码
(2)查看数据卷详细信息
docker volume inspect 数据卷名
shell复制代码
(3)查看全部数据卷
docker volume ls
shell复制代码
(4)删除数据卷
docker volume rm 数据卷名
shell复制代码
(5)应用数据卷
#当映射数据卷时,若数据卷不存在,Docker会自动创建。会将容器内部自带文件存储在数据卷默认路径 docker run -v 数据卷名:容器内部路径 镜像id #直接指定一个路径作为数据卷的存放位置。指定路径下是空的,不会把容器内的文件带出来 docker run -v 路径:容器内部路径 镜像id
shell复制代码
4.数据卷的使用
(1)为容器添加数据卷
docker run --name dvt1 -v ~/container_data:/data -it ubuntu /bin/bash
shell复制代码
(2)为数据卷添加访问权限
docker run --name dvt2 -v ~/datavolume:/data:ro -it ubuntu /bin/bash #ro 容器内只读
shell复制代码
(3)使用Dockerfile构建包含数据卷的镜像
FROM ubuntu:latest VOLUME ["/datavolume1","/datavolume2"] CMD /bin/bash
shell复制代码
构建镜像
docker build -t='qwzf/dvt' .
shell复制代码
运行镜像并查看镜像中指定目录
docker run --name dvt3 -it qwzf/dvt docker inspect dvt3
shell复制代码
2、Docker的数据卷容器
1.数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫数据卷容器。
2.使用数据卷容器
挂载数据卷容器的方法
docker run -it --name 其他容器 --volumes-from 数据卷容器名 镜像名 /bin/bash
shell复制代码
例:
docker run -it --name dvt4 qwzf/dvt #启动数据卷容器 docker run -it --name dvt5 --volumes-from dvt4 ubuntu /bin/bash #挂载数据卷容器 #1、数据卷虚拟机开启或者关闭对共享无影响 #2、数据卷虚拟机多次作为共享目录,也可以做共享 #3、数据卷多次挂在,有重复名字,则以最后一个--volumes-from的为最后结果 #4、如果已经挂载数据卷容器的容器,删除数据卷容器对其无影响
shell复制代码
3、Docker数据卷的备份和还原
1.数据备份
docker run --volumes-from 需要备份的容器名 -v ~/backup:/backup ubuntu tar cvf /backup/backup.tar 需要备份的目录
shell复制代码
例:
docker run --volumes-from dvt5 -v ~/backup:/backup --name dvt11 ubuntu tar cvf /backup/dvt5.tar /datavolume1
shell复制代码
2.数据还原
docker run -v 需要还原的目录 --volumes-from 需要还原的容器名 -v ~/backup:/backup ubuntu tar xvf /backup/backup.tar
shell复制代码
例:
docker run -v /datavolume1 --name dvt12 --volumes-from dvt5 -v ~/backup:/backup ubuntu tar xvf /backup/dvt5.tar
shell复制代码
0x03 后记
docker相关的基础知识又学了一些。本篇博客记录了镜像和容器的常用操作
、docker容器的数据卷和数据卷容器
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论