Intellij IDEA快速实现Docker镜像部署(无废话版)---------------(二)

1、Docker开启远程访问

[root@izwz9eftauv7x69f5jvi96z docker]# vim /lib/systemd/system/docker.service
#修改ExecStart这行
ExecStart=/usr/bin/dockerd  -H tcp://0.0.0.0:2375  -H unix:///var/run/docker.sock

别人的截图: 

我的截图:

 

#重新加载配置文件
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl daemon-reload    
#重启服务
[root@izwz9eftauv7x69f5jvi96z docker]# systemctl restart docker.service 
#查看端口是否开启
[root@izwz9eftauv7x69f5jvi96z docker]# netstat -nlpt
#直接curl看是否生效
[root@izwz9eftauv7x69f5jvi96z docker]# curl http://127.0.0.1:2375/info

在浏览器输入地址:http://ip:2375/info  :(则开启成功)

2、Intellij IDEA安装Docker插件

打开Idea,从File->Settings->Plugins->Install JetBrains plugin进入插件安装界面,在搜索框中输入docker,可以看到Docker integration,点击右边的Install按钮进行安装。安装后重启Idea。 

重启后配置docker,连接到远程docker服务。从File->Settings->Build,Execution,Deployment->Docker打开配置界面。

3、spring boot服务Docker部署

3.1新建一个Spring boot工程,编写测试接口

3.2修改pom文件,添加properties,添加plugin

<properties>
        <java.version>1.8</java.version>
        <docker.image.prefix>bozai</docker.image.prefix>
    </properties>
 
 
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>docker-maven-plugin</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>
                    <dockerDirectory></dockerDirectory>
                    <resources>
                        <resource>
                            <targetPath>/</targetPath>
                            <directory>${project.build.directory}</directory>
                            <include>${project.build.finalName}.jar</include>
                        </resource>
                    </resources>
                </configuration>
            </plugin>
        </plugins>
    </build>

我的:

	<plugin>
				<groupId>com.spotify</groupId>
				<artifactId>docker-maven-plugin</artifactId>
				<version>1.0.0</version>
				<configuration>
					<imageName>zhangqiang/${project.artifactId}</imageName>
					<dockerDirectory></dockerDirectory>
					<resources>
						<resource>
							<targetPath>/</targetPath>
							<directory>${project.build.directory}</directory>
							<include>${project.build.finalName}.jar</include>
						</resource>
					</resources>
				</configuration>
			</plugin>

3.3配置Dockerfile文件:在工程根目录下新建Dockerfile文件。

别人的:(EXPOSE 8080 这个8080 尽量保持与项目里面的端口一致,不一致的时候我的好像出过问题

FROM java:8
VOLUME /tmp
COPY target/demo-0.0.1-SNAPSHOT.jar demo.jar
RUN bash -c "touch /demo.jar"
EXPOSE 8080
ENTRYPOINT ["java","-jar","demo.jar"]

 我的:

FROM java:8
VOLUME /tmp
COPY target/appserver-0.0.1-SNAPSHOT.jar lhyl.jar
RUN bash -c "touch /lhyl.jar"
EXPOSE 8066
ENTRYPOINT ["java","-jar","lhyl.jar"]

4、创建Docker镜像

       将工程打包,在idea Terminal中执行mvn clean package命令进行编译打包,打包后会在target目录下生成jar包。生成jar包后,可以在本地启动服务,进行测试。测试后,配置docker镜像制件命令。从Run->Edit Configrations进入配置界面。

点击Docker,再点击+号,添加一个docker命令,输入Name,选择Server,选择Dockerfile文件,输入镜像tag,完成配置。 

 

 

 

正在打包。。。。。

查看docker运行状态:已经有了镜像,并正在运行(镜像中有java8,所以文件有点大1.01GB)

浏览器访问:ip:8291端口

 

 

后记:中间会出现的问题:

1.一定要关闭防火墙

2:暂时关闭防火墙

systemctl stop firewalld

service  iptables stop

地址:https://blog.csdn.net/hunheidaode/article/details/103936471

2. 会出现的问题2

参考:

https://blog.csdn.net/bobozai86/article/details/88875784

https://my.oschina.net/wuweixiang/blog/2874064

https://blog.csdn.net/sealir/article/details/81200662

3.会出现的问题3

docker-runc not installed on system 问题

问题描述:

  docker运行镜像的时候,报错如下:

1

2

3

[root@etcd1 k8s]# docker run -it registry.helloworld.com/test/atsd:latest bash

WARNING: IPv4 forwarding is disabled. Networking will not work.

/usr/bin/docker-current: Error response from daemon: shim error: docker-runc not installed on system.

 

问题解决:

  经过一番排查,如下解决方案有用:

1

2

[root@etcd1 k8s]# cd /usr/libexec/docker/

[root@etcd1 docker]# ln -s docker-runc-current docker-runc

 

以上,问题解决。https://www.cnblogs.com/cxbhakim/p/8862758.html

4.会出现的问题4

exec: "docker-proxy": executable file not found in $PATH

在执行 docker run 操作的时候,一直报如下错误:

[root@etcd1 vagrant]#  docker run --name redis-6379 -p 6379:6379 -d --rm daocloud.io/library/redis

9e3e4650004bfd68030ea23c4a1e300556721c516160464afe45554b2184c111

/usr/bin/docker-current: Error response from daemon: driver failed programming external connectivity on endpoint redis-6379 (78ec2496afe55876e51d8e062bb09a6fcda7f36e292b99ad902efc27c65aa555): exec: "docker-proxy": executable file not found in $PATH

  

可知,启动需要执行 /usr/bin/docker-proxy 

查看下 docker-proxy 的位置:

1

2

[root@etcd1 vagrant]# cat /usr/lib/systemd/system/docker.service | grep prox

          --userland-proxy-path=/usr/libexec/docker/docker-proxy-current \

  

创建一条软连接到 /usr/bin/ 下:

1

[root@etcd1 vagrant]# ln -s /usr/libexec/docker/docker-proxy-current /usr/bin/docker-proxy

  

重新执行操作:

1

2

[root@etcd1 vagrant]#  docker run --name redis-6379 -p 6379:6379 -d --rm daocloud.io/library/redis

516049b733070354a177dba57fbe402fd4c0e47682ce4660275e18ffcbb58342

  

以上.https://www.cnblogs.com/cxbhakim/p/9149596.html

5.会出现的问题5

Bind for 0.0.0.0:80 failed: port is already allocated.解决方案

一句话总结就是容器占用的port还没有完全释放

 

查看进程,发现相关的容器并没有在运行,而 docker-proxy 却依然绑定着端口:

$ docker ps

检查docker镜像

$ ps -aux | grep -v grep | grep docker-proxy

查看被docker-proxy占用的端口

停止 doker 进程,删除所有容器,然后删除 local-kv.db 这个文件,再启动 docker 就可以了。

$ sudo service docker stop
$ docker rm $(docker ps -aq)
$ sudo rm /var/lib/docker/network/files/local-kv.db
$ sudo service docker start

https://www.cnblogs.com/typttxs/p/10764640.html

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值