一.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.案例
5.dockerfile中的ENTRYPOINT和CMD的区别
以ENTRYPOINT结尾的dockerfile生成的镜像,docker run 运行镜像时,后面添加的参数会被追加,而以CMD结尾的dockerfile生成的镜像,则会覆盖CMD命令。
6.制作tomcat9的镜像
启动制作好的镜像,-d后台运行,-v容器卷:
三.镜像推送到阿里云
- 登录阿里云Docker Registry
$ sudo docker login --username=plcxtch1234
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
- 从Registry中拉取镜像
$ sudo docker pull /chenhaotest/my_chenhao_repo:[镜像版本号]
- 将镜像推送到Registry
$ sudo docker login --username=plcxtch1234
$ sudo docker tag [ImageId] /chenhaotest/my_chenhao_repo:[镜像版本号]
$ sudo docker push /chenhaotest/my_chenhao_repo:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
- 选择合适的镜像仓库地址
从ECS推送镜像时,可以选择使用镜像仓库内网地址。
推送速度将得到提升并且将不会损耗您的公网流量。如果您使用的机器位于VPC网络,请使用
作为Registry的域名登录,并作为镜像命名
空间前缀。
- 示例
使用"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