Docker学习随笔

一、安装配置:
    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:
    
                com.spotify
                docker-maven-plugin
                1.0.0
               
                    ${docker.image.prefix}/${project.artifactId}
                    src/main/docker
                    http://192.168.1.168:2375
                   
                       
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                       

                   

               

           

    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配置相对应。

你可能感兴趣的:(烂笔头,docker,spring)