docker容器一端口映射、数据管理

一、随机端口映射

1.后台启动nginx

[root@docker-server ~]# docker run -d --name nginx -P nginx
2b748f91df6c00d0689a17b77fba1760f1a431d67576a48de49a5a7d586cfb39
[root@docker-server ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
2b748f91df6c        nginx               "nginx -g 'daemon of…"   18 seconds ago      Up 17 seconds       0.0.0.0:32769->80/tcp   nginx
===》从进程可以看出,本地的端口32769被映射到nginx容器的80端口

2.网页访问

这里写图片描述

3.查看日志

[root@docker-server ~]# docker logs 2b748f91df6c
10.0.0.1 - - [12/Sep/2018:01:19:46 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" "-"
2018/09/12 01:19:46 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.0.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "10.0.0.5:32769", referrer: "http://10.0.0.5:32769/"
10.0.0.1 - - [12/Sep/2018:01:19:46 +0000] "GET /favicon.ico HTTP/1.1" 404 571 "http://10.0.0.5:32769/" "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36" "-"

二、指定端口映射

1.指定IP与端口映射

[root@docker-server ~]# docker run -d -p 10.0.0.5:81:80 --name nginx-81 nginx
b5ea9e937ce68f03df45c8b71ed7569736e4b23eb5376c1014b4656074c8d5be
[root@docker-server ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
b5ea9e937ce6        nginx               "nginx -g 'daemon of…"   23 seconds ago      Up 22 seconds       10.0.0.5:81->80/tcp     nginx-81
2b748f91df6c        nginx               "nginx -g 'daemon of…"   9 minutes ago       Up 9 minutes        0.0.0.0:32769->80/tcp   nginx
===》将10.0.0.5:81映射到nginx-81容器的80端口

2.网页访问

这里写图片描述

3.映射多个端口

[root@docker-server ~]# docker run -d -p 443:443 -p 82:80 --name nginxs nginx
4f6e820958f0cffda24462e1cbccd52b251764dd7b712495d47a567b8a3fc3f4
[root@docker-server ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
4f6e820958f0        nginx               "nginx -g 'daemon of…"   11 seconds ago      Up 10 seconds       0.0.0.0:443->443/tcp, 0.0.0.0:82->80/tcp   nginxs
b5ea9e937ce6        nginx               "nginx -g 'daemon of…"   5 minutes ago       Up 5 minutes        10.0.0.5:81->80/tcp                        nginx-81
2b748f91df6c        nginx               "nginx -g 'daemon of…"   14 minutes ago      Up 14 minutes       0.0.0.0:32769->80/tcp                      nginx

三、数据管理

  • 默认情况下,在容器内创建的所有文件都存储在可写容器层中。这意味着:
    当该容器不再运行时,数据不会持久存在,如果另一个进程需要,则可能很难从容器中获取数据。
  • 容器的可写层紧密耦合到运行容器的主机。无法轻松地将数据移动到其他位置。 写入容器的可写层需要
  • 存储驱动程序来管理文件系统。存储驱动程序使用Linux内核提供联合文件系统。与使用直接写入主机文件系统的数据卷相比,这种额外的抽象降低了性能。

1.指定容器数据挂载目录

1.1启动容器,指定容器的存储的目录

[root@docker-server ~]# docker run -d --name nginx-volume-test1 -v /data/nginx nginx
66b56ee796715de421a37fef6e11fe08d00657f214a86928124f53bf15e17690
====》参数
-v 指定一个主机目录作为挂在卷

[root@docker-server ~]# docker_start nginx-volume-test1
root@66b56ee79671:/# ls -dl data/nginx/
drwxr-xr-x. 2 root root 6 Sep 12 01:51 data/nginx/

1.2查看容器数据目录挂载在本地的哪个目录

[root@docker-server ~]# docker inspect -f {{.Mounts}} nginx-volume-test1  
[{volume 21e50f1f5feb058e54a9f80e86ae2e8ba9a535f138034223e0ebf7cdd38e5e52 /var/lib/docker/volumes/21e50f1f5feb058e54a9f80e86ae2e8ba9a535f138034223e0ebf7cdd38e5e52/_data /data/nginx local  true }]

1.3创建文件

[root@docker-server ~]# cd /var/lib/docker/volumes/21e50f1f5feb058e54a9f80e86ae2e8ba9a535f138034223e0ebf7cdd38e5e52/_data/
[root@docker-server _data]# touch test
[root@docker-server _data]# docker_start nginx-volume-test1
root@66b56ee79671:/# ls /data/
nginx
root@66b56ee79671:/# ls /data/nginx/
test

2.指定本地目录作为容器数据挂载目录

2.1启动容器,指定本机目录

[root@docker-server _data]# docker run -d --name nginx-volume-test2 -v /data/docker-volume-nginx/:/data nginx
176e59c155773ab738763d1ae22c067b52c2714486d9efe9b3b19982e2ad1a28

2.创建文件测试

[root@docker-server _data]# touch /data/docker-volume-nginx/test2
[root@docker-server _data]# docker_start nginx-volume-test2
root@176e59c15577:/# ls /data/
test2

3.创建新容器,使用nginx-volulme-test2的数据存储

[root@docker-server _data]# docker run -d --name nginx-volume-test3 --volumes-from nginx-volume-test2 nginx
3c7814d9b8d8e83195b6fb16a2cca6d005b4e4fdee83ce2b3f9dcfb17390840f
[root@docker-server _data]# docker_start nginx-volume-test3
root@3c7814d9b8d8:/# ls /data/      
test2

猜你喜欢

转载自blog.csdn.net/liang_operations/article/details/82635103