Docker入门使用
一、docker简介
摘:docker是一个开源的应用容器引擎,让开发者可以打包应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统的机器上,可以实现虚拟化,容器是完全使用沙箱机制,相互之间是隔离。
下图是docker直接在linux或windows上的运行环境:
从上图直观的看出docker就是个提供软件环境虚拟化的软件,可以构造多个容器来隔离多个应用之间的运行环境。
二、为什么使用docker
- docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多,大大的节约了开发,测试,部署的时间。
- docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 docker 容器。
- 容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高。
- 传统虚拟机方式运行10个不同的应用就要起10个虚拟机,而docker 只需要启动10个隔离的应用即可。
三、linux中简单使用docker
卸载遗留docker旧版本
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
rm -rf /etc/systemd/system/docker.service.d
rm -rf /var/lib/docker
rm -rf /var/run/docker
安装及启动
- Docker要求CentOS系统的内核版本高于 3.10 ,通过
uname -r
命令查看你当前的内核版本是否支持安账docker。 - 更新yum包:
sudo yum update
。 - 安装需要的软件包,yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
。 - 设置yum源:
sudo yum-config-manager --add-repo 。https://download.docker.com/linux/centos/docker-ce.repo
。 - 可以查看所有仓库中所有docker版本,并选择特定版本安装:
yum list docker-ce --showduplicates | sort -r
。 - 安装docker:
sudo yum install docker-ce-<VERSION_STRING>
。 - 启动、设置开启开机启动:
sudo systemctl start docker
;sudo systemctl enable docker
。 - 验证安装是否成功(有client和service两部分表示docker安装启动都成功了):
docker version
- 查看docker启动状态:
systemctl status docker
四、IDEA中使用docker
前言
若直接在物理机上操作docker,就得必须采用命令的形势来实现,然而在IDEA中可以直接使用docker插件来对docker进行操作,简化了操作过程。
开启docker远程访问
- 默认的dokcer不支持远程访问,需要修改配置文件:
vim /lib/systemd/system/docker.service
,修改内容如下: - 重新加载配置文件:
systemctl daemon-reload
- 重启服务:
systemctl restart docker.service
- 查看配置的端口号(2375)是否开启:
netstat -nlp | grep 2375
,如下则成功 - 若没有,开启防火墙重启后再次查看:
firewall-cmd --zone=public --add-port=2375/tcp --permanent
;firewall-cmd --reload
使用IDEA连接docker
-
下载docker插件
-
新建连接
-
连接之后可以直接使用服务器上的docker了,如拉取镜像、删除镜像、创建容器、运行容器、删除容器等操作同意在如下截图中,再次不一一列举展示
快速部署应用
docker传统部署应用的方式是需要自己编写Dockerfile文件以及其他步骤,比较麻烦,而使用IDEA的docker插件来部署就很简单方便。
- 在pom文件中配置docker的构建插件。
<!--使用docker-maven-plugin插件--> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <!--将插件绑定在某个phase执行--> <executions> <execution> <id>build-image</id> <!--用户只需执行mvn package ,就会自动执行mvn docker:build--> <phase>package</phase> <goals> <goal>build</goal> </goals> </execution> </executions> <configuration> <!--指定生成的镜像名--> <imageName>${project.artifactId}:${project.version}</imageName> <!--指定标签 这里指定的是镜像的版本,我们默认版本是latest--> <imageTags> <imageTag>latest</imageTag> </imageTags> <!--指定基础镜像jdk1.8--> <baseImage>java</baseImage> <!--切换到home目录--> <workdir>/home</workdir> <!--查看我们的java版本--> <cmd>["java", "-version"]</cmd> <!--${project.build.finalName}.jar是打包后生成的jar包的名字--> <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint> <!--指定服务器 docker 地址--> <dockerHost>http://127.0.0.1:2375</dockerHost> <!-- 这里是复制 jar 包到 docker 容器指定目录配置 --> <resources> <resource> <targetPath>/</targetPath> <!--jar 包所在的路径 此处配置的 即对应 target 目录--> <directory>${project.build.directory}</directory> <!--用于指定需要复制的文件 需要包含的 jar包 ,这里对应的是 Dockerfile中添加的文件名 --> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin>
- 项目重新编译打包
- 编译完之后可以看到镜像下面多了一个我们的项目镜像
- 创建应用镜像的容器
- 配置容器启动相应参数
- 配置完成点击
apply
后run
即可运行该容器 - 测试访问即可
五、结语
综上是笔者在学习docker时总结的使用方法,以及在IDEA
中如何使用docker
插件,方便快速的构建不同应用环境。若有出入之处,还请各位大佬指出,笔者感激不尽。