Docker 镜像拉取
零、前置条件
拉取镜像前,记得先开启 docker:
systemctl start docker
systemctl status docker
配置国内源镜像:
vim /etc/docker/daemon.json
"registry-mirrors": [
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn"
]
一、MySQL
1、搜索镜像
docker search mysql
2、拉取镜像
docker pull mysql:tag
# tag 为版本号,不填默认为 latest
选择第一个镜像,由官方发布的 mysql:latest ,
指定版本号为 5.7 ,
3、查看镜像
docker images
4、运行容器
docker run -it -d --name name -p port:port -v path:path -v file:file -e env=value image:tag /bin/bash
参数 | 解析 |
-it | 与容器进行交互式启动 |
-d | 守护式运行 |
--name | 给容器的别名 |
-p | 端口映射,[宿主端口:容器端口] |
-v | 容器挂载点,[挂载的宿主目录或文件:容器目录或文件] |
-e | 给容器的环境变量,[变量名=变量值] |
[image:tag] | 要运行的镜像版本 |
[/bin/bash] | 交互路径 |
docker run -it -d --name mysql8 -p 3307:3306 -v D:/DockerData/mysql8/data:/var/lib/mysql -v D:/DockerData/mysql8/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root mysql:latest /bin/bash
# 运行成功后会返回容器 id
5a6ea00828f0fc5810c455fd54a7bc37009a4c76b9bd8629abd358ea7aee7e9a
5、查看运行中的容器
docker ps
# 容器运行信息
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a6ea00828f0 mysql:latest "docker-entrypoint.s…" About a minute ago Up About a minute 33060/tcp, 0.0.0.0:3307->3306/tcp mysql8
6、登录容器
docker exec -it 容器名称或ID /bin/bash
# 登录 mysql8 容器
docker exec -it mysql8 /bin/bash
遇到问题:
bash-4.4# mysql -uroot -p
Enter password:
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
原因:这是由于当使用host参数为“localhost”连接Mysql服务时,会优先使用“sock文件”进行连接,而不是使用“IP:端口”进行连接,而mysql尝试使用“sock文件”进行连接时,却无法获取“sock文件”的位置。
解决:
1、将连接参数“host”的值由“localhost”改成“127.0.0.1”
mysql -uroot -h 127.0.0.1 -p
2、在“/etc/mysql.cnf”中指定“sock文件”位置
# 查看 socket 文件位置
# cat /etc/my.cnf
[mysqld]
socket=/var/run/mysqld/mysqld.sock
# 将容器里的配置文件复制到宿主主机
docker cp mysql8:/etc/my.cnf D:/DockerData/mysql8/
# 修改配置文件
[mysql]
socket=/var/run/mysqld/mysqld.sock
[client]
socket=/var/run/mysqld/mysqld.sock
[mysqldump]
socket=/var/run/mysqld/mysqld.sock
[mysqladmin]
socket=/var/run/mysqld/mysqld.sock
# 将修改后的配置文件复制到容器
docker cp D:/DockerData/mysql8/my.cnf mysql8:/etc/my.cnf
# 重启容器
docker restart mysql8
3、若上面两个方法无效,则重构容器,去掉 -d -it 指令
docker run --name mysql8 -p 3307:3306 -v D:/DockerData/mysql8/my.cnf:/etc/my.cnf:rw -e MYSQL_ROOT_PASSWORD=123456789 mysql:latest
二、Redis
1、搜索镜像
docker search Redis
2、拉取镜像
docker pull redis
3、启动 Redis 并映射本地 6380 端口
docker run -d --name redis -p 6380:6379 redis
使用 Redis Desktop Manager 测试连接,可以看到连接成功。
如果需要修改 Redis 配置,可以通过映射 redis.config 文件实现。