欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

教程:如何在Docker上安装和配置Java开发环境 (第一部分)

最编程 2024-01-02 08:10:00
...

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.****.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: