docker & idea 集成开发环境搭建

1. 官网安装教程

  • Uninstall old versions

    sudo yum remove docker \
                      docker-client \
                      docker-client-latest \
                      docker-common \
                      docker-latest \
                      docker-latest-logrotate \
                      docker-logrotate \
                      docker-engine

     

  • SET UP THE REPOSITORY

    sudo yum install -y yum-utils
    sudo yum-config-manager \
        --add-repo \
        https://download.docker.com/linux/centos/docker-ce.repo
  • INSTALL DOCKER ENGINE

    sudo yum install docker-ce docker-ce-cli containerd.io

 

2. 配置docker

  • vim /etc/docker/daemon.json
    
    {"exec-opts":["native.cgroupdriver=systemd"],"registry-mirrors":["https://docker.mirrors.ustc.edu.cn/"],"insecure-registries":["172.17.0.8"]}
    
    # native.cgroupdriver:k8s的kubelet使用的是systemd驱动。如果要搭建k8s这里需要配置下,修改kubelet配置也可以,相对麻烦点;
    # registry-mirrors:镜像下载地址,修改为国内地址,加速镜像下载速度;
    # insecure-registries:docker私有仓库默认是通过https访问的,配置为非安全模式,可以通过http的方式访问私有仓库
    
    #重启docker守护进程
    sudo systemctl daemon-reload
    sudo systemctl restart docker

     

3. docker常用操作

  • docker build 根据dockerfile构建镜像
    docker search imageName 搜索镜像(模糊搜索)
    docker pull imageName 拉取镜像
    docker rmi [-f] imageId/imagename 删除镜像
    docker image ls 查看镜像
    docker image inspect imageId/imagename 查看镜像的详细信息
  • docker 非交互式启动容器 如 docker run -v /demo/logs:/demo/logs --name register --net host devops_register
    docker 交互式启动容器 docker run -it devops_register /bin/bash
    docker rm [-f] containerId/containerName 删除容器
    docker ps 查看所有运行的容器
    docker container ls [-a] 查看运行的容器 :-a 查看所有容器
    docker container inspect  containerId/containerName 查看容器的详细信息
  • docker network create networkName 创建网络
    docker network connect containerId/containerName networkId/networkName 把容器连接到指定网络上
    docker network inspect networkId/networkName 查看网络的详细信息
    docker network ls 查看网络
  • docker cp source target 把容器中的配置文件拷到宿主机上。然后通过-v 与容器中的文件映射。
    通常通过自定义配置文件装软件的时候需要这种操作(不用自定义配置文件的话,可以直接通过docker run -e指定环境变量)

4. 修改启动服务支持远程tcp连接

  •     find / -name docker.service
  • vim /usr/lib/systemd/system/docker.service
    找到ExecStart参数, 修改为 /usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2376 (默认2375,本人服务器上2375端口有问题)

5. idea 连接远程docker

  • 把service窗口添加到工具栏
    docker & idea 集成开发环境搭建_第1张图片
  • 添加docker配置并配置docker,配置好后,双击Docker 或者右键connect 连接远程docker
    docker & idea 集成开发环境搭建_第2张图片docker & idea 集成开发环境搭建_第3张图片docker & idea 集成开发环境搭建_第4张图片

6. 项目使用docker部署(通过docker启动项目)

  • 新建springboot项目(略)并配置dockerfile,内容如下
    FROM mcr.microsoft.com/java/jdk:8u272-zulu-centos # jdk环境,最好是提前准备好
    ENV JAVA_OPTIONS=""                               # jvm参数
    ADD target/*.jar /app.jar                         # 运行jar包,ADD 后的jar路径与dockerfile文件路径有关,是相对dockerfile的路径
    HEALTHCHECK --interval=60s --timeout=30s --start-period=60s --retries=3 CMD curl -f http://localhost/check/heart || exit 1            # 健康检查
    CMD java $JAVA_OPTIONS -jar /app.jar              # 主应用启动命令
    # 后面只发布不运行的话,需要在服务端执行下面命令启动容器
    docker run -d -p 8889:8888 \
              -e "JAVA_OPTIONS=-Xmx1024m -Djava.security.egd=file:/dev/./urandom" \ #配置jvm参数
              -e "SPRING_PROFILES_ACTIVE=dev" \ # 配置spring应用环境
              -v /data/logs/framework:/app/logs # 日志映射到宿主机
              --name register register          # 前一个register是容器名,后面那个是镜像名

     

  • docker启动配置
    docker & idea 集成开发环境搭建_第5张图片
  • 本地测试通过后,保证target目录下生成部署jar包(项目如果有修改重启项目,jar包不会更新,所以发布前最好用idea上的maven打个包),dockerfile构建容器会用到
    docker & idea 集成开发环境搭建_第6张图片docker & idea 集成开发环境搭建_第7张图片

7. 通过docker-maven-plugin直接部署镜像到docker,除了共用一个dockerfile外跟6中的内容没有任何关系。
6中直接构建镜像并启动容器,此处只构建镜像并部署到docker,如果要启动容器需要到docker 所在服务器通过docker run 启动
双击package后可以切到service窗口只有镜像没有容器(考虑到网络问题部署到云端docker的话可能会有点慢,耐心点就可以看到理想结果,单机或者本地虚拟机会很快看到结果)

        
            
                com.spotify
                docker-maven-plugin
                1.0.0
                
                    
                        build-image
                        package
                        
                            build
                        
                    
                
                
                    
                    register
                    
                    
                        latest
                    
                    
                    ${project.basedir}
                    
                    http://ip:2376
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
        

docker & idea 集成开发环境搭建_第8张图片docker & idea 集成开发环境搭建_第9张图片

8. 记录下写这篇文章遇到的坑

docker 默认远程端口(2375)不可用(内网可以,外网死活用不了)。
尝试了tracerout 跟踪请求,telnet 端口,tcpdump抓包,修改腾讯云安全组的入站策略。添加TCP:2375 通过 通通没用
最后实在没办法直接换成了2376端口,问题解决了。。。

你可能感兴趣的:(docker,java,linux,centos,intellij,idea)