原创

docker提交容器成一个新的镜像commit和push,以及docker常用命令

docker自己提交配置好的容器,然后生成一个新的镜像,以后启动就以配置好的镜像作为模板启动

代码如下:

docker commit -a "author" -m "commit message"  容器id namespace/name:tag

如果想把镜像推到仓库里面去: 

--本地镜像素材原型,本地的images

--登录阿里云开发者平台,进入之后搜索容器镜像服务,即可进入阿里云镜像管理

--创建仓库镜像,命名空间;仓库名称;

--将镜像推送到registry

$ sudo docker login --username=username registry.cn-hangzhou.aliyuncs.com
$ sudo docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/ale/mytomcat9:[镜像版本号]
$ sudo docker push registry.cn-hangzhou.aliyuncs.com/ale/mytomcat9:[镜像版本号]

--公有云可以查询到

--查看详情


进入容器命令:

docker exec -it 容器id /bin/bash


启动添加容器数据卷:

docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

带权限:ro(readonly只读)

docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名

注意:Docker挂载主机目录Docker访问出现cannot open directory.:Permission denied

解决办法:在挂载目录后多加一个 --privileged=true参数即可


DockerFile添加容器数据卷

--根目录下创建mydocker文件夹并进入

mkdir mydocker
vi Dockerfile

--可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷

VOLUME["/dataVolumeContainer","dataVolumeContainer2","/dataVolumeContainer3"] 
说明:
    出于可移植和分享的考虑,用-v 主机目录:容器目录这种方法不能够直接在Dockerfile中实现
    由于宿主机目录是依赖于特定宿主机的,并不能够保证在所有的宿主机上都存在这样的特定目录

案例:

FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,------success1"
CMD /bin/bash

--File构建

docker build -f /mydocker/Dockerfile -t namespace/name .(有个小点)

--build后生成镜像   -   获得一个新镜像 namespace/name

--run容器

--本地的地址:通过docker inspect 容器id可以查看

--通过


查看容器详情:

docker inspect 容器id


正文到此结束
本文目录