1. 编写 dockerfile

FROM centos:centos7 # 基础镜像
WORKDIR /usr/local/ecloud_disk # 创建进入目录
COPY main /usr/local/ecloud_disk # 拷贝核心文件
RUN  chmod -R 0777 main # 赋予执行权限
CMD  ./main # 运行时执行

2. 构建镜像

# 构建镜像(保证目录中有dockerfile)
docker build -t [镜像名称] .

# 查看镜像列表
docker images


3. 容器

# 运行
docker run [镜像ID] | 镜像名称[:tag]

docker run -dit -p 80:9090 --name cloud2 \
-v ~/data/ecloud_disk/res:/usr/local/ecloud_disk/res \
-v ~/data/ecloud_disk/files:/usr/local/ecloud_disk/files \
-v ~/data/ecloud_disk/database.db:/usr/local/ecloud_disk/database.db \
-v ~/data/ecloud_disk/cong.ini:/usr/local/ecloud_disk/cong.ini \
IMAGENAME 

# 可选 自定义模板采用,并且需要把custom_template_router.json
-v ~/data/ecloud_disk/custom_template_router.json:/usr/local/ecloud_disk/custom_template_router.json \

# 直接启动并执行一段指令
docker run --rm -it -v /root/test/calendar-notepad-vue-dev:/calendar --name node_c1 node /bin/sh -c "cd /calendar && npm install && npm run build"

4. 容器/镜像导入导出

一般情况 前两个是容器相关的导入导出,后两个是镜像的导入导出,不可混用

1)export 导出容器

  • -o 导出的tar包名
// 格式:
docker export [-o|--output[=""]] CONTATINER
// 或
docker export 容器id/name >文件名.tar



// 示例
docker export  -o mycloud.tar cloud2
// 或
docker export cloud2 > mycloud.tar

2)import 导入镜像

丢弃了所有的历史记录和元数据信息,仅保存容器当时的快照状态。在导入的时候可以重新制定标签等元数据信息

  • -c 导入的同时执行对容器进行修改的Dockerfile指令
  • -m 对导入的镜像设定同步信息
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]
// 例如
docker import test.img test

3)save 导出镜像

docker save -o test.tar image_name
// 或者
docker save image_name > /test.tar

4)load 导入镜像

docker load [OPTIONS]  ## 导入镜像语法
## Options:
##   -i, --input string   指定镜像位置
##   -q, --quiet          抑制输出内容

docker load --input /test.tar
// huoi
docker load < 2023-1-9.tar

将保存完整记录,体积较大

区别:

  1. docker save保存的是镜像(image),docker export保存的是容器(container);
  2. docker load用来载入镜像包,docker import用来载入容器包,但两者都会恢复为镜像;
  3. docker load不能对载入的镜像重命名,而docker import可以为镜像指定新名称。
作者:sun  创建时间:2021-12-05 10:48
最后编辑:sun  更新时间:2023-01-12 11:57