指尖上的记忆指尖上的记忆
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub
首页
  • 基础
  • Laravel框架
  • Symfony框架
  • 基础
  • Gin框架
  • 基础
  • Spring框架
  • 命令
  • Nginx
  • Ai
  • Deploy
  • Docker
  • K8s
  • Micro
  • RabbitMQ
  • Mysql
  • PostgreSsql
  • Redis
  • MongoDb
  • Html
  • Js
  • 前端
  • 后端
  • Git
  • 知识扫盲
  • Golang
🌟 gitHub

ubuntu22下使用docker:

1>端口映射关系,也适用于直接docker run -p host_port:container_port

https://juejin.cn/s/docker-compose.yml%20%E7%AB%AF%E5%8F%A3
  
2>docker 命名卷
默认情况下,命名卷在大多数 Linux 发行版中存储在主机文件系统的 /var/lib/docker/volumes 目录下
比如:
volumes:
  - volume-mysql-duoxiaozhan:/var/lib/mysql //声明 命名卷,然后挂载到 /var/lib/mysql,用来存储mysql数据,这样即使容器销毁数据还在
在 Linux 上: /var/lib/docker/volumes/volume-mysql-duoxiaozhan/_data
  
3>为docker-compose 配置环境变量
https://docs.docker.com/compose/environment-variables/set-environment-variables/
  
4>关于jwilder/nginx-proxy
http://jasonwilder.com/blog/2014/03/25/automated-nginx-reverse-proxy-for-docker/
  
5>现在可以直接使用 docker compose build , 过去需要使用 docker-compose build
对于新版 Docker(19.03+),只需安装 Docker Engine 即可使用 docker compose 命令
对于旧版 Docker,需要先安装 Docker Engine,再单独安装 docker-compose

还有一点很重要:
过去在当前 docker-compose.yml目录下执行 docker-compose up,如果镜像不存在,会自动执行 docker-compose build [可以加单独镜像名称,比如nginx]命令
现在必须要先执行 docker compose build [可以加单独镜像名称,比如nginx], 然后单独执行 docker compose up [-d参数], 使用 -d 标志启动容器,表示以"分离(detached)"模式运行。
分离模式意味着容器将在后台运行,而不会将它们的输出流(标准输出和标准错误)连接到您的终端。
  
6>执行 docker image ls,报下面的错误
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Head ......

原因是:
这是因为你当前的用户没有这个权限。默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。即我们当前的用户不是root用户。

解决办法:把我们当前的用户添加到docker组中就可以了,这样他们就是一家人了。

第一步:sudo gpasswd -a username docker  #将普通用户username加入到docker组中,username这个字段也可以直接换成$USER。
第二步:newgrp docker  #更新docker组
第三步:再执行你报错的命令,此时就不会报错了。
  
7>docker 容器内执行vim
root@b8c739f8b2b3:/app# apt-get update
root@b8c739f8b2b3:/app# apt-get install -y vim

https://blog.csdn.net/hkl_Forever/article/details/125466251
  
8>docker容器内导入数据
root@bf42367264b4:/dumps# mysql -u duoxiaozhan -p duoxiaozhanpub_dev < /dumps/duoxiaozhanpub.sql
Enter password: 
ERROR 1118 (42000) at line 1739814: Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_FORMAT=DYNAMIC or ROW_FORMAT=COMPRESSED may help. In current row format, BLOB prefix of 768 bytes is stored inline.

解决方式:

找到对应表DML,把 ROW_FORMAT=COMPACT 改为 ROW_FORMAT=DYNAMIC:
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `editor_id` int unsigned DEFAULT NULL,
  `email` char(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
  `password` char(80) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL,
) ENGINE=InnoDB AUTO_INCREMENT=2184475 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC;

至于网上的 各种设置都没用,其实就上面的提示就是解决方法

然后执行:
root@bf42367264b4:/dumps# ls
duoxiaozhanpub.sql  tables
root@bf42367264b4:/dumps# mysql -u root -p duoxiaozhanpub_dev < /dumps/duoxiaozhanpub.sql
Enter password: 
root@bf42367264b4:/dumps#

导入完成

补充:

https://blog.csdn.net/guo_zhen_qian/article/details/132254406 //命令行安装(简单)
https://docs.docker.com/desktop/install/linux-install/ //安装desk版本
https://docs.docker.com/engine/install/ubuntu/ //安装engine版本
  
// docker-compose 安装, 新版本的docker 可以不用单独安装这个,可以直接使用,见上面的命令操作
sudo curl -L https://github.com/docker/compose/releases/download/v2.26.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
$ sudo chmod +x ./docker-compose //记得赋权限