1 备份与迁移
1.1 容器保存为镜像
docker commit pinyougou_nginx mynginx# pinyougou_nginx是容器名称
# mynginx是新的镜像名称
# 此镜像的内容就是你当前容器的内容,接下来你可以用此镜像再次运行新的容器
1.2 镜像备份
docker save -o mynginx.tar mynginx
# -o 输出到的文件
# 执行后,运行ls命令即可看到打成的tar包.
1.3 镜像恢复与迁移
首先先删除掉mynginx镜像,然后执行命令进行恢复
docker load -i mynginx.tar
# -i 输入的文件
执行后再次查看镜像,可以看到镜像已经恢复
再创建容器。
2 dockerfile
Dockerfile是由一系列命令和参数构成的脚本,这些命令应用于基础镜像并最终创建一个新的镜像。它们简化了从头到尾的流程并极大的简化了部署工作。Dockerfile从FROM命令开始,紧接着跟随者各种方法,命令和参数,其产出为一个新的可以用于创建容器的镜像.
如何写Dockerfile,Dockerfile 参考文档 | Deepzz's Blog如何写Dockerfile,Dockerfile参考文档,唯爱与美食不可辜负也 :-Dhttps://deepzz.com/post/dockerfile-reference.html
7.1 dockerfile的demo
-
在root下创建demo目录
mkdir demo
cd demo
-
在demo 目录下创建 a文件
vim a
-
在某~/demo下创建Dockerfile文件
vim Dockerfile
内容为:
# my dockerfile ljh
FROM centos
MAINTAINER ljh
WORKDIR /root/workdir
RUN touch te
ADD a b
ENV key1 "hello"# 语法解释:
# :代表注释
# FROM centos : 代表依据基本的镜像来创建
# MAINTAINER ljh :代表就是作者是谁
# WORKDIR /root/workdir :代表就是创建容器时进入工作的目录是容器中的/root/workdir目录
# RUN touch te :代表就是RUN 运行命令 运行一个创建空文件te# COPY ["HI","."] :代表从宿主系统中复制HI 文件到容器系统中工作目录中的当前路径下
# ADD a b :代表从宿主机所在Dockerfile文件的目录下Copy 文件A 到容器中的b文件 b文件的目录为工作目录下。# ENV key1 "hello" :定义linux中的环境变量。如下:
# 定义一个:key value
# 定义多个:key=value key2=value2
-
创建自定义镜像
docker biuld -t mycentos .
# docker build : 表示通过Dockerfile文件来创建镜像
# -t mycentos 表示 给与镜像的名称和版本 为:mycentos:lasted (lasted可以不写)
# . 表示从当前目录下进行加载Dockerfile文件
-
查看是否打包镜像成功
-
测试创建容器:
docker run -di --name=mycentosheh mycustomcentos
-
连接容器
[root@localhost demo]# docker exec -it mycentosheh /bin/bash
注意: 进入目录即为:/root/workdir
在目录下有 b文件和 te文件
输入:echo $key1 查看环境变量的值结果
3 springboot微服务部署
在微服的世界中,使用springboot来开发的微服务架构,使用dockerfile 来部署应用。
-
在本地开发完成微服系统 打包,将其copy到linux系统中
-
创建dockefile文件上图:
#my dockerfile ljh
FROM java:8
MAINTAINER ljh
ADD demo-0.0.1-SNAPSHOT.jar app.jar
# ENTRYPOINT ["java","-jar","/app.jar"] 表示 执行命令: 整个命令都只能有一个ENTRYPOINT
ENTRYPOINT ["java","-jar","/app.jar"]
EXPOSE 8080
java -jar app.jar
EXPOSE 8080 发布端口为:8080
-
构建镜像
docker build -t demoappimage .
-
创建容器
docker run -di --name=myapp1 -p 8080:8080
-
效果