1. 基本概念 1.1 linux 安装 docker
自动安装 docker
1 curl -fsSL https ://get .docker.com | bash -s docker
2. dockerfile 2.1 单文件构建 在多阶构建出来之前使用单个文件进行构建,单文件就是将所有的构建过程(包括项目的依赖、编译、测试、打包过程)全部包含在一个 Dockerfile 中之下
2.2 多文件构建
Dockerfile.run 就是运行时程序所必须需要的一些组件的 Dockerfile,它包含了最精简的库;
Dockerfile.build 只是用来构建,构建完就没用了;
build.sh 的功能就是将 Dockerfile.run 和 Dockerfile.build 进行组成,把 Dockerfile.build 构建好的东西拿出来,然后再执行 Dockerfile.run,算是一个调度的角色。
2.3 多阶构建 完成多阶段构建我们只需要在 Dockerfile 中多次使用 FORM 声明,每次 FROM 指令可以使用不同的基础镜像,并且每次 FROM 指令都会开始新的构建,我们可以选择将一个阶段的构建结果复制到另一个阶段,在最终的镜像中只会留下最后一次构建的结果,这样就可以很容易地解决前面提到的问题,并且只需要编写一个 Dockerfile 文件。
// 守护进程,容器内进程关闭则容器销毁。
CMD nginx -g ‘daemon off;’
2.4 dockerfile 编写 Dockerfile 中 ADD 和 COPY 打包 + nginx 部署
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 FROM node:10 -alpineENV PROJECT_ENV productionENV NODE_ENV productionWORKDIR /code ADD package.json package-lock.json /code ADD . /code RUN npm install && npm run build && npm install -g http-server EXPOSE 80 CMD http-server ./public -p 80 //ps: 每一个指令的前缀都必须是大写的。
1 2 3 4 5 6 7 8 9 10 docker build -t zyx-nginx . docker build -t zyx-nginx . -f ./devops/dockerfile.nginx docker build [OPTIONS ] PATH | URL | - docker build -t openresty :1.15 .8 .2 -f ./Dockerfile . docker build -t zyx-nginx . -f ./devops/dockerfile
1 docker run --name zyx-nginx-ct -d -p 8080 :80 zyx-nginx
ADD 和 COPY: 将文件或目录复制到 Dockerfile 构建的镜像中
EXPOSE: 指定运行该镜像的容器使用的端口,可以是多个。
RUN : 指令告诉 docker 在镜像内执行命令
FROM :通过 FROM 指定的镜像名称,这个镜像称之为基础镜像,必须位于第一条非注释指令
WORKDIR: 在容器内部设置工作目录
3. docker 常用指令 列出所有容器 ID
查看所有运行或者不运行容器
停止所有的 container(容器),这样才能够删除其中的 images:
1 docker stop $ (docker ps -a -q ) 或者 docker stop $ (docker ps -aq )
如果想要删除所有 container(容器)的话再加一个指令:
1 docker rm $ (docker ps -a -q ) 或者 docker rm $ (docker ps -aq )
查看当前有些什么 images
删除 images(镜像),通过 image 的 id 来指定删除谁,重复时 加上 tag
想要删除 untagged images,也就是那些 id 为的 image 的话可以用
1 docker rmi $(docker images | grep "^<none>" | awk "{print $3}" )
要删除全部 image(镜像)的话
1 docker rmi $(docker images -q)
强制删除全部 image 的话
1 docker rmi -f $ (docker images -q )
从容器到宿主机复制
1 2 docker cp tomcat:/webapps/js/text.js /home/admin docker cp 容器名: 容器路径 宿主机路径
从宿主机到容器复制
1 2 docker cp /home/admin/text.js tomcat:/webapps/js docker cp 宿主路径中文件 容器名 容器路径
删除所有停止的容器
删除所有不使用的镜像
1 2 docker image prune --force --all 或者docker image prune -f -a
停止、启动、杀死、重启一个容器
1 2 3 4 docker stop Name 或者ID docker start Name 或者ID docker kill Name 或者ID docker restart name 或者ID
docker 进入容器,查看配置文件
1 2 3 4 5 docker exec :在运行的容器中执行命令 -d :分离模式: 在后台运行 -i :即使没有附加也保持STDIN(标准输入) 打开,以交互模式运行容器,通常与 -t 同时使用; -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; docker exec -it f94d2c317477 /bin/bash
1 2 3 4 5 6 7 8 9 export 和 import 导出的是一个容器的快照, 不是镜像本身, 也就是说没有 layer。 你的 dockerfile 里的 workdir, entrypoint 之类的所有东西都会丢失,commit 过的话也会丢失。 快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也更大。 docker save 保存的是镜像(image),docker export 保存的是容器(container); docker load 用来载入镜像包,docker import 用来载入容器包,但两者都会恢复为镜像; docker load 不能对载入的镜像重命名,而 docker import 可以为镜像指定新名称。
4. 企业级镜像仓库 Harbor 镜像仓库 搭建
Harbor 基本使用
5. docker 上传镜像 docker commit 容器 id blowsysun/nginx_vue
docker push blowsysun/nginx_vue
docker inspect
mysql 安装 mysql 安装参考文档
最新版本 docker pull mysql
5.7 版本 本文基于 5.7 版本 docker pull mysql:5.7
1 2 3 4 5 6 7 8 9 10 11 12 13 docker run -d \ -p 3306 :3306 \ --name mysql \ -e MYSQL_ROOT_PASSWORD=jueduianquan996 \ mysql:5 .7 docker exec -it mysql bashmysql -uroot -pshow variables like '%datadir%';
拷贝容器配置文件 1 docker cp mysql:/etc/my sql /usr/ local/mysql/ conf
mysql 容器的配置文件存在 /etc/mysql 下
映射 数据 文件吗
1 2 3 4 5 6 7 8 9 10 11 docker stop mysqldocker rm mysqldocker run -d \ -p 3306 :3306 \ --name mysql \ -v /usr/local/mysql/conf/mysql:/etc/mysql \ -v /usr/local/mysql/data:/var/lib/mysql/ \ -e MYSQL_ROOT_PASSWORD=jueduianquan996 \ --restart always \ mysql:5 .7
修改 mysql 密码 1 set password for 用户名@localhost = password (‘新密码’);
问题
navicat 无法远程连接 mysql,
开启 MySQL 远程访问权限 允许远程连接
轻量服务器开通 3306 端口访问
查看 容器映射地址 // 找到运行中的容器 id docker ps docker inspect 容器 Id
找到 HostConfig 字段
轻量服务器安装 unbuntu
安装 git
安装 docker
安装 nvm
1 2 curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bashsource ~/.bashrc
安装 nodejs
安装 pm2
运行 nest
常规指令
1 2 3 4 5 6 pm2 start /workspace/git/pay-back/packages/server/dist/main.js -i 2 --name=payBack --watch pm2 start /workspace/git/pay-back/packages/server/dist/main.js --name=payBack --watch pm2 start /workspace/git/pay-back/packages/push-server/dist/main.js --name=pushServer --watch# 指定环境变量,要更新环境变量或 PM2 选项,请指定--update-envCLI NODE_ENV=prod pm2 start /workspace/git/pay-back/packages/push-server/dist/main.js --name=pushServer --watch --update-env
区分生产的 pm2 指令
1 2 pm2 start /workspace/git/pay-back/packages/server/ecosystem.config.js --env prod --watch pm2 start /workspace/git/pay-back/packages/push-server/ecosystem.config.js --env prod --watch
修改 ubuntu sudo chmod -R 777 +文件名
docker 权限
1 sudo chmod 666 /var/run/docker.sock
ubuntu 启用 root 账户https://blog.csdn.net/thebestleo/article/details/123451471
安装 firefox
1 npx playwright install firefox
vue3 添加 lodash
1 2 3 4 5 6 7 pnpm install lodash-es @type /lodash-es optimizeDeps: { include: ['lodash' ] }
echart 使用技巧
1 2 3 4 5 6 7 8 9 # 设置内容区域位置 grid: { right: 60 , x2: 20 , y2: 30 , x: 50 , y: 80 ,};
序号
类别
成人
儿童
备注
1
证件与票务
身份证、驾照、学生证/军官证、现金+储蓄卡
户口本或出生证明
登机、酒店、自驾、无信号地区
2
衣物
速干短袖3、轻薄长裤2、冲锋衣/薄羽绒1、运动鞋1、徒步鞋1、亮色长裙/衬衫1
速干短袖3、长裤2、抓绒外套1、羽绒马甲1、运动鞋1、溯溪凉鞋1、备用袜子5
昼夜温差10 ℃左右
3
防晒&防护
SPF50+防晒霜50 ml×2、遮阳帽、墨镜、防沙面巾、驱蚊液
儿童防晒霜30 ml、遮阳帽、儿童墨镜、驱蚊贴
草原紫外线强、风沙大
4
药品&急救
布洛芬、蒙脱石散、创可贴、氯雷他定、晕车药
小儿布洛芬、口服补液盐、益生菌
感冒、肠胃、过敏、长途车
5
电子设备
手机、20000 mAh充电宝×2、相机、无人机、插线板
—
草原插座稀缺
6
日用&个护
洗漱包、湿巾2包、润肤露、雨衣3件、头灯
儿童保温水壶500 ml、小毛毯
蒙古包旱厕、夜拍星空
7
孩子专属
—
折叠推车、零食补给、画笔贴纸
车程防无聊、推车省体力