一、安装配置:
1、安装(centos7):
yum install docker -y
yum install curl -y
2、配置(centos7)方便后面结合spring-boot开发:
打开/usr/lib/systemd/system/docker.service文件,修改ExecStart这行。
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
重启后生效
systemctl daemon-reload
systemctl restart docker.service
测试是否生效
curl http://127.0.0.1:2375/info
二、基本命令:
1、启动|停止|重启:
systemctl start|stop|restart docker
2、搜索镜像:
docker search java //搜索名称含有java的镜像,下面列出部分,可以看出搜索匹配NAME、DESCRIPTION
INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED
docker.io docker.io/node Node.js is a JavaScript-based platform for... 5492 [OK]
docker.io docker.io/tomcat Apache Tomcat is an open source implementa... 1823 [OK]
docker.io docker.io/java Java is a concurrent, class-based, and obj... 1703 [OK]
docker.io docker.io/openjdk OpenJDK is an open-source implementation o... 938 [OK]
docker.io docker.io/ghost Ghost is a free and open source blogging p... 753 [OK]
docker.io docker.io/anapsix/alpine-java Oracle Java 8 (and 7) with GLIBC 2.23 over... 303 [OK]
docker.io docker.io/jetty Jetty provides a Web server and javax.serv... 240 [OK]
docker.io docker.io/couchdb CouchDB is a database that uses JSON for d... 202 [OK]
3、docker pull java//下载镜像,将下载NAME为java的镜像,即上面第3行
4、docker images //显示已经存在的镜像
5、docker rmi e856e4f0e190 //删除某个镜像,注意最后的字符串是IMAGE ID,需要使用docker images列出后能看到;可能存在依赖,需要先删除依赖的镜像。
6、docker build -t my-image . //利用Dockerfile构建镜像,注意最后的点表示Dockerfile在当前目录,Dockerfile后面有示例。原理基本上就是依照某个镜像创建另一个镜像my-image。
7、docker run --name my-app -p 80:8080 -d my-image //运行镜像实例,my-app实例名,my-image镜像名。
8、docker stop|start|rm my-app //停止|启动|删除实例,注意删除必先停止
9、docker ps -a //查看实例列表,-a表示运行的停止的都显示
10、docker run -v 用于将一个宿主机上的目录挂载到镜像里,例:-v /home/myhome:/var/jenkins_home。此时可能会出现权限问题:Wrong volume permissions?Permission denied ,需要增加参数: -u 0 覆盖容器中内置的帐号,该用外部传入,这里传入0
代表的是root帐号Id。如果按照上面做还是出现Permission denied
错误,那么可以检查一下selinux
状态,开启的情况下会导致一些服务安装、使用不成功。输入命令:sestatus,会出现:Current mode: enforcing,此时需要输入命令:setenforce 0,之后会解决问题,永久关闭:修改配置文件/etc/selinux/config,将其中SELINUX设置为disabled。
二、Dockerfile:
FROM java //表示基于镜像java创建
VOLUME /tmp //创建一个目录,因为tomcat需要用到该临时目录
ADD app.jar app.jar //将Dockerfile同目录下的app.jar加入镜像名称为app.jar
ENV JAVA_OPTS="" //设置环境变量
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]//启动后即运行命令
当然,Dockerfile的配置不止这么一些,需要时可以自己去搜索。
三、结合spring-boot:
1、pom.xml:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory> <!-- 指定了Dockerfile的目录 -->
<dockerHost>http://192.168.1.168:2375</dockerHost> <!-- 运行docker的目标机器及端口,注意端口在第一步中配置 -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2、Dockerfile(src/main/docker目录下,上一步配置):
FROM java
VOLUME /tmp
ADD springboot.demo-0.0.1-SNAPSHOT.jar app.jar
RUN bash -c 'touch /app.jar'
ENV JAVA_OPTS=""
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]
3、构建:mvn package docker:build
4、上到目标机器运行:
docker run --name demo-app -p 80:8080 springboot/springboot.demo //demo-app为实例名;springboot/springboot.demo为利用maven远程构建的镜像名,前面pom.xml配置相对应。