需求:
在 Docker 中创建一个 MySQL 容器,名为 c_name,宿主机中的端口 3306 与容器的端口 3306 相映射,并且将 MySQL 的配置文件和数据内容目录挂载到宿主机。
步骤:
-
搜索 MySQL 容器
docker search mysql
-
拉取 MySQL 容器
docker pull mysql:8
说明:
- 这里选择 mysql 8 的版本。
- 版本信息可以通过网址:https://hub.docker.com/ 查询。
-
先创建一个基本容器,主要是复制 mysql 的配置文件到宿主机中
docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
-
复制 mysql 容器的配置文件到宿主机
mkdir -p ~/mysql/conf docker cp mysql:/etc/mysql/conf.d ~/mysql/conf/conf.d docker cp mysql:/etc/mysql/my.cnf ~/mysql/conf/my.cnf docker cp mysql:/etc/mysql/my.cnf.fallback ~/mysql/conf/my.cnf.fallback
-
删除该容器
# 停止容器 docker stop mysql # 删除容器 docker rm mysql
-
重新创建新的容器,并且添加文件映射
docker run -p 3306:3306 --name=mysql -v ~/mysql/conf/:/etc/mysql/ -v ~/mysql/data:/var/lib/mysql -v ~/mysql/mysql-files/:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0
-
进入容器,登陆MySQL命令窗口,修改MySQL密码验证插件
docker exec -it mysql /bin/bash mysql -uroot -p alter user 'root'@'%' identified with mysql_native_password by '123456';
-
在外部机器中连接 MySQL
# 参数说明:地址 用户名 密码(小写p) 端口(大写P) mysql -h192.168.78.13 -uroot -p123456 -P3306
说明
- 如果连接失败,需要开放宿主机的 3306端口。
步骤:
-
下载 Tomcat 镜像
docker pull tomcat:9.0
-
创建容器
docker run -id --name=tomcat -p 8080:8080 -v /root/tomcat:/usr/local/tomcat/webapps tomcat:9.0
说明
- 创建 Tomcat 容器之后,Tomcat 会自动启动。
- 发布项目时只需要将项目放在宿主机的 /root/tomcat 目录下。
步骤:
-
下载 Nginx 镜像
docker pull nginx:1
-
先创建一个基本容器,主要是复制 nginx 的配置文件到宿主机中
docker run -d --name nginx nginx:1
-
拷贝容器内 Nginx 默认配置文件到 宿主机的 ~/nginx/ 目录
mkdir -p ~/nginx/conf mkdir -p ~/nginx/html mkdir -p ~/nginx/logs docker cp nginx:/etc/nginx/nginx.conf ~/nginx/conf/ docker cp nginx:/etc/nginx/conf.d ~/nginx/conf/ docker cp nginx:/usr/share/nginx/html/ ~/nginx
-
停止并删除上面的容器
docker stop nginx docker rm nginx
-
重新创建 nginx 容器
docker run -id -p 80:80 -p 443:443 --name=nginx -v ~/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v ~/nginx/conf/conf.d:/etc/nginx/conf.d -v ~/nginx/html:/usr/share/nginx/html -v ~/nginx/logs:/var/log/nginx nginx:1
-
添加配置文件
之后只需要在 ~/nginx/conf/conf.d 下创建新的 conf 文件即可。
server { listen 80; server_name clock.shijialeya.top; location / { proxy_pass http://www.shijialeya.top:9001/; proxy_read_timeout 600s; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host:$server_port; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_buffering off; proxy_buffer_size 256k; proxy_buffers 100 256k; proxy_next_upstream error timeout invalid_header http_500 http_503 http_404; proxy_max_temp_file_size 128m; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
宿主机中操作 nginx:
- 停止容器中的 Nginx
docker stop nginx
- 启动容器中的 Nginx
docker start nginx
- 重启 Nginx
docker restart nginx四、部署 Redis
步骤:
-
下载 redis 镜像
docker pull redis:6
-
创建 redis 容器
docker run -id --name=redis -p 6379:6379 redis:6 --requirepass 123456
-
连接 redis,在 windown 中打开小黑窗口
# 进入到 redis 的目录,之后启动连接 redis,把 -h 后面的地址修改成自己的宿主机的地址 redis-cli.exe -h 192.168.78.13 -p 6379 -a 123456



