一、查询镜像
1.查询帮助
2.docker search mysql 查询mysql镜像
二、获取镜像(pull)
1.docker pull --help 查看帮助
注:TAG表示版本号,不说明,则latest最新版
2.docker pull mysql 获取镜像
镜像是采用分层存储的
查看本地镜像
docker image ls 查看本地镜像
创建、运行容器
为了防止每次多个容器启动时,IP变动的问题,我们先设置docker的静态ip
1.创建自定义网络
默认的docker网络
docker network ls 查看默认的docker网络
自定义网络:docker network create —driver bridge —subnet=自定义网络ip/16 —gateway=网关值 自定义网络名称
例如:docker network create —driver bridge —subnet=172.18.12.0/16 —gateway=172.18.1.1 wn_docker_net2.在Linux下创建文件夹与mysql容器进行挂载,防止删除后,重新创建容器数据丢失
Linux创建文件夹来存储数据
root@localhost software]# mkdir mysql
[root@localhost software]# cd mysql
[root@localhost mysql]# mkdir 3306
[root@localhost mysql]# cd 3306/
[root@localhost 3306]# mkdir data
[root@localhost 3306]# mkdir conf
[root@localhost 3306]# mkdir mysql-files
将my.conf上传到conf文件夹下
linux与mysql容器的对应关系
3.创建mysql容器
docker run -it \
--name mysql \
-p 3306:3306 \
--privileged \ 开放权限
-e MYSQL_ROOT_PASSWORD=123 \
--network wn_docker_net \ 自定义网络的名字
--ip 172.18.12.2 \ 自定义网络的ip
-v /etc/localtime:/etc/localtime
\ 解决时区问题-v /usr/local/software/mysql/3306/conf/my.cnf:/etc/mysql/my.cnf \
-v /usr/local/software/mysql/3306/data:/var/lib/mysql \
-v /usr/local/software/mysql/3306/mysql-files:/var/lib/mysql-files \
-d mysql
常用命令
docker inspect 容器名称
1 | docker -v | docker版本 |
2 | docker search 镜像名称 | 查询镜像 |
3 | docker pull 镜像名称:tag | 拉取镜像 |
4 | docker ps | 查询活动的容器 |
5 | docker ps -a | 查询所有容器状态 |
6 | docker logs 容器名称 | 查询容器中的日志 |
7 | docker rm 容器名称/ID | 删除容器 |
8 | docker stop 容器 | 停止运行容器 |
9 | docker exec | 进入容器 |
10 | docker inspect | 查看容器详情 |
docker ps 活着的进程
docker ps -a 查询所有进程
docker logs 容器名称 查询日志
[root@localhost ~]# docker logs mysqlx
2024-01-04 02:07:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2024-01-04 02:07:38+00:00 [Note] [Entrypoint]: Switching to dedicated user 'mysql'
2024-01-04 02:07:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 8.0.27-1debian10 started.
2024-01-04 02:07:38+00:00 [ERROR] [Entrypoint]: Database is uninitialized and password option is not specified
You need to specify one of the following:
- MYSQL_ROOT_PASSWORD
- MYSQL_ALLOW_EMPTY_PASSWORD
- MYSQL_RANDOM_ROOT_PASSWORD
docker rm 容器名称/容器ID 删除容器
docker rm mysqlx
docker stop/start/restart 容器 停止/运行正在运行的容器
docker exec 进入容器
mysqp -uroot -p密码 进入mysql
navicat连接数据库
失败的解决方案: linux开放3306端口。
firewall-cmd --add-port=3306/tcp --permanent
firewall-cmd --reload