目录
一,
安装系统首先要有镜像(.iso格式的文件),把系统安装到物理硬件上面,安装完成后运行镜像(系统),运行后就相当于一个容器,在容器中安装应用
1. 什么是docker?
-
1.Docker是使用最广泛的
开源容器引擎
-
容器:
-
1)容器是一个操作系统级别下的虚拟化技术,运行一个容器就行运行一个进程一样
-
2)容器依赖linux内核特性:Namespace(资源隔离)和Cgroups(资源限制)
-
-
-
2.一种操作系统基本的
虚拟化技术
-
我们使用的VMware虚拟机就是虚拟化技术
-
一个操作系统下,虚拟出来,其他操作系统的机器
-
-
3.一种简单的应用
程序打包工具
-
4.依赖Linux内核特性:
Namespace(资源隔离)
和Cgroup(资源限制)
2.ubuntu安装docker
2.1 安装docker
# 1.卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2.更新ubuntu的apt源索引
# 修改apt国内源为中科大源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/' /etc/apt/sources.list
sudo apt update
#3.安装包允许apt通过HTTPS使用仓库
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
#4.添加Docker官方GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
#5.设置Docker稳定版仓库(国内使用都用用国内的源)
#5.1 设置使用阿里云
add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
#5.2 设置使用官方,很慢(不建议用这个)
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
#6.添加仓库后,更新apt源索引
sudo apt-get update
#7.安装最新版Docker CE(社区版)
sudo apt-get install docker-ce
#8.检查Docker CE是否安装正确
sudo docker run hello-world
2.2 docker默认是国外源可以设置成国内镜像源
2.3 docker启动设置
# 启动Docker服务并设置开机启动
systemctl start docker
systemctl enable docker
2.4 docker简单使用(创建一个ngixn容器)
# 1、创建一个nginx容器
docker run -it nginx
# 2、查看docker运行的容器(可以获取到这个容器的id)
docker ps
# 3、访问这个容器
# 进入这个nginx容器(进入的文件系统和宿主机是完全隔离的,有自己独立的文件系统)
docker exec -it 73877e65c07d bash
# 4、查看当前容器的 IP
docker inspect 73877e65c07d # 73877e65c07d是通过docekr ps查看到的容器ID
curl 172.17.0.2 # 测试这个nginx容器是否可以访问
3.docker运行
3. 1.docker使用相关命令
docker pull 镜像名=版本号 #拉取镜像
docker run -itd 镜像 # 运行镜像
--- i 交互模式
--- t 终端
--- d 守护进程,后台运行
docker ps # 查看当前运行的镜像
docker image ls # 查看所有的镜像
dokcer rm -f 镜像名 # 删除镜像
3. 2.---- 容器的操作----
docker run -itd 镜像 # 运行镜像得到一个容器
docker ps # 查看容器的运行,看到容器的id
docker exec 容器的id bash # 进入到运行的容器中
exit 退出容器
4.docker容器
4.1在docker容器中mysql
# 使用docker安装的mysql
>>> docker image ls # 查看已经安装的所有的镜像
>>> docker pull mysql # 拉取mysql镜像
>>> docker image rm -f 镜像id # 删除指定的镜像
# 运行mysql, --name 是容器的名字 -p是本地端口和服务器端口的映射 -e MYSQL_ROOT_PASSWORD=密码
>>> docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=admin123 mysql
>>> docker exec -it 537d06de527d bash #进入到mysql容器里面
>>> mysql -u root -p #进入容器中,创建数据库
。。。。
>>> exit # 退出mysql 和容器
1.修改项目中mysql相关的配置
2.迁移数据库
4.2在docker容器中搭建redis
>>> docker pull redis
>>> docker run --restart=always -p 6379:6379 -d redis redis-server /etc/redis/redis.conf --appendonly yes
>>> 修改项目中redis连接的端口
4.3搭建es
>>> sudo docker image pull delron/elasticsearch-ik:2.4.6-1.0
>>> docker run -d -p 9200:9200 -p 9300:9300 --name elasticsearch delron/elasticsearch-ik:2.4.6-1.0
1. 修改项目中es 相关的配置
2. 把mysql 中的数据导入到es中
5.nginx安装和配置
5.1安装nginx
>>> docker pull nginx:1.14
>>> docker run -itd nginx
5.2 nginx配置
-
把前端代码打包: npm run build
-
把打包后的代码传到nginx, 静态文件服务器
-
进行nginx的反向代理配置
6.注意:
项目部署的时候需要运维来手动配制服务之间通信的协议和地址,稍有不慎就会导致服务异常,同时如果服务器因为坏道或者其他原因导致更换物理机,重新部署新环境的成本也会非常之高。因此,我们就会寄希望于Docker这种的容器技术可以让我们构建产品所需要的所有的服务能够迅速快捷的重新部署,并且可以根据需求做横向扩展,且能够保证稳定的容灾性,在出现问题的时候可以利用守护进程自动重启或者启动容灾备份。