Docker镜像操作
什么是镜像 : 就是虚拟机的静态磁盘文件
也就是说小的虚拟机
可以任意的复制,分发,就是可以任意执行,可以别的计算机上执行
在线装镜像 (官方的镜像库)
http://hub.docker.com
可以搜搜你需要的进项
找到你需要的镜像后按照命令安装就好了
离线装镜像
把镜像的压缩包 上转到/root/目录中
导入镜像
docker load -i 文件名
查看镜像列表
docker images
镜像命令
装镜像
docker pull xxxx:xxx
查看镜像列表
docker images
删除镜像
如果有容器使用这个镜像,不允许删除
删除的时候 镜像ID的前3个字母就行
在镜像列表中查看 镜像ID
docker rmi bf7
强制删除
docker rmi -f bf7
删除多个镜像
docker rmi -f xxx xxx xxx xxx
运行镜像
docker run 镜像名
镜像改名
docker tag 镜像的名 修改的名:标签
构建镜像
docker build -t aaa:bbb
导出镜像
多个镜像压缩到一个 压缩包中
docker save 111 222 333 | gzip > a.gz
导入镜像
docker load -i a.gz
下载不同版本的镜像
镜像名 分成两部分
名称:标签
默认标签是 latest
tag 就是标签 ,如果我们要下载的是 ,要下载镜像的旧版本
那么下载 命令执行的时候 加上就可以了 比如
docker pull 镜像名:版本
如何找到不同的版本
在官网里找
http://hub.docker.com
Docker容器操作
- 镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样
- 镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
容器命令
doker run
- a 后台运行
# -d 后台运行
docker run -d tomcat
#查看容器中的日志
docker logs xxx
#查看容器列表
docker ps # 查看运行状态的容器
docker ps -a # 查看全部容器,包括已关闭的容器
-d 是后台运行
直接run 方法 来运行的话 会打出很多日志所以直接 加上-d 来启动
-it 交互终端
我们运行后 跟容器交互,就是容器里面执行一些命令或者创建文件等
容器也是跟系统一样就是虚拟机 。
- -i 是交互
- -t 是终端
- exec 进入容器
# 进入容器,在容器内部执行执行的命令
#-i 交互
#-t 终端
#exec 进入容器
docker exec -it 容器运行后的ID pwd
docker exec -it xxx ls
docker exec -it xxx touch f1.txt
docker exec -it xxx ls
docker exec -it xxx top
进入容器需要运行后的容器ID 容器执行后
docker ps -a 命令来看 运行后的ID
用 exec 来进入容器执行命令的话 就一次 不能彻底进入容器
history 查看容器的默认启动命令
docker history tomcat
docker history redis
docker history mariadb
docker history centos:7
–name 容器命名
启动容器时 会有默认的名称,如果我们要指定容器的名字 那么使用此命令
–restart=always 容器会随系统一起重新启动
当Docker服务关闭时 容器跟着关闭 所以 我们使用此命令来 docker服务启动时 容器也跟着启动
docker run -d --name cat1 --restart=always tomcat
– rm 容器关闭时,自动删除容器
当docker 关闭时 容器也跟着删除
docker run -d --rm tomcat top
docker ps
ps 命令是 查看容器的列表
-a
没有参数 的 ps 命令 只显示运行中的 容器 加 -a 命令的话显示 运行停的和在运行的所有容器
docker loges
查看容器的日志
docker inspect
查看容器的各种参数和属性
dicker stop
把容器关闭
dicker restart
重启容器 根据名字或者根据id删
dicker start
启动容器 根据名字或者根据id删
这个跟 run 命令的区别是
- docker run ———— 没有启动过的容器 启动时使用
- docker start ———— 启动过 被停止的容器 中使用
docker exec
进入一个容器 并且 执行一个命令
docker rm
删除容器 根据名字或者根据id删
-f
强制删除 如果删掉正在运行的容器 加-f 就ok 了
docker container prune
删除 被停止的所有容器
数据管理
目录挂载
在开发过程当中,在数据库容器里我们存储好多信息,但是容器一旦删除就里面的信息都没了 所以我们先把 容器里存数据的目录挂载到我们的宿主机上 那么容器删除了也 数据库中的数据能保留
- /usr/app 是宿主机的一个目录 -v 参数可以自动创建这个文件夹
- /opt/app 是容器内的路径
实现目录挂载
-v /user/app:/opt/app
docker run -d --name cat1 -v /user/app:/opt/app tomcat
测试目录挂载是否成功
- 进入 cat1 容器,在它的 /opt/app 目录下新建文件 f1.txt
docker exec -it cat1 bash
cd /opt/app
touch f1.txt
ls
exit
- 查看宿主机 /usr/app 目下的文件录
cd /usr/app
ls
数据卷
数据源是一种特殊的目录,如果我们挂载的目录太长,不方便重用不方便访问 那么我们选择 数据卷
创建数据源
docker volume create my-vol
查看数据卷
检查有多条数据源
docker volume ls
查根据数据卷的名字查看数据卷的地址
docker inspect my-vol
测试目数据挂载数据卷
- 进入 cat1 容器,在它的 /opt/app 目录下新建文件
docker exec -it cat2 bash
cd /opt/app
touch f2.txt
ls
exit
- 查看宿主机 /usr/app 目下的文件录
cd /var/lib/docker/volumes/my-vol/_data
ls