一.docker容器数据卷

1.作用

用于容器数据持久化,以及容器间继承+数据共享.

2.添加数据卷的方式

<1>直接命令添加
	①docker run -it -v /宿主机绝对路径目录:/容器类目录  镜像名
		eg: docker run -it -v /mydata:/home/test centos
	②查看数据是否挂载成功:
		docker inspect 容器Id
		查看里面的hostConfig	
<2>dockerFile添加:
touch dockerFile
vi dockerFile
	#volumn test
		FROM centos
		VOLUMN ["/dataVolumnContainer1","/dataVolumnContain2"]
		CMD echo "success..."
		CMD /bin/bash

以上dockerFIle相当于:

docker run -it -v /host1:/dockerVolumnContainer1 -v /host3:/dockerVolumnContainer2 centos /bin/bash

二.dockerfile

1.是什么:是用来构建docker镜像的文件,是由一系列命令和参数构成的脚本。
2.构建三步骤:

①编写dockerfile
②docker build
③docker run

3.保留字指令

1>FROM: 基础镜像,当前镜像是基于哪个镜像
2>MAINTAINER: 镜像维护者的姓名和邮箱地址
3>RUN: 容器构建时需要运行的命令
4>EXPOSE: 当前容器对外暴露出的端口号
5>WORKDIR: 指定在创建容器后,终端默认登录进来的工作目录,一个落脚点
6>ENV: 用来在构建镜像过程中设置环境变量
7>ADD: 将宿主机目录下的文件拷贝进镜像并且会自动处理URL和解压tar压缩包
8>COPY: 类似ADD,复制宿主机目录文件到镜像
9>VOLUME: 容器数据卷,用于数据保存和持久化工作
10>CMD: 指定一个容器启动时要运行的命令,dockerfile中可以有多个CMD,但只有最后一个生效,CMD会被docker run 之后的参数替换
11>ENTRYPOINT:指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,都是在指定容器启动程序及参数
12>ONBUILD: 当构建一个被继承的dockerfile时运行命令,父镜像在被子镜像继承后父镜像的onbuild 被触发。

4.案例

coreelec docker 仓库 docker cd_coreelec docker 仓库


5.dockerfile中的ENTRYPOINT和CMD的区别

以ENTRYPOINT结尾的dockerfile生成的镜像,docker run 运行镜像时,后面添加的参数会被追加,而以CMD结尾的dockerfile生成的镜像,则会覆盖CMD命令。

6.制作tomcat9的镜像

coreelec docker 仓库 docker cd_docker_02


启动制作好的镜像,-d后台运行,-v容器卷:

coreelec docker 仓库 docker cd_coreelec docker 仓库_03

三.镜像推送到阿里云

  1. 登录阿里云Docker Registry
$ sudo docker login --username=plcxtch1234 
 用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
  1. 从Registry中拉取镜像
$ sudo docker pull /chenhaotest/my_chenhao_repo:[镜像版本号]
  1. 将镜像推送到Registry
$ sudo docker login --username=plcxtch1234 
 $ sudo docker tag [ImageId] /chenhaotest/my_chenhao_repo:[镜像版本号]
 $ sudo docker push /chenhaotest/my_chenhao_repo:[镜像版本号]
 请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
  1. 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。
 推送速度将得到提升并且将不会损耗您的公网流量。如果您使用的机器位于VPC网络,请使用 
  作为Registry的域名登录,并作为镜像命名
 空间前缀。
  1. 示例
使用"docker tag"命令重命名镜像,并将它通过专有网络地址推送至Registry。

 $ sudo docker images
 REPOSITORY                                                         TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
 		/acs/agent                                    0.7-dfb6816         37bb9c63c8b2        7 days ago          37.89 MB
 $ sudo docker tag 37bb9c63c8b2 /acs/agent:0.7-dfb6816
 使用"docker images"命令找到镜像,将该镜像名称中的域名部分变更为Registry专有网络地址。

 $ sudo docker push /acs/agent:0.7-dfb6816