docker已经学过一部分了,继续学习下面的部分
之前已经学习了容器操作和镜像操作等,但其中常见操作不太方便看
于是这里先归纳之前所学的常用操作并加以补充:
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] #推送镜像
#运行容器,简单操作
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/容器名:容器内部路径 #将宿主机的内容复制到容器内部
参考之前我写的博客:Docker学习笔记(一)-容器、镜像和客户端与守护进程
1.数据卷
数据卷是经过特殊设计的目录,可以绕过联合文件系统(UFS),为一个或多个容器提供访问。
数据卷设计目的,在于数据的永久化,它完全独立于容器的生存周期。
2.数据卷的特点
3.数据卷基本操作
数据卷:将宿主机的一个目录映射到容器的一个目录中
可以在宿主机中操作目录中的内容,那么容器内部映射的文件也会跟着一起改变
(1)创建数据卷
docker volume create 数据卷名
#创建后,默认会存放在/var/lib/docker/volumes/数据卷名/_data
(2)查看数据卷详细信息
docker volume inspect 数据卷名
(3)查看全部数据卷
docker volume ls
(4)删除数据卷
docker volume rm 数据卷名
(5)应用数据卷
#当映射数据卷时,若数据卷不存在,Docker会自动创建。会将容器内部自带文件存储在数据卷默认路径
docker run -v 数据卷名:容器内部路径 镜像id
#直接指定一个路径作为数据卷的存放位置。指定路径下是空的,不会把容器内的文件带出来
docker run -v 路径:容器内部路径 镜像id
4.数据卷的使用
(1)为容器添加数据卷
docker run --name dvt1 -v ~/container_data:/data -it ubuntu /bin/bash
docker run --name dvt2 -v ~/datavolume:/data:ro -it ubuntu /bin/bash
#ro 容器内只读
FROM ubuntu:latest
VOLUME ["/datavolume1","/datavolume2"]
CMD /bin/bash
构建镜像
docker build -t='qwzf/dvt' .
运行镜像并查看镜像中指定目录
docker run --name dvt3 -it qwzf/dvt
docker inspect dvt3
1.数据卷容器
命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,挂载数据卷的容器,就叫数据卷容器。
2.使用数据卷容器
挂载数据卷容器的方法
docker run -it --name 其他容器 --volumes-from 数据卷容器名 镜像名 /bin/bash
例:
docker run -it --name dvt4 qwzf/dvt #启动数据卷容器
docker run -it --name dvt5 --volumes-from dvt4 ubuntu /bin/bash #挂载数据卷容器
#1、数据卷虚拟机开启或者关闭对共享无影响
#2、数据卷虚拟机多次作为共享目录,也可以做共享
#3、数据卷多次挂在,有重复名字,则以最后一个--volumes-from的为最后结果
#4、如果已经挂载数据卷容器的容器,删除数据卷容器对其无影响
docker run --volumes-from 需要备份的容器名 -v ~/backup:/backup ubuntu tar cvf /backup/backup.tar 需要备份的目录
例:
docker run --volumes-from dvt5 -v ~/backup:/backup --name dvt11 ubuntu tar cvf /backup/dvt5.tar /datavolume1
docker run -v 需要还原的目录 --volumes-from 需要还原的容器名 -v ~/backup:/backup ubuntu tar xvf /backup/backup.tar
例:
docker run -v /datavolume1 --name dvt12 --volumes-from dvt5 -v ~/backup:/backup ubuntu tar xvf /backup/dvt5.tar
docker相关的基础知识又学了一些。本篇博客记录了镜像和容器的常用操作
、docker容器的数据卷和数据卷容器