文章目录
云平台
公有云
- 成本更低:无需购买硬件或软件,仅对使用的服务付费。
- 无需维护:维护由服务提供商提供。
- 近乎无限制的缩放性:提供按需资源,可满足业务需求。
- 高可靠性:具备众多服务器,确保免受故障影响。
- 可用性: N个9 全年的故障时间: 365243600*(1-99.9999%)
私有云
- 灵活性更强:组织可自定义云环境以满足特定业务需求。
- 控制力更强:资源不与其他组织共享,因此能获得更高的控制力以及更高的隐私级别。
- 可伸缩性更强:与本地基础结构相比,私有云通常具有更强的可伸缩性。
vpc
作用是划分网段
192.168.0.0/16
11000000.10101000.00000000.00000000/16 表示可用网段范围:192.168.0.0-192.168.255.255 其中0.0与255.255不可用
docker
移除之前的docker相关包
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
配置yum源
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# docker-ce->社区版
#以下是在安装k8s的时候使用
yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6
启动
systemctl start docker
systemctl enable docker --now 开机自启动,并且当下立刻启动
配置加速
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://{自己的加速器地址}.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
测试
docker version
常用命令
-
镜像相关
-
docker pull
# docker pull 镜像名:版本名(标签) docker pull nginx #下载最新版 docker pull nginx:1.20.1
-
docker images
# 下载来的镜像都在本地 docker images #查看所有镜像
-
docker rmi
# 删除镜像 docker rmi 镜像名:版本号/镜像id
-
-
启动容器相关
-
docker run
# 启动nginx应用容器 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] docker run 设置项 镜像名 镜像启动运行的命令(镜像里面默认有的,一般不会写) docker run --name=mynginx -d --restart=always -p 88:80 nginx """ -d:后台运行 --restart=always: 开机自启 -p 88:80: 映射88端口,测试的访问 --name=mynginx: 给容器起个名字 """
-
docker ps
# 查看正在运行的容器 docker ps # 查看所有 docker ps -a
-
docker rm
# 删除停止的容器 docker rm 容器id/名字 # 强制删除正在运行中的 docker rm -f mynginx
-
docker stop/start/restart 容器id/名字
# 停止容器 docker stop 容器id/名字 # 再次启动 docker start 容器id/名字 # 重启启动 docker restart 容器id/名字 # 应用开机自启 docker update 容器id/名字 --restart=always
-
-
修改容器内容
-
进容器内部修改
# 进入容器内部的系统,修改容器内容 docker exec -it 容器id /bin/bash
-
挂载数据卷
docker run --name=mynginx \ -d --restart=always \ -p 88:80 -v /data/html:/usr/share/nginx/html:ro \ nginx # 修改页面只需要去 主机的 /data/html # ro: 只读模式
-
-
打包分享
-
旧容器commit生成新容器
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] docker commit -a "alan" -m "首页变化" 341d81f7504f linginx:v1.0
-
容器传输|容器tag新镜像
-
方式一:docker save 打包
# 将镜像保存成压缩包 docker save -o abc.tar linginx:v1.0 # 别的机器加载这个镜像 docker load -i abc.tar # 离线安装
-
方式二:docker hub 推送
# 本地容器打包生成镜像 docker tag local-image:tagname new-repo:tagname # 登录到docker hub docker login # 推送 docker push new-repo:tagname # 推送完成镜像后退出 docker logout # 别的机器下载 docker pull new-repo:tagname
-
-
其他-logs、cp
-
日志
docker logs 容器名/id 排错
-
容器内外数据传输
# 把容器指定位置的东西复制出来 docker cp mynginx:/etc/nginx/nginx.conf /data/conf/nginx.conf # 把外面的内容复制到容器里面 docker cp /data/conf/nginx.conf mynginx:/etc/nginx/nginx.conf
-
Dockerfile构建镜像
未使用Docker
- SpringBoot打包成可执行jar
- 把jar包上传给服务
- 服务器运行java -jar
使用Docker
-
编辑Dockerfile
FROM openjdk:8-jdk-slim LABEL maintainer=alan # 作者 COPY target/*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"] # 启动命令,或者CMD ["java","-jar","/app.jar"],或者RUN java -jar /app.jar
-
构建容器
docker build -t java-demo:v1.0 .
-
启动容器
docker run -d -p 8080:8080 --name myjava-app java-demo:v1.0
中间件redis
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
# redis使用自定义配置文件启动
docker run -v /data/redis/redis.conf:/etc/redis/redis.conf \
-v /data/redis/data:/data \
-d --name myredis \
-p 6379:6379 \
redis:latest redis-server /etc/redis/redis.conf
compose容器编排
学习链接:https://docs.docker.com/compose/compose-file/compose-file-v3/
安装
curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version
卸载
sudo rm /usr/local/bin/docker-compose
常见命令
命令 | 说明 |
---|---|
docker-compose -h |
查看帮助 |
docker-compose up |
启动所有docker-compose服务 |
docker-compose up -d |
启动所有docker-compose服务并后台运行 |
docker-compose down |
停止并删除容器、网络、卷、镜像 |
docker-compose exec yml里面的服务id |
进入容器实例内部 docker-compose exec docker-compose.yml文件中写的服务id /bin/bash |
docker-compose ps |
展示当前docker-compose编排过的运行的所有容器 |
docker-compose top |
展示当前docker-compose编排过的容器进程 |
docker-compose logs yml里面的服务id |
查看容器输出日志 |
docker-compose config |
检查配置 |
docker-compose config -q |
检查配置,有问题才有输出 |
docker-compose restart |
重启服务 |
docker-compose start |
启动服务 |
docker-compose stop |
停止服务 |
示例
- docker-compose.yml文件编辑
version: '3'
services:
redis:
image: daocloud.io/redis:3
container_name: featech_redis
command: redis-server
volumes:
- ./deployment/redis/data:/data # 挂载数据库数据文件夹
ports:
- "6373:6379"
restart: always # always表容器运行发生错误时一直重启
db:
image: mysql:5.7
container_name: featech_db
ports:
- "3303:3306"
volumes:
- ./deployment/mysql/data:/var/lib/mysql # 挂载数据库数据
# - ./deployment/mysql/conf/my.cnf:/etc/mysql/my.cnf # 挂载配置文件
- ./deployment/mysql/init:/docker-entrypoint-initdb.d/ # 挂载数据初始化sql脚本
environment:
MYSQL_ROOT_PASSWORD: 12345678 # 数据库密码
MYSQL_DATABASE: fetach_v2_0 # 数据库名称
LNAG: C.UTF-8
command: ['mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']
web:
build: .
container_name: featech_v2_0
# tty: true 如果web容器出错想进入容器做修改时,此配置可分配一个伪终端让容器先运行起来
# 容器启动后启动通过uwsgi启动django应用并启动celery,这里我简单实用了nohup启动celery,可选择使用supervisor管理
command: uwsgi --ini uwsgi && nohup celery -A celery_tasks.sms.tasks worker -l info >> celery_log/celery.log 2>&1 &
depends_on:
- db
- redis
- mongo
links:
- db
- redis
- mongo
volumes:
- ./featech_v2_0:/featech_v2_0 # 挂载项目目录
restart: always
ports:
- "8888:8888"
nginx:
build: deployment/nginx
container_name: featech_nginx
ports:
- "80:80"
- "443:443"
expose:
- "8888"
volumes:
- ./featech_v2_0/static:/usr/share/nginx/html/static # 挂载静态文件
- ./featech_v2_0/frontEnd:/usr/share/nginx/html/frontEnd # 挂载静态文件
- ./featech_v2_0/media:/usr/share/nginx/html/upload # 挂载上传文件
- ./deployment/nginx/ssl:/usr/share/nginx/ssl # 挂载ssl证书目录
- ./deployment/nginx/conf/conf.d:/etc/nginx/conf.d # 挂载配置文件
links:
- web
depends_on:
- web
restart: always
mongo:
image: mongo:4.0
container_name: featech_mongo
hostname: mongo
restart: always
ports:
- "27013:27017"
environment:
TZ: Asia/Shanghai
#MONGO_INITDB_DATABASE: test
#MONGO_INITDB_ROOT_USERNAME: root
#MONGO_INITDB_ROOT_PASSWORD: 123456
volumes:
- /etc/localtime:/etc/localtime
- ./deployment/mongo/data:/data/db
- ./deployment/mongo/init:/docker-entrypoint-initdb.d/
command: mongod
# 构建镜像
使用命令docker build -t chenhao_flask:test .
# 启动镜像
使用命令docker compose up -d
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/143920.html