安装docker和使用学习,简单配置redis,nginx,mysql,tomcat.

linux部署开发环境

一、安装jdk,配置1.8java环境

1、自动安装

	1.直接yum直接拉取 yum install -y java-1.8.0-openjdk-devel.x86_64
    2.看版本 java -version

2、手动安装

	1.这里使用的是 jdk1.8.0_161,将该压缩包放在/usr/local/java目录下(java需要自己创建),
	然后解压:
	tar zxvf jdk1.8.0_161.tar.gz 

在这里插入图片描述

	2.配置环境变量
	vi /etc/profile
	文件尾部添加
	JAVA_HOME=/usr/local/java/jdk1.8.0_161
	PATH=$JAVA_HOME/bin:$PATH
	CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
	export JAVA_HOME
	export PATH
	export CLASSPATH
	按esc加:wq保存退出 
	3.刷新环境
	source /etc/profile
	4.测试是否成功
	java -version

在这里插入图片描述

二、安装docker容器环境

# 环境查看,查看系统内核是哪个版本
uname -r
# 系统版本
cat /etc/os-release

1.可直接使用centos 7自带的yum源
2.配置国内yum源
不建议使用CentOS 7自带的yum源,因为安装软件和依赖时会非常慢甚至超时失败。使用阿里云的源予以替换,执行如下命令:

mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

yum makecache

yum -y update

安装docker,把18.09前版本的删掉。

# 卸载老版本的 docker 及其相关依赖
yum remove -y docker docker-common container-selinux docker-selinux docker-engine
# 官网卸载老版本命令
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源

yum install -y yum-utils

a. 设置镜像仓库
# 默认是国外的
yum-config-manager --add-repo https://download.docker.com/linux/docker-ce.repo
# 使用国内阿里云的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

yum makecache fast

b. 安装合适的docker版本
由于k8s支持的docker版本存在一定的滞后,要选择好合适的docker版本
此次,选择安装的docker版本为18.09
选择查看docker-ce各版本 ce社区版 ee企业版
yum list docker-ce --showduplicates | sort -r

# 可安装最新的版本
yum install docker-ce-cli containerd.io

# 也可安装指定版本的docker-ce
yum -y install docker-ce-18.09.9

启动docker服务并激活开机启动

systemctl start docker & systemctl enable docker

查看docker版本

docker version

运行第一个docker容器

docker run hello-world
先是没有找到镜像
远程拉取官方library/hello-world
签名信息代表拉取成功,并运行ok了
hello from docker就证明你安装docker成功了
docker images查看镜像

# 设置阿里云镜像加速:
1.登录阿里云找到容器镜像服务
2.找到镜像加速器地址(每个人都有一个加速器地址)下面的地址是我自己的
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://26g2lirm.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

# 安装docker-compose
Docker-compose是docker的服务编排工具,主要是用来构建多个服务,一般是构建构建多个有关联的服务,比如要部署一个Spingboot项目,那么一般都需要关系型数据库,有可能还需要NOSQL,比如redis;如果利用dockerfile来构建,就需要编写三个dockerfile,构建镜像,运行容器;但是使用docker-compose,就可以将这三个服务都包含在一个docker-compose.yml文件中,最后使用命令:docker-compose up 命令 就可以构建一整套完整的服务体系。
yum install python3-pip
pip3 install --upgrade pip
pip3 install docker-compose

安装过程报错:
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-jmx38jpw/cryptography/
解决办法:
先运行pip3 install --upgrade pip
再pip3 install docker-compose

# 如果要卸载docker
1.卸载依赖
# 如果安装的是最新的版本
yum remove docker-ce docker-ce-cli containerd.io
# 安装的是指定版本
yum remove docker-ce-18.09.9
2.删除资源
rm -rf /var/lib/docker

在这里插入图片描述

Docker是怎么工作的?
Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上。通过Sockert从客户端访问
DockerServer接收到Docker-Client的指令,就会执行这个指令

在这里插入图片描述

Docker为什么比VM快?
1.Docker有着比虚拟机更少的抽象层
2.Docker利用的是宿主机的内核,vm需要的是Guest OS
新建一个容器的时候,docker不需要像虚拟机一样重新加载一个操作系统内核,避免引导,虚拟机是加载Guest OS,分钟级别的。docker是利用的是宿主机的内核,是秒级的。

在这里插入图片描述

# Docker帮助命令
docker version			# 显示版本信息
docker info				# 显示系统信息,包括镜像和容器的数量			
docker 命令 --help	   # 帮助命令
文档地址:https://docs.docker.com/engine/reference/commandline/

# Docker镜像命令
docker images			# 查看所有本地的主机上的镜像-a列出所有镜像 -q显示所有id
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
镜像的仓库源   镜像的标签  镜像的id		 镜像的创建时间  镜像的大小

docker search ***		# 搜索镜像--filter=STARS=3000过滤STARS3000以上的
docker pull ***			# 下载镜像,不写:tag默认就是latest
docker rmi -f 容器id		# 删除单个镜像
docker rmi -f $(docker images -aq)		# 循环删除所有镜像

# Docker容器命令
有了镜像才可以创建容器!
docker run [可选参数] image
--name="Name"容器名字
-d			后台方式运行
-it			使用交互方式运行,进入容器查看内容
-p			指定容器的端口
	-p	ip:主机端口:容器端口
	-p	主机端口:容器端口(常用)
	-p	容器端口
	容器端口
-P			随机指定端口

docker ps	列出当前正在运行的容器
-a			列出当前正在运行的容器+历史运行的容器
-n=?		显示最近创建的容器
-q			只显示容器的编号
		
docker rm 容器id				   删除指定容器,若运行中的容器加-f可以删除
docker rm -f $(docker ps -aq)	删除所有容器
docker ps -a -q|xargs docker rm 删除所有容器

docker start 容器id			运行容器
docker restart 容器id			重启容器
docker stop 容器id			停止容器
docker kill 容器id			强制停止当前容器

# 常用其他命令
后台启动容器
docker run -d 容器
常见的坑:docker容器使用后台运行,就必须要有一个前台进程,docker发现没有应用,就会自动停止

查看日志
docker logs -tf --tail 10 容器id
-tf					显示日志
-tail number		要显示的日志条数

查看容器中进程信息
docker top 容器id

查看镜像的元数据
docker inspect 容器id

进入当前正在运行的容器
1.docker exec -it 容器id /bin/bash		进入容器后开启一个新的终端,可以在里面操作
2.docker attach 容器id					进入容器正在执行的终端,不会启动新的进程

从容器内拷贝
dockers cp 容器id:容器内路径 母的的主机路径
1.进入docker容器内部
2.在容器内新建一个文件
3.将文件拷贝出来到主机上
拷贝是一个手动过程,后面可以使用-v卷的技术实现
可视化面板安装Portainer
docker run -d -p 8088:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --privileged=true portainer/portainer
记得在阿里云上开放公网.
进入Portainer后选本地local的
# commit镜像
Docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层就是我们通常说的容器曾,容器之下的都叫镜像层。
docker commit 提交容器成为一个新的副本
docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]

实战测试:
1.启动一个默认的Tomcat
2.发现这个默认的Tomcat是没有webapps应用,镜像的原因,官方的镜像默认没有文件
3.自己拷贝进去基本的文件
4.将我们操作过的容器通过commit提交为一个镜像!以后就使用我们修改过的镜像即可
说明:如果你想要保存当前容器的状态,就可以通过commit来提交,获得一个镜像,就跟快照一样

三、配置nginx容器

1.搜索nginx镜像
docker search nginx
2.拉取nginx镜像
docker pull nginx
3.创建容器,设置端口映射、目录映射
# 在/root目录下创建nginx目录用于存储nginx数据信息
mkdir ~/nginx
cd ~/nginx
mkdir conf
cd conf
# 在~/nginx/conf/下创建nginx.conf文件,粘贴下面内容
vim nginx.conf(可直接用默认配置)
4.启动容器
docker run --name=c_nginx -p 80:80 -v $PWD/logs:/var/log/nginx(自己创建的位置)       -d nginx:latest

-p 80:80 : 将容器的80端口映射到主机的80端口
-v $PWD/logs:/var/log/nginx:将主机当前目录下的 logs 目录挂载到容器的/var/log/nginx。日志目录

# 进入容器就可以看见conf目录
docker exec -it c_nginx /bin/bash;
whereis nginx;
cd /etc/nginx;
vi nginx.conf;

四、配置redis容器

1.搜索redis镜像
docker search redis
2.拉取redis镜像
docker pull redis
3.启动镜像,数据持久化存方式启动
docker run -p 6379:6379 -v $PWD/data:/data(自己设置的位置) --name redis -d redis redis-server --appendonly yes

命令说明:
-p 6379:6379 : 将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data : 将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes : 在容器执行redis-server启动命令,并打开redis持久化配置

docker inspect 容器id 
找到mounts挂载双向绑定
source是主机挂载地址
destination是容器地址

在这里插入图片描述

五、配置mysql容器

1.搜索mysql镜像
docker search mysql
2.拉取mysql镜像
docker pull mysql
3.启动镜像,数据持久化存方式启动
docker run -p 3306:3306 --name c_mysql -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest

可以多重挂载挂载conf和data
-v /home/mysql/conf:/etc/mysql/conf.d
v $PWD/data:/var/lib/mysql:将主机当前目录下的data目录挂载到容器的 
/var/lib/mysql (data目录为mysql配置的数据文件存放路径,这个还是建议挂载,是存储数据的,容器down掉,还能再次挂载数据。)
-e MYSQL_ROOT_PASSWORD=123456        初始化 root 用户的密码

六、配置tomcat容器

1.搜索tomcat镜像
docker search tomcat
2.拉取mysql镜像
docker pull tomcat
3.启动运行
docker run -d -p 8080:8080 --name c_tomcat
# 测试访问有没有问题
docker exec -it c_tomcat /bin/bash
# 发现webapps无内容,需要将webapps.dist内容赋值到webapps内容中去
cp -r webapps.dist/* webapps
webapps部署项目用的。

# 进入容器太麻烦了,可以在容器外部提供一个映射路径,我们在外部部署项目,自动同步到内部。

七、配置es+kibana

# 占内存,es里面数据需要挂载
# 需要加一个 --net somenetwork 网络配置
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.6.2
自动下载,会很卡,耗内存.

docker stats查看容器占用资源的情况cpu

# 测试es是否成功
curl localhost:9200

# 增加内存的限制,修改配置文件,-e 环境配置修改
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 
-e "discovery.type=single-node" 
-e ES_JAVA_OPTS="-Xms64m -Xmx512m(根据服务器内存大小更改)" elasticsearch:7.6.2

# 使用kibana连接es,网络如何连接过去

八、容器数据卷

容器的持久化和同步操作,容器间可以共享数据!
命令挂载 -v 主机目录,容器内目录
以后修改只需要在本地修改即可(如数据库数据,redis数据可以直接本地添加即可),容器内即可同步

# 具名和匿名挂载
匿名挂载
docker run -d -p --name nginx01 -v /etc/nginx nginx
在-v只写了容器内的路径未写容器外的路径
具名挂载
docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx nginx

所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data
拓展
ro 只读设置了容器权限,只能通过宿主机来操作
rw 默认rw
docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -p --name nginx01 -v juming-nginx:/etc/nginx:rw nginx

初识Dockerfile
Dockerfile就是用来构建docker镜像的构建文件!命令脚本
# 创建一个dockerfile文件,名字随机
# 指令大写
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash

数据卷容器
为了给别的容器共享数据

结论
容器之间配置信息的传递,数据卷容器的声明周期一直持续到没有容器使用为止
持久化到本地,本地的数据是不会删除的
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值