一、网络
默认情况下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
image.png
完整命令如下---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也被删除了,说明容器的修改可以同步到容器。
网友评论