一、网络

默认情况下Docker采用的是:桥接模式

桥接模式 brige
注:-p是 --pushlish的缩写

> docker run -di --name mytomcat -p 8080:8080 tomcat:8.5.50-jdk8-openjdk
#等价于
> docker run -di --name mytomcat --publish 8080:8080 tomcat:8.5.50-jdk8-openjdk

host模式,使用--net=host指定。

> docker run -di --name mytomcat --net=host tomcat:8.5.50-jdk8-openjdk

如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。

注意事项:
一定关闭宿主机的防火墙:

> systemctl status firewalld.service
> systemctl disabled firewalld
> systemctl stop firewalld

二、文件拷贝

如果我们需要将文件拷贝到容器内可以使用cp命令

格式:docker cp 需要拷贝的文件或目录 [容器名称|ID]:容器目录
> docker cp index.html mytomcat:/usr/local/tomcat/webapps/ROOT

#也可以将文件从容器内拷贝出来

docker cp 容器名称:容器目录 需要拷贝的文件或目录
> docker cp mytomcat:/usr/local/tomcat/webapps/ROOT hello.txt

三、目录挂载**(卷Volume)

目录挂载即目录映射,就是将宿主机和容器内部的文件进行关联,修改宿主机的文件,会自动修改容器内部的文件。

我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。创建容器 添加-v参数 后边为 宿主机目录:容器目录,例如:

> docker run -d -it --name=nginx-test --mount src=nginx-vol,dst=/usr/share/nginx/html nginx
#或者
> docker run -d -it --name=nginx-test -v nginx-vol:/usr/share/nginx/html nginx

查看IP和相关的安装信息和目录

docker inspect [容器名|容器ID]
> docker inspect tomcat

完整命令如下---Mount 以容器为主

1:创建一个卷

> docker volume create mytomcat-vol

2:查看卷 所有的卷都在目录/var/lib/docker/volumes

> docker volume ls

3:查看卷的详细信息,是为了去得知tomcat的安装目录

> docker volume inspect mytomcat-vol

4:创建一个nginx的目录挂载和卷的映射

> docker run -d -it --name mytomcat --mount src=mytomcat-vol,dst=/usr/local/tomcat/webapps/ROOT -p 8080:8080 tomcat:8.5.50-jdk8-openjdk

5:验证是否映射成功
首先进入宿主机mytomcat-vol的数据目录

> cd /var/lib/docker/volumes/mytomcat-vol/_data

创建一个文件index.html,内容为hello world

> vim index.html

然后进入mytomcat容器的挂载目录

> docker exec -it mytomcat /bin/bash
> cd webapp/ROOT
> ls

可以发现该目录下正好有文件index.html,并且内容为hello world,说明宿主机的修改可以同步到容器。
现在在容器中将index.html删除,exit退出容器。
回到宿主机后发现原来的index.html也被删除了,说明容器的修改可以同步到容器。