文章目录
一、前言
- 有兴趣可以添加我,一起探讨技术。
- 加V:
Fengfl1222
,名称:聚星汇智
。 要资料
,申请备注为:CSDN+地方+资料
,如CSDN山东资料
。想接项目一起努力进步
,申请备注为:CSDN+地方+项目
,如CSDN+山东+项目,添加成功之后,可以发一份简历。- 项目组缺人,想要兼职的人,火速加我进群。
- 本人介绍:211高校(北京交通大学)计算机研究生,本科双非计算机毕业后,校招进入军工,工作2个月离职后进入阿里,工作两年后离职考研,现已毕业,入职济南某大厂。团队主要技术栈:RAG、LLM、JAVA、PYTHON、GO、VUE、REACT等web开发需求。已有开发团队,如果有空闲时间想一个接项目者,可以加我呦。
- 不按上诉规则添加好友者,不予通过。
- 加V:
二、docker下载、安装
1.环境准备
- 虚拟机 或者 物理机
- Linux系统(centos系统)
2. 基本命令
现在可了解,下面会一 一使用
-
systemctl start docker :系统启动docker
-
systemctl stop docker :系统关闭docker
-
docker images :查看docker安装的镜像。
-
docker ps :查看docker运行的容器
-
docker ps -a :查看docker运行的容易,包括已停止容器,本人建议删除
3. 开始下载,安装
step1:使用yum命令进行安装
yum install -y docker
备注:-y 表示不询问 使用默认配置进行安装,等待提示 完毕!
step2:查看是否安装成功
yum list installed | grep docker
备注:命令为 查看yum安装完成文件列表 并 筛选docker安装信息 如下
step3:查看当前的docker 服务
systemctl status docker
状态: Active : inactive(dead),死亡,未开启
step4:启动docker服务、查看docker 状态
systemctl start docker
systemctl status docker
状态:Active(running),已启动。
step5:使用docker命令
docker images
备注:查看docker已经安装的镜像 裸机状态下为空
step6:查看docker版本
docker version
三、docker操作镜像(以mysql为例)
1. 拉取镜像mysql
docker search mysql
2. 拉取镜像,速度很慢
docker pull mysql // 默认下载最新
docker pull mysql:5.7 //后面指定版本,
备注:第一种默认下载最新版本。
第二种是打tag,冒号后面指定版本,推荐使用这种。
3. 换镜像拉取地址
官方地址为国外地址安装缓慢可进行配置
修改镜像文件拉取地址为ustc
vi /etc/docker/daemon.json
备注:insert 编辑内容如下 并esc 输入:wq 保存退出
{
"registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
重启docker 重新进行step1 安装速度变快
4. 删除原有镜像,重新拉取,速度很快
删除镜像
docker rmi mysql:5.7
直接拉取镜像,速度很快
docker pull mysql:5.7
四、docker容器常用命令
1、运行容器(以mysql为例)
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:tag //正确
-p
: 端口映射--name
: 给容器命名-e
: 指定密码-d
:指定镜像
还有其他启动参数,不同软件参数不同,可看下面安装mysql案例。
2、查看运行容器
docker ps <container-id>
-p
: 端口映射--name
: 给容器命名
还有其他启动参数,不同软件参数不同,可看下面安装mysql案例。
3、查看所有容器(包括启动失败的)
docker ps -a <container-id>
4、删除容器
a、直接删除
docker rm <container-id>
b、使用docker ps命令查找并删除停止的容器
如果想要删除所有停止的容器,可以结合docker ps命令和awk命令来实现:
docker ps -a -q --filter "status=exited" | awk '{print $1}' | xargs docker rm
c、删除所有停止的容器
docker container prune
5、查看容器启动日志
docker logs <container-id>
五、操作容器(以mysql为例,并操作)
1.运行MySQL
docker run -p 3306:3306 --name mysql02 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:tag //正确
参数解释
-p : 端口映射
--name: 给容器命名
-e :指定密码
-d :选择镜像
bug1:MySQL容器启动报错
/usr/bin/docker-current: Error response from daemon: oci runtime error:
container_linux.go:235: starting container process caused "process_linux.go:258:
applying cgroup configuration for process caused \"Cannot set property
TasksAccounting, or unknown property.\"".
解决:
使用 root 权限登录 Centos。确保 yum 包更新到最新。
因为docker版本,与centos系统版本冲突。linux与docker版本的兼容性问题
命令
sudo yum update
然后问题就可以解决了
2.操作MySQL
docker ps
docker exec -it 容器id bash
进入 到 MySQL 容器
mysql -u root -p // 进入MySQL
show databases // 显示MySQL的 所有数据库
use ‘数据库名’ // 进入某个数据库
show tables // 显示数据库中的所有表
desc ‘表名’ // 显示表结构
select * from ‘表’ // sql语句, 对数据进行操作
3. 修改SQL 字符集
mybatis保存对象报错
java.sql.SQLException: Incorrect string value: '\xE5\xBE\xAE\xE4\xBF\xA1...' for column 'userid' at
数据库的编码和Java传递编码不一致 Java为UTF-8
- 数据库单击右键→改变数据库→UTF-8
- 表同理可得,修改字符集
- 如果还是报错 说明字符集没有生效 使用SQL让它生效
//查看库的字符集 SHOW CREATE DATABASE rwff_test; //查看表的字符集 SHOW CREATE TABLE task_up; //查看字段编码 SHOW FULL COLUMNS FROM rwff_test.task_up; //修改库的字符集 ALTER DATABASE kepler DEFAULT CHARACTER SET utf8; //修改表以及字符字段的字符集 走到这一步执行会生效 ALTER TABLE task_up CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
六、重点
-
重点,docker一旦重启,信息就会丢失
例如,mysql数据库中的信息就会丢失。 -
通过DaoCloud安装(推荐)
访问daocloud 根据自己的系统,按照上面的要求执行对应的命令即可安装成功docker -
常用命令
查看用户所在组
$ groups username 例:groups feng
查看 Docker容器 的详细信息:
$ docker inspect 容器名
-
docker 的镜像与容器都存储在 /var/lib/docker 下面
七、docker普通用户的授权
安装完成之后需要使用root用户才能操作docker,我们还需要将我们使用docker的用户添加到docker组中:
将一个已有用户 username 增加到一个已有用户组 docker 中,使此用户组成为该用户的附加用户组,可以使用带 -a 参数的 usermod 指令。-a 代表 append, 也就是将用户添加到新用户组中而不必离开原有的其他用户组。不过需要与 -G 选项配合使用:
sudo usermod -a -G docker username
下面这步可以不执行:
如果要同时将 username 的主要用户组改为 docker,则直接使用 -g 选项:
usermod -g docker username
如果要将一个用户从某个组中删除,则
gpasswd -d username group
#将用户添加到docker用户组之后,重启docker即可
#Ubuntu下重启命令
sudo service docker restart
#执行完该命令之后,将该用户退出,重新登录即可生效
#CentOS下执行命令:
sudo systemctl restart docker
#同样执行完该命令之后,需将该用户退出重新登录