关于镜像操作
Docker 运行容器前需要本地存在对应的镜像, 如果镜像不存在, Docker 会尝试先从默认镜像仓库下载(默认使用 Docker Hub 公共注册服务器中的仓库), 用户也可以通过配置,使用自定义的镜像仓库。
1、获取镜像
docke pull NAME:(TAG) #NAME为镜像名称,TAG是镜像标签(一般是指版本信息),不加TAG默认会下载lates版本,但是生成环境不建议,因为不稳定
2、查看镜像
docker images #列出本地主机上已有的镜像信息
docker inspect NAME #获得NAME镜像的详细信息
docker search NAME #搜索官方仓库中的带指定名称的镜像
3、删除清理镜像
docker rmi NAME #删除镜像 -f强制删除
docker image prune #删除无用镜像或者临时镜像
4、创建镜像
三种方式:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建(其实还可以在idea中基于maven插件构建镜像)
①、基于已有镜像的容器创建
docker commit 新镜像名 已有镜像名:TAG #基于已有镜像构建新的镜像,后面除了TAG版本信息,还可以跟-a"作者信息",-m"提交信息"
②、基于本地模板导入
通过OpenVZ:https://wiki.openvz.org/Download/template/precreated
提供的模板,运行docker import
假如我下载了模板centos-6-x86-minimal.tar.gz
cat centos-6-x86-minimal.tar.gz|docker import - centos6
③、基于Dockerfile
基本命令
eg.构建jdk1.8的镜像
FROM centos:7 #定义镜像启动的基础
MAINTAINER wang #镜像作者
WORKDIR /usr #设置工作目录
RUN mkdir /usr/local/java #执行命令
ADD jdk-8u171-linux-x64.tar.gz /usr/local/java #从宿主机执行文件拷贝解压
ENV JAVA_HOME /usr/local/java/jdk1.8.0_171 #设置环境变量
ENV JRE_HOME $JAVA_HOME/jre #设置环境变量
ENV CLASSPATH $JAVA_HOME/bin/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH #设置环境变量
ENV PATH $JAVA_HOME/bin:$PATH #设置环境变量
注意:安装包一定要和脚本文件Dockerfile在同一个目录下
接下来就运行下面命令创建镜像
docker build -t jdk:1.8 ./ #-t 是给镜像命名,冒号后为版本号,最后一定不要忘了.或者./为在当前目录下查找脚本运行
最后就是基于镜像创建容器
docker run -di --name=jdk jdk1.8
针对于jdk可以进入容器查看Java版本
docker exec -it jdk /bin/bash
java -version
④、基于maven插件构建镜像
开启docker的远程访问
vi /lib/systemd/system/docker.service
其中的ExecStart=后添加配置
-H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock
刷新配置,重启服务
systemctl daemon-reload
systemctl restart docker
访问测试:IP:2375
说明远程访问已经开启
增加docker的maven插件
<build>
<!--项目打包后jar的名字,xxxx.jar-->
<finalName>xxxx</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!--docker的maven插件,官网: https://github.com/spotify/docker‐maven‐plugin-->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.13</version>
<configuration>
<!--镜像名 PetHome:1.0-->
<imageName>${project.artifactId}:${project.version}</imageName>
<!--基础镜像-->
<baseImage>jdk:1.8</baseImage>
<!--容器启动的命令-->
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}
</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<!--docker远程主机-->
<dockerHost>http://IP:2375</dockerHost>
</configuration>
</plugin>
</plugins>
</build>
最后就是在idea中Terminal执行下面命令
mvn clean package -Dmaven.test.skip=true docker:build
构建成功后可以查看docker是否有镜像
5、上传镜像
docker push NAME:TAG | NAME:TAG
上述命令默认是上传到Docker Hub官方仓库的(第一次上传需要进行登录或者注册)