docker pull nginx
docker run -d -p 80:80 --name nginx01 -v nginx-config:/etc/nginx -v /data/:/data/ nginx
注意:
-v 是将:后面的容器内的文件挂载到宿主机上,也就是说用宿主机的配置来代替容器内的配置,更改宿主机的配置相当于是改容器内的配置,这样的话加入容器被删除了,也不会丢失我们的配置文件,这里使用的是具名挂载,指定了挂载文件的名称,没有指定挂载的路径,具名挂载的路径在/var/lib/docker /volumes/挂载文件名,目录下。
-v /data/:/data/ 是将我们在nginx.conf中配置的静态资源配置,挂载到宿主主机中,如果没有挂载这个静态资源路径,那么nginx启动后会去自己的容器内部找静态资源,而不会到宿主机的/data下面去找静态资源,所以这里要一定要记得将宿主机的静态资源路径挂载到容器内部。
#显示所有的文件挂载
[root@veo _data]# docker volume ls
DRIVER VOLUME NAME
local nginx-config
#查看文件挂载的路径
[root@veo _data]# docker volume inspect nginx-config
[
{
"CreatedAt": "2021-02-14T08:48:45+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/nginx-config/_data",
"Name": "nginx-config",
"Options": null,
"Scope": "local"
}
]
#进入该目录,修改nginx.conf
[root@veo _data]# cd /var/lib/docker/volumes/nginx-config/_data
[root@veo _data]# ll
total 36
drwxr-xr-x 2 root root 26 Feb 13 21:48 conf.d
-rw-r--r-- 1 root root 1007 Dec 15 21:59 fastcgi_params
-rw-r--r-- 1 root root 2837 Dec 15 21:59 koi-utf
-rw-r--r-- 1 root root 2223 Dec 15 21:59 koi-win
-rw-r--r-- 1 root root 5231 Dec 15 21:59 mime.types
lrwxrwxrwx 1 root root 22 Dec 15 21:59 modules -> /usr/lib/nginx/modules
-rw-r--r-- 1 root root 845 Feb 14 08:48 nginx.conf
-rw-r--r-- 1 root root 636 Dec 15 21:59 scgi_params
-rw-r--r-- 1 root root 664 Dec 15 21:59 uwsgi_params
-rw-r--r-- 1 root root 3610 Dec 15 21:59 win-utf
http{
server{
listen 80;
server_name localhost;
location /images/ {
root /data/;
autoindex on;
}
location /www/ {
root /data/;
expires 14d;
index index.html index.htm;
}
}
}
nginx如果想要监听多个端口,可以改变nginx的网络模式(默认为桥接模式),使用host网络模式,使容器和宿主机共享网络栈,前提是80端口没有被占用。
docker run -d --net host --name nginx02 -v nginx-config:/etc/nginx -v /data/:/data/ nginx
#如果运行不起,查看nginx02的日志信息
docker logs nginx02
访问nginx的时候不是客户端访问,而是宿主机通过docker0桥接的方式访问的,所以proxy_pass的地址要写具体的ip,而不是localhost。
docker pull tomcat
docker run -d -p 8080:8080 --name tomcat tomcat
docker exec -it tomcat /bin/bash
root@e39949855588:/usr/local/tomcat# ls
BUILDING.txt LICENSE README.md RUNNING.txt conf logs temp webapps.dist
CONTRIBUTING.md NOTICE RELEASE-NOTES bin lib native-jni-lib webapps work
root@e39949855588:/usr/local/tomcat# rm -rf webapps
root@e39949855588:/usr/local/tomcat# mv webapps.dist webapps
docker run --name tomcat -p 8080:8080 -v /root/tomcat/webapps/www:/usr/local/tomcat/webapps/www -d tomcat
docker pull mysql
#运行容器,并挂载文件
docker run -d -p 3306:3306 --name mysql01 -v mysql-conf:/etc/mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root mysql
[root@veo ~]# docker volume ls
DRIVER VOLUME NAME
local mysql-conf
local mysql-data
[root@veo ~]# docker volume inspect mysql-data
[
{
"CreatedAt": "2021-02-14T10:23:23+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/mysql-data/_data",
"Name": "mysql-data",
"Options": null,
"Scope": "local"
}
]
[root@veo test]# cd /var/lib/docker/volumes/mysql-data/_data
docker pull redis
[root@veo ~]# docker run -d --name redis-server -p 6379:6379 -v redis-conf:/etc/redis/redis.conf -v redis-data:/data redis /etc/redis/redis.conf --appendonly yes --requirepass "redis123"
[root@veo ~]# docker volume ls
DRIVER VOLUME NAME
local redis-conf
local redis-data
docker pull rabbitmq:management
docker run -d --name rabbit -e RABBITMQ_DEFAULT_USER=admin
-e RABBITMQ_DEFAULT_PASS=admin -p 15672:15672 -p 5672:5672 rabbitmq:management
3.访问http://ip:15672