*****Docker操作基本流程

                         

        docker基本命令:

                docker images:查看docker镜像仓库(images repository)

                docker build -f [dockerfile] -t [输出的文件名称] .   :通过dockerfile创建自定义镜像

                docker ps:查看docker启动中的容器

                docker ps -a:查看docker所有的容器

                docker run:从images —>创建成—>contain

                docker start: 启动已存在的容器

                docker stop: 停止启动的容器

                docker rm:删除存在的容器

                docker rmi:删除仓库中的镜像

                docker attach:进入容器内部

1. Dockerfile 编写规则

        1. 指令大小写不敏感,为了区分习惯上用大写
        2. Dockerfile 非注释行第一行必须是 FROM
        3. 文件名必须是 Dockerfile
        4. Dockerfile 指定一个专门的目录为工作空间
        5. 所有引入映射的文件必须在这个工作空间目录下
        6. Dockerfile 工作空间目录下支持隐藏文件(.dockeringore)
        7. (.dockeringore)作用是用于存放不需要打包导入镜像的文件,根目录就是工作空间目录
        8. 每一条指令都会生成一个镜像层,镜像层多了执行效率就慢,能写成一条指定的就写成一条

2. Dockerfile构建过程

      构建一个新镜像,我们可以大致分为三个步骤:编写Dockerfile文件 > docker build > docker run  

3. Dockerfile基本命令

FROM			指定基础镜像
MAINTAINER		指定作者
RUN				执行参数中定义的命令,构建镜像时需要的命令
EXPOSE			向容器外部公开的端口号
WORKDIR			设置容器内默认工作目录
USER			指定用户
ENTROYPOINT		指定一个容器启动时运行的命令
ENV				设置环境变量
ADD|COPY		复制文件到镜像中
VOLUME			容器数据卷,向镜像创建的容器添加卷
CMD				容器启动时要运行的命令,可以有多个,但只有最后一个生效

        Dockerfile的构建过程就是build的执行过程。

        在Dockerfile编写完成之后,通过docker build命令的方式生成镜像images,下一步再通过docker run进行容器启动,注:不能用docker start的方式进行启动

        docker run:是通过镜像images创建一个新的镜像

        docker start:是启动已存在的contain容器

        注:contain容器不等于image镜像

1.把当前目录和子目录当做上下文传递给docker服务,命令最后的点表示当前上下文。
2.从当前目录(不包括子目录)找到Dockerfile文件,如果不指定文件,必须是此文件名。
3.检查docker语法。
4.从基础镜像运行一个容器。
5.执行指令,修改容器,如上面操作添加数据卷,修改首页。
6.对修改后的容器提交一个新的镜像层,也可叫做中间层镜像。
7.针对中间层生成的镜像,运行新的容器。
8.重复执行修改容器、提交镜像、运行容器指令,直到所有指令执行完成。

*****DOCKER未知疑问:

                   

         启动80转发80端口时,可以正常浏览器访问;但是80转发1000端口无法正常访问

    CentOS容器启动后,会立刻退出:

        原因排查:

        那么如何解决呢,其实很简单。
        通过docker run -itd 镜像名/id
        就可以后台启动centos且不会自动停止了。
        原因是什么呢:
-it选项是以交互形式运行,如果只是以交互形式运行,会进入到容器的shell。之后输入exit退出shell,会连带着将容器也停止掉。也可以在容器shell里以快捷建ctrl+P+Q形式退出容器shell,此时并不会把容器停止。这也是一种方法但是太过麻烦。


-d选项是以后台形式运行容器。


        那么-itd就是以后台交互的形式运行容器,并不会直接跳到容器的shell再退出。

        此时可以成功启动,通过docker attach可以进入容器

    容器卡死时

        当进不去容器bash交互界面时:docker exec -it 容器 sh,用此方式进入bash的子sh。

    容器操作

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐