Docker是基于Linux容器的虚拟化技术,基于go语言开发,生态是非常不错的,通过对应用组件的封装、
分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运
行环境能够做到一次封装,到处运行。
传统虚拟技术需要虚拟出一个系统才能运行,Linux容器只是对进程进行了隔离,使得每个进程看起来都运行在一个单独的系统。不同的容器可以共用相同的库和内核,而且做到互不影响,所以容器本身没有内核,也更轻量级。
Docker的两个核心概念为:容器和镜像。在后续的使用中会逐步了解
一、Docker安装
官方文档:https://docs.docker.com/engine/install/
还是基于CentOS操作系统进行安装
1.安装
安装前先移除,防止有缓存:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安装yum-utils并配置镜像:
yum install -y yum-utils
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 速度过慢,可以使用阿里镜像
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装docker:
yum install -y docker-ce docker-ce-cli containerd.io
等待下载完后,启动docker:
systemctl start docker
2.阿里云镜像加速
由于docker中容器依赖镜像,镜像存放在仓库中,使用时需要拉取到本地,可以是私有,也可以是公开,最大的开放型镜像仓库为:https://hub.docker.com/
因为是国外的仓库,拉取速度会受影响,可以通过阿里云镜像加速
2.1 进入阿里云
进入网站:https://cr.console.aliyun.com/后,进入控制台
:
2.2 容器镜像服务
鼠标移动到左上角,进入容器镜像服务
:
2.3 镜像加速器
选择镜像工具
-镜像加速器
:
按照教程执行命令:
3.helloworld
启动docker后,官方提供了一个测试镜像,执行命令:
docker run hello-world
输出了一些信息:
4.镜像仓库
上面提到过,目前最大的镜像公开仓库:https://hub.docker.com/
二、docker命令
通过docker命令,可以初步了解什么是镜像,什么是容器
1.帮助命令
命令 | 描述 |
---|---|
docker version | 查看docker的版本信息 |
docker info | 查看docker详细的信息 |
docker --help | docker的帮助命令,可以查看到相关的其他命令 |
2.镜像命令
命令 | 描述 |
---|---|
docker images | 列出本地主机上的镜像 |
docker search 镜像名 | 从 docker hub 上搜索镜像 |
docker pull 镜像名 | 从docker hub 上拉取镜像 |
docker rmi 镜像名称 | 删除本地镜像 |
2.1 docker images
docker images
是常用命令,可选参数为:
参数 | 描述 |
---|---|
-a | 列出本地所有的镜像 |
-q | 只显示镜像ID |
--digests | 显示镜像的摘要信息 |
--no-trunc | 显示完整的镜像信息,默认信息过多会进行截取 |
2.2 docker search
docker search
是从docker hub上搜索镜像,下面是我在网页上搜索tomcat
的结果:
命令的可选参数为:
参数 | 描述 |
---|---|
-f | 过滤条件 docker search -f STARS=5 tomcat :表示搜索stats>=5的tomcat镜像 |
--limit | 分页显示 |
--no-trunc | 显示完整信息 |
2.3 docker pull
docker pull
从docker hub上拉取镜像到本地:
2.4 docker rmi
docker rmi
删除一个或多个镜像
参数 | 描述 |
---|---|
-f | 强制删除 |
3.容器命令
命令 | 描述 |
---|---|
docker run 镜像名 | 创建并启动一个容器 |
docker ps | 列举容器,默认只展示运行中的 |
docker start 容器名/容器id | 启动容器 |
docker restart 容器名/容器id | 重启容器 |
docker stop 容器名/容器id | 停止容器 |
docker kill 容器名/容器id | 强制停止容器 |
docker rm 容器id | 删除容器 |
3.1 docker run
docker run
每次执行,会产生一个新的容器并运行该容器,支持的参数:
参数 | 描述 |
---|---|
--name | 指定容器名称 |
-d | 守护式容器,后台运行 |
-it | -i为交互式模式运行,-t为重新分配一个伪终端,两者通常一起使用 |
-P | 随机端口映射 |
-p | 指定端口映射关系 |
-v | 指定数据卷映射关系 |
--volumes-from | 指定数据卷容器 |
交互式启动:
-bash-4.2# docker run -p 1234:8080 -it tomcat /bin/bash
root@643f11414f56:/usr/local/tomcat#
交互式退出方式:
-
exit
:退出并停止容器 -
ctrl+q+p
:退出交互式,容器后台运行
3.2 docker ps
docker ps
用于列举容器,默认只展示运行中的,支持的参数为:
参数 | 描述 |
---|---|
-a | 展示所有的容器 |
-l | 展示最近创建的容器 |
-n | 展示最近n个创建的 |
-q | 只展示容器编号 |
--no-trunc | 展示完整信息 |
3.3 docker rm
docker rm
支持一次性删除多个容器,后面跟上多个容器id
:
docker rm -f 22 64
docker rm -f $(docker ps -qa)
docker ps -a -q | xargs docker rm
4.其他命令
命令 | 描述 |
---|---|
docker logs 容器id | 查看容器执行日志 |
docker inspect 容器id | 查看容器详细信息 |
docker exec 容器id 命令 | 进入容器,打开新的终端执行命令 |
docker attach 容器id | 进入容器启动命令的终端 |
docker cp 容器id:容器内路径 目的地路径 | 复制容器的文件到宿主机中 |
4.1 docker logs
查看终端执行日志:
-bash-4.2# docker logs -t -f --tail 3 d4
2022-08-30T04:20:13.578533223Z 30-Aug-2022 04:20:13.577 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet engine: [Apache Tomcat/10.0.14]
2022-08-30T04:20:13.604351571Z 30-Aug-2022 04:20:13.601 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"]
2022-08-30T04:20:13.646282364Z 30-Aug-2022 04:20:13.643 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [219] milliseconds
2022-08-30T04:23:57.855531488Z 30-Aug-2022 04:23:57.843 INFO [Thread-2] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
2022-08-30T04:23:57.855560212Z 30-Aug-2022 04:23:57.852 INFO [Thread-2] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
2022-08-30T04:23:57.860806108Z 30-Aug-2022 04:23:57.857 INFO [Thread-2] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
2022-08-30T04:23:57.877280602Z 30-Aug-2022 04:23:57.867 INFO [Thread-2] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
4.2 docker inspect
4.3 docker exec
docker exec
用于容器内执行命令,支持-it
进入交互式模式,并且是新创建一个终端,所以退出并不会导致容器停止
-bash-4.2# docker exec -it d7 /bin/bash
root@d7b4af8ba1ff:/usr/local/tomcat# exit
exit
4.4 docker attach
docker attach
是进入启动容器的终端,退出会导致容器停止
-bash-4.2# docker attach d7
^C30-Aug-2022 04:38:01.370 INFO [Thread-2] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
30-Aug-2022 04:38:01.387 INFO [Thread-2] org.apache.catalina.core.StandardService.stopInternal Stopping service [Catalina]
30-Aug-2022 04:38:01.394 INFO [Thread-2] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
30-Aug-2022 04:38:01.403 INFO [Thread-2] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
4.5 docker cp
docker cp
用于将文件复制到宿主机内:
-bash-4.2# docker exec -it d7 /bin/bash
root@d7b4af8ba1ff:/usr/local/tomcat# cd /root
root@d7b4af8ba1ff:~# touch 123.txt
root@d7b4af8ba1ff:~# exit
exit
-bash-4.2# docker cp d7:/root/123.txt /root
-bash-4.2# ls
123.txt
三、镜像
镜像包含着软件运行环境和基于运行环境开发的软件,是包含了运行某个软件的所有内容,镜像使用UnionFS文件系统,编程语言来理解就是类继承,该文件是可以被继承的,即镜像内部拥有可以分层很多个文件,只是对外表现成一个文件。基于基础镜像,可以制作各种各样的应用镜像
镜像是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层通常被称为容器层,容器层之下的都叫镜像层。
制作镜像有两种方式:
- 基于容器制作
- 基于其他镜像,构建DockerFile制作
1.基于容器制作:docker commit
基于容器制作比较简单,当我们启动一个容器后,会对容器内部进行一些处理,如写入一些文件等等,如果想要创建另一个容器,同时也能拥有这些文件,那么就可以基于容器制作镜像,命令为:
docker commit -m="要提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名:[标签名]
目前有一个tomcat的本地镜像:
1.1 创建容器并添加文件
创建启动容器,添加文件:
-bash-4.2# docker run -it -p 1234:8080 tomcat /bin/bash
root@9d6740173a6c:/usr/local/tomcat# cd webapps
root@9d6740173a6c:/usr/local/tomcat/webapps# mkdir ROOT
root@9d6740173a6c:/usr/local/tomcat/webapps# cd ROOT
root@9d6740173a6c:/usr/local/tomcat/webapps/ROOT# echo hello >> index.html
启动tomcat:
-bash-4.2# docker exec -it 9d /bin/bash
root@9d6740173a6c:/usr/local/tomcat# cd bin/
root@9d6740173a6c:/usr/local/tomcat/bin# ls
bootstrap.jar commons-daemon-native.tar.gz digest.sh shutdown.sh version.sh
catalina-tasks.xml commons-daemon.jar makebase.sh startup.sh
catalina.sh configtest.sh migrate.sh tomcat-juli.jar
ciphers.sh daemon.sh setclasspath.sh tool-wrapper.sh
root@9d6740173a6c:/usr/local/tomcat/bin# ./startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/openjdk-11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
访问效果:
1.2 制作镜像
-bash-4.2# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d6740173a6c tomcat "/bin/bash" 9 minutes ago Up 9 minutes 0.0.0.0:1234->8080/tcp, :::1234->8080/tcp inspiring_tereshkova
-bash-4.2# docker commit -m="add index.html" -a="aruba" 9d tomcat-hello:1.0
sha256:ba5599c90061b73afe32fa7b44b668a4797f1425d69fcd090ea822522723e5b5
查看镜像:
-bash-4.2# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
tomcat-hello 1.0 ba5599c90061 57 seconds ago 680MB
tomcat latest fb5657adc892 8 months ago 680MB
1.3 使用镜像
基于刚刚制作的镜像,创建启动容器:
-bash-4.2# docker run -it -p 1244:8080 tomcat-hello:1.0 /bin/bash
root@e7cc44f00318:/usr/local/tomcat# ./bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /usr/local/openjdk-11
Using CLASSPATH: /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:
Tomcat started.
访问效果:
2.基于DockerFile制作镜像
DockerFile
就是一个包含命令和参数的脚本,基于基础镜像,构建一个新的镜像
命令 | 描述 |
---|---|
FROM | 基础镜像 |
MAINTAINER | 维护者、作者 |
RUN | 容器构建时需要运行的命令 |
EXPOSE | 当前容器对外暴露的端口 |
WORKDIR | 终端默认登录进来的工作目录 |
ENV | 设置环境变量 |
ADD | 将宿主机目录下的文件拷贝进镜像,会自动处理URL和解压tar压缩包 |
COPY | 拷贝文件和目录到镜像中 |
VOLUME | 容器数据卷 |
CMD | 指定一个容器启动时要运行的命令,只有一条会生效,并会被docker run后跟的命令代替 |
ENTRYPOINT | 指定一个容器启动时要运行的命令 |
ONBUILD | 当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发 |
每执行一条命令,都会生成一层新的镜像层
hub上拉取下来的centos镜像不带vim编辑器,我们基于该镜像制作一个新的,并带上vim
2.1 准备工作(yum源问题)
2.1.1 拉取centos
docker pull centos
2.1.2 yum源问题
我这边拉取到的是centos8,centos7可能是没有问题的,创建和启动一个centos8容器后,使用yum
下载一直报下载不到repo
源:
[root@19bad3f699e6 yum]# yum install wget
Failed to set locale, defaulting to C.UTF-8
CentOS Linux 8 - AppStream 48 B/s | 38 B 00:00
Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist
所以DockerFile
构建时,使用yum
也会报错
尝试手动解除repo中的baseUrl
注释,默认baseUrl
是被注释的
cat /etc/yum.repos.d/CentOS-Linux-AppStream.repo
# CentOS-Linux-AppStream.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
通过vi
将baseUrl
的注释去除,并且注释掉mirrorlist
:
vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo
# CentOS-Linux-AppStream.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?#release=$releasever&arch=$basearch&repo=AppStream&infra=$infra
baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
再次报错,不过这次可以看到是哪个地址请求不到了:
进入http://mirror.centos.org/centos/8/后,发现并没有AppStream
目录:
2.1.3 解决yum源问题
在http://mirror.centos.org/centos/中查找,发现
AppStream
和BaseOS
搬到了http://mirror.centos.org/centos/8-stream/下:
需要将repo
文件中的$releasever
换成8-stream
:
vi CentOS-Linux-BaseOS.repo
vi CentOS-Linux-AppStream.repo
CentOS-Linux-BaseOS.repo
修改后:
# CentOS-Linux-BaseOS.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
CentOS-Linux-AppStream.repo
修改后:
# CentOS-Linux-AppStream.repo
#
# The mirrorlist system uses the connecting IP address of the client and the
# update status of each mirror to pick current mirrors that are geographically
# close to the client. You should use this for CentOS updates unless you are
# manually picking other mirrors.
#
# If the mirrorlist does not work for you, you can try the commented out
# baseurl line instead.
[appstream]
name=CentOS Linux $releasever - AppStream
mirrorlist=http://mirrorlist.centos.org/?release=8-stream&arch=$basearch&repo=AppStream&infra=$infra
#baseurl=http://mirror.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
再次尝试安装wget
,即可成功下载安装了
2.1.4 将容器打包镜像
后面centos镜像就使用该容器的
-bash-4.2# docker commit -m="yum" -a="aruba" ff centos-yum:1.0
2.2 DockerFile文件编写
vi dockerfile
内容为:
# 基础镜像
FROM centos-yum:1.0
MAINTAINER aruba
# 申明一个变量
ENV path /usr/local
# 设置工作目录
WORKDIR $path
# 安装vim
RUN yum install -y vim
EXPOSE 8080
# 最后执行命令
CMD /bin/bash
最后加上CMD /bin/bash
后,如果创建容器时不指定
后面的命令,那么会自动执行CMD
命令进入虚拟终端
2.3 构建镜像
语法:docker build -f dockerfile名称 -t 新建的镜像名:TAG .
docker build -f dockerfile -t centos-vim:1.0 .
最后成功创建的信息:
创建启动容器,已经可以使用vim
了:
-bash-4.2# docker run -it centos-vim:1.0
[root@56771cf32cbb local]# vim 1.txt
四、数据卷
前面我们了解到,容器启动是在镜像层上添加了一个容器层,拥有独立的进程,也拥有独立的数据存储,一旦容器不制作成镜像就被删除,那么原先容器内部的数据也会删除
数据卷打通了宿主机和容器之间的桥梁,可以将目录或文件挂载到一个或多个容器中,实现数据的持久化和容器间共享
1. 数据卷使用
1.1 创建容器
创建容器时,指定数据卷映射,语法为:
docker run -it -v /宿主机绝对路径:/容器内目录[:ro] 镜像名
[:ro]
为可选项,表示只读
在宿主机创建文件夹,并映射到容器中:
-bash-4.2# mkdir shared
-bash-4.2# docker run -it -v ./shared:/root/c-shared centos-vim:1.0
docker: Error response from daemon: create ./shared: "./shared" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed. If you intended to pass a host directory, use absolute path.
See 'docker run --help'.
-bash-4.2# docker run -it -v /root/shared:/root/c-shared centos-vim:1.0
可以通过docker inspect
中查找到数据卷信息:
1.2 容器内目录创建文件
在容器内目录
创建一个文件:
[root@1576b2c30b88 c-shared]# cd /root/c-shared/
[root@1576b2c30b88 c-shared]# echo 123 >> a.txt
查看宿主机中文件内容:
-bash-4.2# cd /root/shared
-bash-4.2# cat a.txt
123
1.3 宿主机修改文件内容
在宿主机中将文件内容修改:
-bash-4.2# vi a.txt
-bash-4.2# cat a.txt
123
abc
在容器内,查看文件内容:
[root@1576b2c30b88 c-shared]# cat a.txt
123
abc
1.4 删除容器
上面两个例子说明了,无论是在容器内操作数据卷,还是在宿主机内操作,数据都是同步的,接下来将容器删除:
-bash-4.2# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1576b2c30b88 centos-vim:1.0 "/bin/sh -c /bin/bash" 6 minutes ago Exited (130) 7 seconds ago reverent_bhabha
56771cf32cbb centos-vim:1.0 "/bin/sh -c /bin/bash" 42 minutes ago Up 42 minutes 8080/tcp sad_yonath
19bad3f699e6 centos "/bin/bash" 2 hours ago Exited (1) 48 minutes ago flamboyant_kalam
-bash-4.2# docker rm 15
15
宿主机内的文件还是存在的:
-bash-4.2# ls
a.txt
-bash-4.2# cat a.txt
123
abc
2. 构建镜像指定数据卷
除了在创建容器时,指定数据卷外,还可以在DockerFile
构建镜像时,指定数据卷,
2.1 构建镜像
dockerfile2文件内容:
FROM centos-vim:1.0
MAINTAINER aruba
VOLUME ["/root/shared2"]
CMD /bin/bash
构建镜像:
docker build -f dockerfile2 -t centos-share:1.0 .
2.2 创建启动容器
docker run -it --name aruba-centos centos-share:1.0
此时查看容器的数据卷信息:
是映射到了宿主机上的一个随机目录/var/lib/docker/volumes/59365ccb1af478f0c6611d8a36ac1518f9b8da8f2330e416ba197d023260e78f/_data
,并且每次创建新的容器,都会产生一个新的随机目录
2.3 数据卷中创建文件
我们在容器数据卷中创建一个文件:
[root@4553615bd221 local]# cd /root/shared2/
[root@4553615bd221 shared2]# touch b.txt
宿主机中查看:
-bash-4.2# cd /var/lib/docker/volumes/59365ccb1af478f0c6611d8a36ac1518f9b8da8f2330e416ba197d023260e78f/_data
-bash-4.2# ls
b.txt
2.3 删除容器
-bash-4.2# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4553615bd221 centos-share:1.0 "/bin/sh -c /bin/bash" 7 minutes ago Exited (130) 6 seconds ago aruba-centos
d5f613aab62c centos-vim:1.0 "/bin/sh -c /bin/bash" 24 minutes ago Up 24 minutes 8080/tcp vibrant_hofstadter
56771cf32cbb centos-vim:1.0 "/bin/sh -c /bin/bash" About an hour ago Up About an hour 8080/tcp sad_yonath
19bad3f699e6 centos "/bin/bash" 3 hours ago Exited (1) About an hour ago flamboyant_kalam
-bash-4.2# docker rm 45
45
宿主机中的文件还是存在的:
-bash-4.2# ls
b.txt
3. 数据卷容器
如果多个容器要共用一个数据卷,一个个在创建时进行手动指定映射比较繁琐,一个容器如果使用了数据卷,那么它就是一个数据卷容器,其他容器可以直接指定数据卷容器来实现共用
3.1 创建数据卷容器
基于上面的数据卷镜像,重新创建一个:
docker run -it --name aruba-centos centos-share:1.0
3.2 --volumes-from容器关联
创建另外两个容器,使用--volumes-from
关联上该数据卷容器:
docker run -it --name aruba-centos2 --volumes-from aruba-centos centos-share:1.0
docker run -it --name aruba-centos3 --volumes-from aruba-centos centos-share:1.0
3.3 数据卷中创建文件
创建的三个容器都有/root/shared2
目录,随便找个容器进行文件的创建:
[root@86df03edebaf usr]# cd /root/shared2/
[root@86df03edebaf shared2]# touch c.txt
其他容器中也能够看到刚刚创建的文件:
[root@ca9f28d72e9e local]# cd /root/shared2/
[root@ca9f28d72e9e shared2]# ls
c.txt
3.4 删除数据卷容器
将一开始创建的数据卷容器删除:
-bash-4.2# docker rm 7b
7b
-bash-4.2# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
86df03edebaf centos-share:1.0 "/bin/sh -c /bin/bash" 3 minutes ago Up 3 minutes 8080/tcp aruba-centos3
ca9f28d72e9e centos-share:1.0 "/bin/sh -c /bin/bash" 4 minutes ago Up 4 minutes 8080/tcp aruba-centos2
d5f613aab62c centos-vim:1.0 "/bin/sh -c /bin/bash" 35 minutes ago Up 35 minutes 8080/tcp vibrant_hofstadter
56771cf32cbb centos-vim:1.0 "/bin/sh -c /bin/bash" About an hour ago Up About an hour 8080/tcp sad_yonath
19bad3f699e6 centos "/bin/bash" 3 hours ago Exited (1) About an hour ago flamboyant_kalam
其他的容器还依然存在着数据卷:
[root@86df03edebaf shared2]# ls
c.txt
以上为Docker入门操作,主要包含Docker的安装,Docker命令,镜像拉取,自定义镜像,容器操作,数据卷内容