申请阿里云服务器,按量付费,要带公网IP
1.专有网络VPC
每一台云服务器都有自己的公网ip和内网ip,集群直接访问使用内网
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台通过这个创建
2.Docker
1.容器和虚拟机的区别
虚拟机太重,启动慢,开销大,拥有完整的操作系统,隔离性更强,扩展性差。
容器是请量级,启动快,开销小,共享操作系统,管理方便,扩展性强
2.Docker如何解决不同系统环境的问题?
将应用的Libs(函数库)、Deps(依赖)、配置与应用一起打包,借助于操作系统的Linux内核来运行
3.命令
1.安装yum
yum install -y yum-utils
2.设置docker数据源
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3.安装docker免费版以及操作docker服务器命令行程序
yum install -y docker-ce docker-ce-cli containerd.i
4.设置开机启动,并关闭防火墙
systemctl enable docker
# 关闭
systemctl stop firewalld
# 禁止开机启动防火墙
systemctl disable firewalld
systemctl status firewalld
5.docker相关命令
镜像级别
docker save -o nginx.tar nginx:latest
docker load -i nginx.tar
1.启动,停止,重启
systemctl start docker # 启动docker服务
systemctl stop docker # 停止docker服务
systemctl restart docker # 重启docker服务
2.列出所有容器
docker ps
docker ps -a
:列出所有容器,包括已停止的容器。docker ps -q
:只列出容器 ID。docker ps --filter "status=exited"
:列出已退出的容器CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d1e1f4e8c6f6 nginx "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp webserver e92d9a645a97 mysql:5.7 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 3306/tcp mysql-db
- CONTAINER ID:容器的唯一标识符。
- IMAGE:用于创建容器的 Docker 镜像。
- COMMAND:容器启动时运行的命令。
- CREATED:容器创建的时间。
- STATUS:容器的当前状态(例如,Up X minutes)。
- PORTS:主机和容器之间的端口映射。
- NAMES:分配给容器的名称。
3.镜像容器之间的关系
镜像下载是docker pull
镜像:镜像是一个只读的模板,包含了创建容器所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
容器:容器是镜像的一个运行实例。它是一个可执行的单元,包含了应用程序及其所有依赖项,运行在一个隔离的环境中。
4.创建并运行一个容器
创建并运行nginx容器的命令:
docker run --name containerName --restart=always -p 80:80 -d nginx
docker logs mn
命令解读:
-
docker run :创建并运行一个容器
-
--name : 给容器起一个名字,比如叫做mn
-
-p :将宿主机端口与容器端口映射,冒号左侧是宿主机端口,右侧是容器端口
-
-d:后台运行容器
-
nginx:镜像名称,例如nginx
5.进入容器,修改文件
1)进入容器。进入我们刚刚创建的nginx容器的命令为:
docker exec -it mn bash
命令解读:
-
docker exec :进入容器内部,执行一个命令
-
-it : 给当前进入的容器创建一个标准输入、输出终端,允许我们与容器交互
-
mn :要进入的容器的名称
-
bash:进入容器后执行的命令,bash是一个linux终端交互命令
4.数据卷
1.什么是数据卷
数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。
一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。
这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了
2.命令
数据卷操作的基本语法如下:
docker volume [COMMAND]
docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:
-
create 创建一个volume
-
inspect 显示一个或多个volume的信息
-
ls 列出所有的volume
-
prune 删除未使用的volume
-
rm 删除一个或多个指定的volume
3.挂载数据卷
① 创建数据卷
docker volume create html
② 查看所有数据
docker volume ls
③ 创建容器并挂载数据卷到容器内的HTML目录
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
④进入html数据卷所在位置,并修改HTML内容
# 查看html数据卷的位置 docker volume inspect html # 进入该目录 cd /var/lib/docker/volumes/html/_data # 修改文件 vi index.html
4.直接挂载本地目录
docker run \
--name mysql \--restart=always\
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d \
mysql:5.7.25
5.镜像结构
6.DockerFile
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
docker build -t javaweb:1.0 .