四、Docker安装常用服务及常用操作
如何安装
下载镜像需要在dockerHub中进行搜索,搜索出需要安装的镜像后可以通过其项目提供的Readme进行安装与使用。一般情况下的步骤
- 确定版本
- 拉取
安装MySQL
以5.7.33版本为例
拉取镜像
docker pull mysql:5.7.33启动镜像
mysql服务内置了环境变量,需要在启动时进行指定。
将
/root/mysql映射到容器的数据库文件,从而保证数据的安全。MYSQL_ROOT_PASSWORDroot用户的密码
docker run --name mysql -e MYSQL_ROOT_PASSWORD=root -p 3306:3306 -d -v /root/mysql:/var/lib/mysql mysql:5.7.33上面命令会启动MySQL服务并设置root密码为
root,监听端口为3306,并将docker容器内的数据文件与本机/root/mysql进行关联。其他命令
进入MySQL服务
docker exec -it 容器名称|容器id bash外部查看MySQL日志
docker logs 容器名称|容器id将MySQL数据库备份为sql文件
# 导出全部数据 docker exec mysql|容器id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql # 导出指定库数据 docker exec mysql sh -c 'exec mysqldump --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql # 导出指定库数据不要数据 docker exec mysql sh -c 'exec mysqldump --no-data --databases 库表 -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql执行sql文件到MySQL中
docker exec -i mysql sh -c 'exec mysql -uroot - p"$MYSQL_ROOT_PASSWORD"' < /root/xxx.sql
安装MongoDB数据库
拉取镜像(最新)
docker pull mongo运行镜像
docker run -d -p 27017:27017 -v /root/mongo/data:/data/db --name mymongo mongo手动配置用户名密码
# 进入容器 docker exec -it mymongo /bin/bash mongo # 选择 admin库 use admin # 运行命令 db.createUser({user:"root",pwd:"root",roles:[{role:'root',db:'admin'}]})
安装redis服务
下载镜像(最版版本)
docker pull redis启动容器并挂载到本地,开启持久化存储
docker run --name redis -v /root/redis/data:/data -p 6379:6379 -d redis redis-server --appendonly yes自定义配置文件
在
/root/redis目录下新建redis.conf文件(酌情新建即可),然后写入如下内容。(推荐下载使用对应版本的配置文件)# 开启远程权限 bind 0.0.0.0最后加载配置启动并开启持久化数据
docker run --name redis -v /root/redis/data:/data -v /root/redis/config:/usr/local/etc/redis/redis.conf -p 6379:6379 -d redis redis-server /usr/local/etc/redis/redis.conf --appendonly yes
安装tomcat
下载tomcat镜像(最新版本)
docker pull tomcat运行tomcat镜像
docker run -p 8080:8080 -d --name mytomcat tomcat进入tomcat镜像
docker exec -it mytomcat /bin/bash将webapps目录挂载在外部
docker run -p 8080:8080 -v /root/webapps:/usr/local/tomcat/webapps -d --name mytomcat tomcat
安装Nginx
下载镜像(最新)
docker pull nginx启动Nginx容器
nginx配置文件目录:
/etc/nginx/conf.dhtml静态文件目录:
/usr/share/nginx/htmldocker run -p 80:80 --name nginx01 -d -v /root/nginx/conf.d:/etc/nginx/conf.d -v /root/nginx/html:/usr/share/nginx/html nginx启动时会将镜像内文件与宿主机进行关联,因此如果宿主机没有配置文件或html文件时会导致nginx也会丢失默认配置和html页面
默认配置
server { listen 80; listen [::]:80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html; index index.html index.htm; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:80 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }进入容器
docker exec -it nginx01 /bin/bash
反向代理宿主机服务
在安装Docker的时候,会在宿主机安装一个虚拟网关 docker0,查询docker0的IP地址
ip addr show docker0配置docker上安装的nginx
server { listen 80; server_name xiaokang.me; location / { # 设置最大允许上传单个的文件大小 client_max_body_size 100m; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # 反向代理到 tomcat proxy_pass http://172.17.0.1:3002; } }重新启动nginx容器
docker restart nginx
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小康博客!
评论
TwikooDisqusjs







