Docker的安装与部署Java开发环境(一)

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 虚拟化:虚拟化就是将各种实体资源虚拟。镜像:一个只读的静态模板。容器:一个运行时环境,是镜像的运行状态。库:使用注册服务器存储和共享用户的镜像。容器技术可以让多个独立的用户空间运行在同一台宿主机上。

1、Docker的相关概念

虚拟化:虚拟化就是将各种实体资源虚拟。

镜像:一个只读的静态模板。

容器:一个运行时环境,是镜像的运行状态。

库:使用注册服务器存储和共享用户的镜像。

容器技术可以让多个独立的用户空间运行在同一台宿主机上。

2、Docker安装与启动

Docker官方建议在Ubuntu中安装,因为Docker是基于Ubuntu发布的,而且一般Docker出现的问题Ubuntu是最先更新或者打补丁的。在很多版本的CentOS中是不支持更新最新的一些补丁包的。

由于我们学习的环境都使用的是CentOS,因此这里我们将Docker安装到CentOS上。注意:这里建议安装在CentOS7.x以上的版本,在CentOS6.x的版本中,安装前需要安装其他很多的环境而且Docker很多补丁不支持更新。

2.1、在VMware Workstation中安装CentOS7

CentOS7的下载安装教程如下:

https://blog.csdn.net/yang_guang3/article/details/100667353

2.2、安装Docker

使用yum指令在线安装:

yum install docker

Are you OK???当然是y

安装完成后查看版本号验证是否安装成功:

docker -v

2.3、启动和停止docker

由于古老的指令service docker start在init进程中是串行启动,只有前一个进程启动完,才会启动下一个进程,大大的降低了效率,所以使用到了systemctl命令,systemctl是 Systemd 的主命令,用于管理系统。

根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

查看docker:systemctl status docker

启动docker:systemctl start docker

停止docker:systemctl stop docker

重启docker:systemctl restart docker

开机启动:systemctl enable docker

查看docker概要信息:docker info

查看docker帮助文档:docker --help

输入查看docker命令后如果显示绿点,代表启动成功:

3、docker镜像的安装与删除

3.1、查看镜像:docker images

repository:镜像所在的仓库名称;

tag:镜像的版本号,同一个镜像可以安装不同版本号的镜像;

image id:镜像id,删除镜像时候会用到;

created:镜像创建时间;

size:镜像大小;

这些镜像都是存储在宿主机的/var/lib/docker目录下。

我们在运行同一个仓库中的不同镜像时,可以通过在仓库名后面加上一个冒号和标签名来指定该仓库中的某一具体的镜像,例如docker run --name custom_container_name –i –t docker.io/ubunto:12.04 /bin/bash,表明从镜像Ubuntu:12.04启动一个容器,而这个镜像的操作系统就是Ubuntu:12.04。在构建容器时指定仓库的标签也是一个好习惯。

3.2、搜索镜像:docker search tomcat

name:仓库名称;

description:镜像描述;

stars:用户评价,反映了一种受欢迎程度;

official:是否官方;

automate:自动构建,表示该镜像由Docker Hub自动构建流程创建的;

3.3、拉取镜像:docker pull centos:7

由于从Docker Hub拉取,属于国外下载,需要配置镜像加速器,本次使用中科大的ustc镜像加速器。

编辑该文件:vi /etc/docker/daemon.json

在改文件下输入以下内容:

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

然后保存:esc-->:wq

删除镜像:

3.4、删除镜像

删除指定镜像:docker rmi IMAGE_ID

删除所有镜像:docker rmi 'docker images -q'

4.2、创建与启动容器

4.2.1、交互式容器

查看正在运行的容器:docker ps

查看所有的容器:docker ps -a

查看最后一次运行的容器:docker ps -l

查看停止的容器:docker ps -f status=exited

4.2、创建与启动容器

4.2.1、交互式容器

创建一个容器:docker run -it --name=mycentos centos:7 /bin/bash

参数解释:

docker run:创建容器指令;

-i:表示运行容器;

-t:加入这两个参数后容器创建后就能登录进去;

–name:容器名;

/bin/bash:创建完成后进入容器;

其他参数:

-v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上;

-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行;

-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射;

这时我们通过ps命令查看,发现可以看到启动的容器,up为启动状态。

使用exit命令 退出当前容器:


4.2.2、守护式容器

如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):

docker run -di --name=mycentos2 centos:7

进入容器(exit退出时,容器不会停止):docker exec -it mycentos2 /bin/bash

4.2.3、容器的启动与停止

启动容器:docker start CONTAINER_NAME(容器的名称)

停止容器:docker stop CONTAINER_NAME(容器的名称)

4.2.4、查看容器的IP地址

查看容器各种信息:docker inspect mycentos

查看容器IP地址:docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos

未启动时显示空白;

4.2.5、删除容器

删除指定容器:docker rm $CONTAINER_ID/NAME

删除所有容器:docker rm $(docker ps -a | awk '{ print $1}' | tail -n +2)

4.2.6、文件的拷贝

首先进入docker的image目录:cd /var/lib/docker/image

创建文件夹:mkdir file1

将系统中的文件拷贝到docker容器中:docker cp file1 mycentos:usr/local

然后进入该容器:docker exec -it mycentos /bin/bash

进入指定的文件夹:cd usr/local

将docker容器中的文件拷贝到系统中:docker cp mycentos:usr/local/games /var/lib/docker/image


此处需要注意:docker命令不能在容器中执行,需要先exit后再执行命令。

4.2.7、目录挂载

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。系统和容器中的文件夹资源共享

创建容器 添加-v参数,后边为宿主机目录:容器目录

首先创建共享文件夹:mkdir /var/lib/docker/image/myhtml

然后创建新的docker容器:docker run -di --name=mycentos3 -v /var/lib/docker/image/myhtml:/usr/local/mh --privileged=true centos:7

–privileged=true:如果你共享的是多级的目录,可能会出现权限不足的提示,此命令就是为了解决该问题,释放CentOS7中的安全模块selinux的权限。

该指令执行成功后,然后在myhtml文件夹下创建文件:echo aaa>file.txt

创建成功后进入该容器,可以看到刚才创建的文件如图所示:


5、创建Mysql容器并使用navicat连接

5.1、创建mysql容器

docker中不存在mysql镜像时可以先拉取该镜像:docker pull mysql

拉取成功后查看镜像:docker images

然后创建mysql容器:docker run -di --name cht_mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql

注意Linux中是区分大小写的,所以后面命令一定要大写;

-p 代表端口映射,格式为 宿主机映射端口:容器运行端口

-e 代表添加环境变量 MYSQL_ROOT_PASSWORD是root用户的登陆密码

5.2、进入MySQL容器,登陆MySQL

进入mysql容器:docker exec -it cht_mysql /bin/bash

登录mysql:mysql -u root -p

然后输入密码root,显示登录成功;

5.3、进行配置,使外部工具可以连接

由于mysql中root执行绑定在了localhost,因此需要对root进行授权,代码如下:

授权mysql>: ALTER user 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限mysql>:FLUSH PRIVILEGES;

然后使用navicat进行测试(注意:此处连接的是虚拟机的IP地址):


6、Redis部署

docker中不存在Redis镜像时可以先拉取该镜像:docker pull redis

拉取成功后查看镜像:docker images

然后创建Redis容器:docker run -di --name=cht_redis -p 6379:6379 redis

客户端测试:

在自己的本地电脑命令提示符下,用window版本redis测试:

redis-cli -h 192.168.25.130

然后显示如下图:


7、Nginx部署

docker中不存在Nginx镜像时可以先拉取该镜像:docker pull nginx

拉取成功后查看镜像:docker images

然后创建Nginx容器:docker run -di --name=cht_nginx -p 80:80 nginx

测试Nginx:

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
6天前
|
Oracle Java 关系型数据库
搭建Java开发环境:
搭建Java开发环境:
17 0
|
15天前
|
监控 文件存储 Docker
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
与电脑不同,NAS通常7x24小时运行,便于下载资源,解决BT/PT下载需长时间在线的问题。因此,qBittorrent、Transmission等下载管理工具成为NAS用户的必备应用。通过Docker,用户可在多种NAS设备上快速安装这些工具,并通过局域网IP地址+端口访问。然而,缺乏公网IPv4地址导致远程访问困难,贝锐花生壳提供了解决方案,允许无公网IP情况下通过固定域名远程访问NAS中的下载工具,简化了部署过程,使用户能随时随地控制家中的下载任务。
131 33
实现NAS远程下载,Docker部署qBittorrent、Transmission、贝锐花生壳
|
8天前
|
XML 存储 JSON
Java程序部署
Java程序部署
|
8天前
|
应用服务中间件 Docker 容器
docker应用部署---Tomcat的部署配置
这篇文章介绍了如何使用Docker部署Tomcat服务器,包括搜索和拉取Tomcat镜像、创建容器并设置端口映射和目录映射,以及如何创建一个HTML页面并使用外部机器访问Tomcat服务器。
docker应用部署---Tomcat的部署配置
|
8天前
|
关系型数据库 MySQL 数据安全/隐私保护
docker应用部署---MySQL的部署配置
这篇文章介绍了如何使用Docker部署MySQL数据库,包括搜索和拉取MySQL镜像、创建容器并设置端口映射和目录映射、进入容器操作MySQL,以及如何使用外部机器连接容器中的MySQL。
docker应用部署---MySQL的部署配置
|
9天前
|
前端开发 应用服务中间件 nginx
docker部署本地前端项目思路
docker部署本地前端项目思路
23 7
|
8天前
|
应用服务中间件 nginx Docker
docker应用部署---nginx部署的配置
这篇文章介绍了如何使用Docker部署Nginx服务器,包括搜索和拉取Nginx镜像、创建容器并设置端口映射和目录映射,以及如何创建一个测试页面并使用外部机器访问Nginx服务器。
|
8天前
|
Java Linux Windows
如何安装java环境|4-17
如何安装java环境|4-17
|
15天前
|
存储 Kubernetes Cloud Native
部署Kubernetes客户端和Docker私有仓库的步骤
这个指南涵盖了部署Kubernetes客户端和配置Docker私有仓库的基本步骤,是基于最新的实践和工具。根据具体的需求和环境,还可能需要额外的配置和调整。
29 1
|
弹性计算 关系型数据库 MySQL
搭建Java Web开发环境实战纪实
搭建Java Web开发环境实战纪实
190 0
搭建Java Web开发环境实战纪实
下一篇
无影云桌面