参考:汤小洋老师的教学视频
docker学习笔记(一)【docker 介绍、卸载、安装、配置加速】
docker学习笔记(三)镜像
docker学习笔记(四)使用docker搭建环境
docker学习笔记(五)如何创建自己的阿里云镜像仓库(这是2021版的阿里云教程)
目录标题
- docker命令大全
- 1、docker命令帮助
- 2、docker镜像常用命令
- 3、docker容器常用命令
- 3.1、 docker run --name 容器名 -i -t 镜像id/镜像名:tag
- 3.2、 docker ps 查看正在运行的容器
- 3.3、 docker ps -a 查看运行过的所有容器
- 3.4、 docker start 容器的id/名字 运行指定的容器
- 3.5、 docker stop 容器的id/名字 停止指定的容器
- 3.6、 docker rm 容器的id/名字 删除指定的容器
- 3.7、 docker rm -f $(docker ps -aq) 强制删除所有容器
- 3.8、以tomcat为例
- 3.9、操作容器(进入容器执行一些操作)
- 3.10、docker cp 主机的路径:容器id :容器里面的路径 (将宿主机里面的文件复制到容器里面)
- 4、数据卷(目录挂载)
docker命令大全
1、docker命令帮助
- 输入docker可以查看docker的大致使用
- docker info 可以查看安装的docker 比较详细的信息 相比docker version
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker info
Containers: 3 #当前容器的数量
Running: 0 #正在运行的
Paused: 0 # 暂停运行的
Stopped: 3 #停止运行的
Images: 1 #镜像数
Server Version: 1.13.1 #当前docker 的版本
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: false
Logging Driver: journald
Cgroup Driver: systemd
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Swarm: inactive
Runtimes: docker-runc runc
Default Runtime: docker-runc
Init Binary: /usr/libexec/docker/docker-init-current
containerd version: (expected: aa8187dbd3b7ad67d8e5e3a15115d3eef43a7ed1)
runc version: 66aedde759f33c190954815fb765eedc1d782dd9 (expected: 9df8b306d01f59d3a8029be411de015b7304dd8f)
init version: fec3683b971d9c3ef73f284f176672c44b448662 (expected: 949e6facb77383876aeff8a6944dde66b3089574)
Security Options:
seccomp
WARNING: You're not using the default seccomp profile
Profile: /etc/docker/seccomp.json
Kernel Version: 3.10.0-514.26.2.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
Number of Docker Hooks: 3
CPUs: 1
Total Memory: 1.796 GiB
Name: iz2zedg4ylq9iqtwm11wecz
ID: VBAX:RWTG:5L7G:BIDA:HKE5:TW3W:G5AQ:CAUS:TGKB:HYCS:BR3Q:TDLC
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://bsycr8v3.mirror.aliyuncs.com
Live Restore Enabled: false
Registries: docker.io (secure)
- 使用docker 命令名 --hlep 查看某个docker 命令的使用
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker run --help
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Run a command in a new container
2、docker镜像常用命令
2.1、搜索镜像
docker search mysql
OFFICIAL 为【OK】则是官方上传的镜像
使用docker search 命令查看到的信息并不详细,在真正开发使用的时候我们会去docker hub官方仓库查看每个镜像的具体版本信息
当我们在官方仓库查看了镜像的版本信息后,可以通过tag来决定拉取哪个镜像
这里还有一些镜像的简单使用教程
2.2、 拉取镜像
docker pull mysql:5.7 #使用docker pull 去拉取一个镜像 :后面指定拉取的版本。
Trying to pull repository docker.io/library/mysql ...
5.7: Pulling from docker.io/library/mysql
69692152171a: Pull complete # 这里有很多pull complete是因为 docker 是分层的
1651b0be3df3: Pull complete
951da7386bc8: Pull complete
0f86c95aa242: Pull complete
37ba2d8bd4fe: Pull complete
6d278bb05e94: Pull complete
497efbd93a3e: Pull complete
a023ae82eef5: Pull complete
e76c35f20ee7: Pull complete
e887524d2ef9: Pull complete
ccb65627e1c3: Pull complete
Digest: sha256:a682e3c78fc5bd941e9db080b4796c75f69a28a8cad65677c23f7a9f18ba21fa
Status: Downloaded newer image for docker.io/mysql:5.7
2.3、 查看本地的镜像
- 在这里有两个镜像,一个是mysql,一个是hello-world 因为hello-world 在执行run命令时没有指定拉取的版本,就会默认拉取latest 这个版本
- 这里的MySQL 之所以比我们之前下载的mysql大,是因为这个mysql镜像里面不仅仅只有mysql 它还包含了mysql运行说需要的环境。而这些环境一般是公用的环境,当有其他镜像需要这些环境的时候,就会直接从mysql镜像里面拿。
docker images # 使用docker images 查看本地所有的镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mysql 5.7 2c9028880e58 11 days ago 447 MB
docker.io/hello-world latest d1165f221234 2 months ago 13.3 kB
2.4、 查看某个镜像的元信息
docker inspect 2c9028880e58 # 后面的2c9028880e58 是镜像的id 可以通过docker images查看镜像id
2.5、 删除指定的本地镜像
方式一:docker rmi docker.io/hello-world:latest #通过名字加版本tag
方式二:docker rmi d1165f221234 # 通过镜像id
- 当使用名字进行删除的时候,必须指定镜像的tag。
- 当镜像正在运行的时候我们可以使用docker rmi 镜像id -f进行强制删除
docker rmi docker.io/hello-world:latest -f
Untagged: docker.io/hello-world:latest
Untagged: docker.io/hello-world@sha256:5122f6204b6a3596e048758cabba3c46b1c937a46b5be6225b835d091b90e46c
Deleted: sha256:d1165f2212346b2bab48cb01c1e39ee8ad1be46b87873d9ca7a4e434980a7726
3、docker容器常用命令
实际上是在Docker容器中运行一个精简版的centos系统
3.1、 docker run --name 容器名 -i -t 镜像id/镜像名:tag
- –name 是指定运行的容器的名,如果没有指定一个容器名,系统会自动分配
- -i 以交互模式运行,即以交互模式运行容器 常常与 -t一起使用
- -t 分配一个伪终端,即命令行,通常与-i 组合起来使用 -it
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker pull centos # 我们使用pull命令 拉取centos 这个镜像,这个centos是非常小的,是阉割版的
Using default tag: latest
Trying to pull repository docker.io/library/centos ...
成功拉取
下面运行这个centos 镜像
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker run --name mycentos -it 300e315adb2f
#仔细观察可以发现 [root@iz2zedg4ylq9iqtwm11wecz ~] 变成了[root@a46cbb0f35d5 /]
[root@a46cbb0f35d5 /]# #此时我们已经进入了容器里面的为伪终端
[root@a46cbb0f35d5 /]# ls #查看容器的目录
bin etc lib lost+found mnt proc run srv tmp var
dev home lib64 media opt root sbin sys usr
[root@a46cbb0f35d5 lib]# exit # 使用exit退出并关闭容器
exit
[root@iz2zedg4ylq9iqtwm11wecz ~]#
3.2、 docker ps 查看正在运行的容器
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3.3、 docker ps -a 查看运行过的所有容器
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a46cbb0f35d5 300e315adb2f "/bin/bash" 25 minutes ago Exited (0) 5 minutes ago mycentos
020108a4fad2 d1165f221234 "/hello" 12 hours ago Exited (0) 12 hours ago serene_torvalds
91443b60a463 d1165f221234 "/hello" 12 hours ago Created affectionate_morse
701317f765df d1165f221234 "/hello" 12 hours ago Created quirky_hawking
docker ps - q 只显示容器id
3.4、 docker start 容器的id/名字 运行指定的容器
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker start mycentos #启动mycentos这个容器
mycentos
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a46cbb0f35d5 300e315adb2f "/bin/bash" 31 minutes ago Up 7 seconds mycentos
[root@iz2zedg4ylq9iqtwm11wecz ~]#
3.5、 docker stop 容器的id/名字 停止指定的容器
docker stop mycentos
mycentos
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a46cbb0f35d5 300e315adb2f "/bin/bash" 34 minutes ago Exited (0) 8 seconds ago mycentos
020108a4fad2 d1165f221234 "/hello" 12 hours ago Exited (0) 12 hours ago serene_torvalds
91443b60a463 d1165f221234 "/hello" 12 hours ago Created affectionate_morse
701317f765df d1165f221234 "/hello" 12 hours ago Created quirky_hawking
3.6、 docker rm 容器的id/名字 删除指定的容器
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker rm 020108a4fad2 # 删除指定的容器
020108a4fad2
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a46cbb0f35d5 300e315adb2f "/bin/bash" 39 minutes ago Exited (0) 4 minutes ago mycentos
91443b60a463 d1165f221234 "/hello" 12 hours ago Created affectionate_morse
701317f765df d1165f221234 "/hello" 12 hours ago Created quirky_hawking
[root@iz2zedg4ylq9iqtwm11wecz ~]#
使用docker rm -f 强制删除一个容器,一般用于删除正在运行的容器
3.7、 docker rm -f $(docker ps -aq) 强制删除所有容器
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a #先查看目前拥有的容器
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
44a9acc4f0c8 centos "/bin/bash" 12 seconds ago Exited (0) 6 seconds ago affectionate_cori
9d745c025a4e centos "/bin/bash" 29 seconds ago Exited (0) 18 seconds ago infallible_boyd
a46cbb0f35d5 300e315adb2f "/bin/bash" 2 days ago Up 8 minutes mycentos
701317f765df d1165f221234 "/hello" 3 days ago Created
强制删除所有容器,相当于管道的操作
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker rm -f $(docker ps -aq)
44a9acc4f0c8
9d745c025a4e
a46cbb0f35d5
701317f765df
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3.8、以tomcat为例
- 拉取一个tomcat镜像,使用默认版本
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker pull tomcat
Using default tag: latest
Trying to pull repository docker.io/library/tomcat ...
latest: Pulling from docker.io/library/tomcat
d960726af2be: Pull complete
e8d62473a22d: Pull complete
8962bc0fad55: Pull complete
65d943ee54c1: Pull complete
da20b77f10ac: Pull complete
8669a096f083: Pull complete
e0c0a5e9ce88: Pull complete
f7f46169d747: Pull complete
42d8171e56e6: Pull complete
774078a3f8bb: Pull complete
Digest: sha256:10842dab06b5e52233ad977d4689522d4fbaa9c21e6df387d7a530e02316fb45
Status: Downloaded newer image for docker.io/tomcat:latest
- 查看这个镜像
可以发现这个镜像还是非常的大,但实际上的tomcat是没有这么大的,因为这个镜像里面不仅仅有tomcat、还有tomcat依赖的运行环境,因为镜像是分层的。后面会详解
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/tomcat latest c43a65faae57 12 days ago 667 MB
docker.io/mysql 5.7 2c9028880e58 2 weeks ago 447 MB
docker.io/centos latest 300e315adb2f 5 months ago 209 MB
- 启动并且访问这个容器
启动的时候可以看到默认的端口好为8080,tomcat的版本是9.0.
在浏览器中访问
通过主机ip地址和端口号8080进行访问,发现访问不了,是因为。我们运行的tomcat容器,不是直接运行在服务器(主机)上面的,他说运行在容器(docker容器是一个精简版的linux系统)里面的,这个占用的端口号是容器里面的端口号,并不是服务器的端口号,因此通过8080是无法访问到这个tomcat的。
因此我们需要进行端口映射,通过 -p 参数进行端口映射。就是将主机的端口映射到容器里面的端口。
关闭上次打开的tomcat容器,再次运行tomcat
docker run --name mytomcat -p 9800:8080 c43a65faae57
–name mytomcat 给启动的容器起一个名字
-p 9800:8080 端口映射 前面的是服务器(主机)的端口 :后面的是容器里面的端口 **
(注意:1、选择主机端口的时候要注意端口是否被占用,被占用就会映射失败。2、如果是阿里云服务器,还需要在官网上关闭9800这个端口号的防火墙,同时也要关闭服务器本身对这个端口号的防火墙。)**
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker run --name mytomcat -p 9800:8080 c43a65faae57
...
26-May-2021 11:22:38.648 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-8080"]
26-May-2021 11:22:38.751 INFO [main] org.apache.catalina.startup.Catalina.load Server initialization in [2157] milliseconds
26-May-2021 11:22:39.008 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service [Catalina]
26-May-2021 11:22:39.009 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/9.0.46]
26-May-2021 11:22:39.073 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
26-May-2021 11:22:39.165 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [413] milliseconds
^C26-May-2021 11:23:10.833 INFO [Thread-3] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
26-May-2021 11:23:10.853 INFO [Thread-3] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
26-May-2021 11:23:10.856 INFO [Thread-3] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
26-May-2021 11:23:10.903 INFO [Thread-3] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
再次访问tomcat,
-
前面启动tomcat容器是在前台运行的。
在控制台这里打印了很多tomcat的启动代码.当这个终端关闭时tomcat也会关闭 -
使用参数 -d 进行后台静默启动。(可以使镜像永久在后台运行)
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker run --name mytomcat -p 9800:8080 -d c43a65faae57 #运行之后我们依旧在终端的页面
9e9ab91f0ddbf54cb0108a66212f831f8e547e893b658a4baa9bcebbd5302c76
[root@iz2zedg4ylq9iqtwm11wecz ~]#
#查看容器可以发现 这个容器正在运行
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9ab91f0ddb c43a65faae57 "catalina.sh run" About a minute ago Up About a minute 0.0.0.0:9800->8080/tcp mytomcat
下面对容器常用命令进行复习
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker stop 9e9ab91f0ddb #停止容器
9e9ab91f0ddb
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9ab91f0ddb c43a65faae57 "catalina.sh run" 3 minutes ago Exited (143) 5 seconds ago mytomcat
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker start 9e9ab91f0ddb #启动容器
9e9ab91f0ddb
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9e9ab91f0ddb c43a65faae57 "catalina.sh run" 4 minutes ago Up 6 seconds 0.0.0.0:9800->8080/tcp mytomcat
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker rm -f 9e9ab91f0ddb #强制删除容器
9e9ab91f0ddb
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6.使用 docker logs 容器id 查看容器的运行日志
3.9、操作容器(进入容器执行一些操作)
注意:容器就是一个小型的linux系统
docker exec -it 55d9d2bda967 /bin/bash
这个命令就是进入容器,并打开一个容器里面的终端(命令窗口),我们可以在这个命令窗口执行命令
/bin/bash 就是打开一个终端命令窗口
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55d9d2bda967 c43a65faae57 "catalina.sh run" 30 seconds ago Up 29 seconds 0.0.0.0:9800->8080/tcp mytomcat
[root@iz2zedg4ylq9iqtwm11wecz ~]# docker exec -it 55d9d2bda967 /bin/bash
root@55d9d2bda967:/usr/local/tomcat#
注意容器里面的容器是阉割版的有很多命令都是没有的
#在容器里面查看 根目录的目录可以发现,它就是一个linux的目录
root@55d9d2bda967:/# cd /
root@55d9d2bda967:/# ls
bin dev home lib64 mnt proc run srv tmp var
boot etc lib media opt root sbin sys usr
3.10、docker cp 主机的路径:容器id :容器里面的路径 (将宿主机里面的文件复制到容器里面)
以下命令都要在宿主机中执行
将宿主机里面的文件复制到容器中
[root@iz2zedg4ylq9iqtwm11wecz ROOT]# docker cp index.jsp 55d9d2bda967:/usr/local/tomcat/webapps
[root@iz2zedg4ylq9iqtwm11wecz ROOT]# docker exec -it 55d9d2bda967 /bin/bash root@55d9d2bda967:/usr/local/tomcat# ls
BUILDING.txt NOTICE RUNNING.txt lib temp work
CONTRIBUTING.md README.md bin logs webapps
LICENSE RELEASE-NOTES conf native-jni-lib webapps.dist
root@55d9d2bda967:/usr/local/tomcat# cd webapps
root@55d9d2bda967:/usr/local/tomcat/webapps# ls
index.jsp
反之,将容器里面的文件复制到宿主机中 注意:后面有个点
[root@iz2zedg4ylq9iqtwm11wecz tmp]# docker cp 55d9d2bda967:/usr/local/tomcat/webapps/index.jsp .
[root@iz2zedg4ylq9iqtwm11wecz tmp]# ls
hsperfdata_root mysql.sock systemd-private-1834ff36204f4f2d946848661d4da1da-ntpd.service-CTDxLR
hsperfdata_www mysqlx.sock tmp.INpwCFw96T
index.jsp php-cgi-70.sock tmp.wc6ZL9XBpo
[root@iz2zedg4ylq9iqtwm11wecz tmp]#
4、数据卷(目录挂载)
注意:如果想要挂载整个目录,那么必须确保宿主主机的文件夹里的文件与容器的文件夹里面的文件一样。否则会挂载失败。
比如:需要挂载容器的etc文件夹的所有文件。
宿主主机挂载目录:/my/emqx/conf/etc
[root@iz2zedg4ylq9iqtwm11wecz etc]# pwd
/my/emqx/conf/etc
[root@iz2zedg4ylq9iqtwm11wecz etc]# ls
acl.conf certs emqx.conf lwm2m_xml plugins psk.txt ssl_dist.conf vm.args
[root@iz2zedg4ylq9iqtwm11wecz etc]#
容器挂载目录:/opt/emqx/etc
/opt/emqx/etc $ pwd
/opt/emqx/etc
/opt/emqx/etc $ ls
acl.conf emqx.conf plugins ssl_dist.conf
certs lwm2m_xml psk.txt vm.args
注意:两个目录的文件必须一样,文件内容可以不一样。因此,如果需要挂载一整个文件夹。那么一般是先运行一个容器,将需要挂载的文件夹通过docker cp命令复制到宿主主机中,然后再进行目录挂载。
4.1、使用数据卷
注意:在挂载目录的时候需要注意容器挂载的目录的读写权限,在不表明的情况下默认具有读写权限。
比如:-v /tmp/tomcat:/usr/local/tomcat/webapps:ro \ 只有读的权限
-v /tmp/tomcat:/usr/local/tomcat/webapps:rw \ 有读写的权限
#其中 '\' 是换行写
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# pwd
/tmp/tomcat
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# docker run \
> -p 9800:8080 \ #端口映射
> -v /tmp/tomcat:/usr/local/tomcat/webapps \ #目录挂载映射路径,-v 宿主主机路径:容器主机路径(假如不知道容器主机路径可以先启动容器使用,然后进入容器进行查看)
> -d c43a65faae57 #镜像id
1a04a362864b220ec466207b4cf14e13a5bbbfbb88bc6a4af3c235dc1394384b
[root@iz2zedg4ylq9iqtwm11wecz tomcat]#
4.2、验证挂载是否成功
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# docker exec -it 1a04a362864b /bin/bash
root@1a04a362864b:/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@1a04a362864b:/usr/local/tomcat# cd webapps
root@1a04a362864b:/usr/local/tomcat/webapps# touch 123.text
root@1a04a362864b:/usr/local/tomcat/webapps# ls
123.text
root@1a04a362864b:/usr/local/tomcat/webapps# exit
exit
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# ls
123.text
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# touch aaa.text
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# ls
123.text aaa.text
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# docker exec -it 1a04a362864b /bin/bash
root@1a04a362864b:/usr/local/tomcat# cd webapps
root@1a04a362864b:/usr/local/tomcat/webapps# ls
123.text aaa.text
root@1a04a362864b:/usr/local/tomcat/webapps# rm 123.text
root@1a04a362864b:/usr/local/tomcat/webapps# ls
aaa.text
root@1a04a362864b:/usr/local/tomcat/webapps# exit
exit
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# ls
aaa.text
[root@iz2zedg4ylq9iqtwm11wecz tomcat]#
**
提示:1、挂载可以是挂载一个文件,也可以挂载一个目录 。 2、在执行docker run -v 的时候可以同时挂载几个目录(可以写多个-v参数)比如:**
[root@iz2zedg4ylq9iqtwm11wecz tomcat]# docker run \
> -p 9800:8080 \ #端口映射
> -v /tmp/tomcat:/usr/local/tomcat/webapps \ #目录挂载映射路径,-v 宿主主机路径:容器主机路径(假如不知道容器主机路径可以先启动容器使用,然后进入容器进行查看)
> -v /tmp/tomcat1:/usr/local/tomcat/webapps1 \
> -v /tmp/tomcat2:/usr/local/tomcat/webapps2 \
> -d c43a65faae57 #镜像id
4.3、 通过docker inspect 容器id可以查到容器的元数据(查看容器的挂载目录和端口映射)
其中RW表示具有读写权限,RO表示具有读权限,可以在挂载目录的时候指定容器对宿主主机的目录具有那些权限