一、容器的导入与导出
首先,要确定正在运行的容器:
-
命令格式:
docker commit 容器ID mysql:latestdocker commit [ 容器名称|ID ] 生成新的镜像名字
save和load 不会丢弃历史记录和元数据,并可以回滚版本:
导出镜像为本地文件:
- sudo docker save -o /usr/local/mysql.tar mysql:latest(镜像名)
- sudo docker save mysql:latest > /usr/local/mysql.tar
导入镜像:
- docker load --input /usr/local/mysql.tar
- docker load -i /usr/local/mysql.tar
- docker load < /usr/local/mysql.tar
export和import 之前镜像的层级删干净,只保留最新的快照文件:
导出镜像:
- docker export 容器ID> /usr/local/mymysql.tar
导入镜像:
- docker import tar包名 镜像名(自定义)
二、数据卷
数据卷:是一个可供一个或多个容器使用的特殊目录
特性: 其生存周期独立于容器的生存周期·
- 数据卷可以在容器之间共享和重用 ·
- 对数据卷的修改会立马生效 ·对数据卷的更新,不会影响镜像 ·
- 数据卷默认会一直存在,即使容器被删除
为什么需要数据卷?
- 在多个容器之间共享数据,多个容器可以同时以只读或者读 写的方式挂载同一个数据卷,从而共享数据卷中的数据。
- 当宿主机不能保证一定存在某个目录或一些固定路径的文件 时,使用数据卷可以规避这种限制带来的问题。
- 当你想把容器中的数据存储在宿主机之外的地方时,比如远 程主机上或云存储上。
- 当你需要把容器数据在不同的宿主机之间备份、恢复或迁移时,数据卷是很好的选择。
数据卷应用
创建数据卷
- docker volume create 数据卷名称
- 创建数据卷之后,默认会存放到目录:/var/lib/docker/volume/数据卷名称/_data目录下
查看数据卷
- docker volume inspect数据卷名称
查看全部数据卷信息
- docker volume ls
删除数据卷
- docker volume rm 数据卷名称
应用数据卷
当你映射数据卷时,如果数据卷不存在,Docker 会帮你自动创建
- docker run -v 数据卷名称:容器内路径 镜像ID
直接指定一个路径作为数据卷的存储位置
- docker run -v 路径:容器内部的路径 镜像ID
安装gogs,进行环境配置
docker pull gogs/gogs
创建gogs存储目录
mkdir -p /var/gogs
强制删除运行中的容器
docker rm -f 容器名
运行docker命令
docker run --name=gogs -p 7777:22 -p 9999:3000 -v /var/gogs:/data gogs/gogs
启动后,访问liunx 的ip+端口 进入设置
DockerFile:
Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明,其中每条指令对应Linux中的一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。
Dockerfile结构大致分为四个部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。Dockerfile每行支持一条指令,每条指令可带多个参数,支持使用以#号开头的注释。
构建镜像 (注意后面那个 .):
- -f 指定 dockerfile文件
- -t 指定image tag 标签
- docker build -f mysql -t mysql:5.6 .
- 查看构建的镜像 docker images
- 启动mysql容器 docker run -d --name mysql mysql:5.6