docker & idea 集成开发环境搭建

1. 官网安装教程

2. 配置国内镜像仓库

  • vim /etc/docker/daemon.json
    添加以下内容
    { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"] }
  • 重启docker守护进程
    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配置并配置docker,配置好后,双击Docker 或者右键connect 连接远程docker

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

  • 新建springboot项目(略)并配置dockerfile
    FROM后的是依赖镜像,需要通过在docker服务器上提前拉下来
    docker pull mcr.microsoft.com/java/jdk:8u272-zulu-centos
    ADD 后的jar路径与dockerfile文件路径有关,是相对dockerfile的路径

  • 本地测试通过后,保证target目录下生成部署jar包(项目如果有修改重启项目,jar包不会更新,所以发布前最好用idea上的maven打个包),dockerfile构建容器会用到

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

        <plugins>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <executions>
                    <execution>
                        <id>build-image</id>
                        <phase>package</phase>
                        <goals>
                            <goal>build</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!--指定生成的镜像名-->
                    <imageName>register</imageName>
                    <!--指定标签-->
                    <imageTags>
                        <imageTag>latest</imageTag>
                    </imageTags>
                    <!-- 指定 dockerfile 路径,与6中的是同一个dockerfile -->
                    <dockerDirectory>${project.basedir}</dockerDirectory>
                    <!--指定远程 docker 暴露的地址-->
                    <dockerHost>http://ip:2376</dockerHost>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>

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

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

猜你喜欢

转载自blog.csdn.net/wfl_137724/article/details/112920405