Table of Contents

一、数据管理

1. 容器数据卷

数据卷是一个可供一个或多个容器使用的特殊目录,它绕过UFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用
  • 数据卷 的修改会立马生效
  • 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

数据卷用于保存容器的一些有用数据,避免因为容器的删除导致数据的删除。

docker volume 数据卷操作

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz ~]$ sudo docker volume --help

Usage:  docker volume COMMAND

Manage volumes

Commands:
  create      Create a volume
  inspect     Display detailed information on one or more volumes
  ls          List volumes
  prune       Remove all unused local volumes
  rm          Remove one or more volumes

Run 'docker volume COMMAND --help' for more information on a command.

创建一个数据卷

1
2
3
4
5
$ docker volume create my-vol
$ docker volume ls

DRIVER              VOLUME NAME
local               my-vol

查看一个数据卷

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz ~]$ sudo docker volume inspect my-vol
[
    {
        "CreatedAt": "2021-10-25T14:49:15+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/my-vol/_data",
        "Name": "my-vol",
        "Options": {},
        "Scope": "local"
    }
]

启动一个挂载数据卷的容器

在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷

下面创建一个名为 web 的容器,并加载一个 数据卷 到容器的 /usr/share/nginx/html 目录。

1
2
3
4
5
$ docker run -d -P \
    --name web \
    # -v my-vol:/usr/share/nginx/html \
    --mount source=my-vol,target=/usr/share/nginx/html \
    nginx:alpine

查看该web容器的信息

1
$ docker inspect web

image-20211025145948023

数据卷可以具名和匿名挂载

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker 不会在容器被删除后自动删除 数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的 数据卷。如果需要在删除容器的同时移除数据卷。可以在删除容器的时候使用 docker rm -v 这个命令。

二、DockerFile

img

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
FROM		    # 基础镜像,一切从这里开始构建
MAINTAINER		# 镜像是谁写的,姓名+邮箱
RUN			   	# 镜像构建的时候需要运行的命令
ADD				# 步骤:tomcat镜像,这个tomcat压缩包!添加内容
WORKDIR			# 镜像的工作目录
VOLUME			# 挂载的目录
EXPOSE			# 保留端口配置
CMD				# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT		# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD			# 当构建一个被继承DockerFile这个时候就会运行 ONBUILD 的指令,触发指令
COPY			# 类似ADD,将我们文件拷贝到镜像中
ENV				# 构建的时候设置环境变量

构建一个自己的镜像

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# dockerfile-centos
FROM centos
MAINTAINER firefoxking<1419894578@qq.com>

ENV MYPATH /usr/local
WORKDIR $MYPATH

RUN yum -y install vim
RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH
CMD echo "-----end------"
CMD /bin/bash
1
2
Successfully built 633e501479c9
Successfully tagged mycentos:0.1

运行对应的容器

1
2
3
4
[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz dockerfileDir]$ sudo docker run -it mycentos:0.1
[root@be556db2daaa local]# pwd
/usr/local
[root@be556db2daaa local]# 

同时增加了vim、网络相关的命令。

三、发布自己的镜像

1
2
3
4
5
6
7
8
9
[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz dockerfileDir]$ sudo docker login -u firefoxking
[sudo] password for user-for-dockerStudy: 
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz dockerfileDir]$ 
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
$ docker tag mycentos:0.1 firefoxking/mycentos:0.1

[user-for-dockerStudy@izuf6adsdfwblstgm2jy8sz dockerfileDir]$ sudo docker image ls
REPOSITORY             TAG       IMAGE ID       CREATED          SIZE
firefoxking/mycentos   0.1       633e501479c9   25 minutes ago   318MB
mycentos               0.1       633e501479c9   25 minutes ago   318MB
nginx01                v3        c51ba30bb70e   3 days ago       133MB
nginx01                v2        9eacd5a97dc7   3 days ago       133MB
nginx                  latest    87a94228f133   13 days ago      133MB
ubuntu                 18.04     5a214d77f5d7   3 weeks ago      63.1MB
hello-world            latest    feb5d9fea6a5   4 weeks ago      13.3kB
centos                 latest    5d0da3dc9764   5 weeks ago      231MB
nginx                  alpine    513f9a9d8748   6 weeks ago      22.9MB
portainer/portainer    latest    580c0e4e98b0   7 months ago     79.1MB

$ docker push firefoxking/mycentos:0.1

$ docker search firefoxking

NAME                   DESCRIPTION   STARS     OFFICIAL   AUTOMATED
firefoxking/mycentos                 0