Container 容器是一种基础工具, 泛指任何容纳其他物品的工具, 可以部分或者完全封闭,被用于容纳,储存, 运输物品, 物体可以放置在容器中, 而容器可以保护内容物

1 Docker Objects: images, containers, networkers,volumes, plugins

2 基础环境

64位cpu, 内核版本3.1以上, linux支持控制组(Cgroups)和名称空间(namespaces) centos6 也可以使用docker, 不过有极大的不稳定性

3 docker默认的配置文件在/etc/docker/damon.json

dokcer镜像加速

docker.cn

阿里云

中国科技大学

4 docker常用命令

docker version 查看docker版本,

docker info 查看docker的详细信息

docker search 在指定的源搜索镜像   eg. docker search nginx

docker pull 拉取镜像   eg. docker pull nginx:alpine 拉取nginx最基本的版本

docker images 列出本地的所有镜像

docker image rm 删除镜像

docker container ls 列出正在运行的容器 等价于 docker ps, 这个命令只显示处于正在运行状态的容器, -a, 显示所有容器

docker run 运行容器   eg. docker run  -it busybox:latest

docker container start -a -i <name> 启动容器

docker container rm <name> 删除容器, 只能删除运行状态为停止状态的容器

docker inspect : 获取容器/镜像的元数据。

docker container exec <name> 进入容器

docker commit 制作镜像

docker tag 管理标签 eg. docker tag 141b7fb4ff9f lwf/ww:v-01

docker post <容器名称> 查询容器端口映射

docker run -p <ip>:<port>:<containerport>, 将容器指定的端口暴露出去

docker run --name b2 --network container:b1 -it busybox 表示共享b1的网络空间, 正常的两个容器ip是不同的, 这样查看两个容器的ip是相同的,其他的名称空间 都是隔离的共享IPC,例子, 同一个主机上的两个进程

docker run --name b3 --network host -it --rm busybox 共享宿主机的网络名称空间

5 存储卷(数据脱离容器声明周期)(volume)

docker 自己管理

docker run --name b4 -it -v /data busybox, 指定容器内的卷位置, 可以使用docker inspect <containerName>查看容器详细信息, 此位置与宿主机目录绑定, 操作任何一个都是影响其他一个,

docker目录与宿主机目录都明确指定(绑定挂载卷)

docker run --name b5 --rm -it -v /lwf/volume/b5:/data busybox 将容器的/data 目录与宿主机/lwf/volume/b5建立关系

6 Dockerfile

语法格式

format

#Comment

# INSTR UCTION arguments指定约定俗称使用大写, 但是对大小写不敏感

第一个非注释行必须用FROM开始,

1 得有一个docker的工作目录, 2 Dockerfile文件首字母必须大写

FROM 指令是是最重要的一个且必须为Dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程中的指定基准镜像,后续指令运行基于此镜像提供的操作

MAINTANIER 此dockerfile的维护者的详细信息, Dockerfile不会限制这个指令的位置, 但是推荐放置在FROM指令之后

COPY: 用于从Docker主机复制文件至创建的新映像文件, 拷贝是要拷贝的文件必须在docker的工作目录中或者在docker工作目录的的子目录

eg.

构建镜像命令:docker build ./ -t httpdl:v0.1-1 , 当前目录, httpdl仓库, tag为v0.1-1, 以上文件中有个错误, COPY目录文件必须以/结尾, 否则不能拷贝成功, 但是还不报错,这就很烦了

CYPE 指令在复制文件的时候只复制源文件的子文件以及子目录,不复制本目录

ADD 这个指令类似于COPY命令,ADD指令支持TAR文件和URL路径

如果add引用的是一个tar文件, 将会自动的被展开为一个目录,如果是通过URL获取的tar文件, 将不会被展开, 视频教程中说的是tar文件将会被展开, 但是实际操作中并没有被展开

WORKDIR 个人理解为切换目录,

VOLUME: 卷, 用于在image中创建一个挂载点目录,以挂载Dokcer host上的卷或者其他容器的卷, 这种方式只能管理docker管理的卷

EXPOSE 用于为容器打开指定要监听的端口以实现与外部通信,Dockerfile加入这个是带暴露端口, 不是真的暴露, 可以在docker run是手动加入-P

ENV 用于为镜像文件所需的环境变量,并且能为Dockerfile文件中其他的其他指令所调用

RUN 用于指定docker build过程中运行的程序

CMD 类似RUN 指令,CMD也可以用于运行任何命令活任何程序,不过,二者运行的时间点不同

RUN指令运行于映象文件构建的过程中,而CMD指令运行基于Dockerfiile构建出的新映象文件,文件启动一个容器时

CMD 指令的首要目的在于为启动的容器指定默认要运行的程序,且其运行结束后,容器也将运行终止, 不过, CMD指定的命令可以被docker run命令行选项所覆盖,

在Dockerfile中可以存在多个CMD命令,但仅仅最后一个会生效

CMD 运行方式, 如果以CMD command将会以sh的子进程启动, 如果以CMD [command]的方式启动, 不会以sh的子进程启动, 如果以这种方式启动时需要用以sh的子进程启动, 那么CMD ["/bin/sh", "command","command"]这种方式启动

在docker run的时候可以指定命令覆盖Dockfile中的CMD命令

ENTR YPOINT 类似CMD指令的功能,用于为容器指定默认运行程序,从而使得让容器像是一个单独的可执行程序

与CMD不同的是, 由ENTR YPOINT 启动的程序不会被docker run命令行指定的参数所覆盖,而且, 这些命令参数会被当做参数传递给ENTR YPOINT 指定的程序

不过, docker run 命令中的 --entrypoint选项的参数可覆盖ENTR YPOINT指令指定的程序, 如果ENTR YPOINT ,和CMD同时定义, 那么cmd的参数会被作为参数传递给ENTR YPOINT

emmmmmmmmmmmmmmmmmmmmmmmmmmm

docker学习记录的更多相关文章

  1. Docker学习记录--入门了解+安装

    Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  2. docker学习记录1

    起因 现在自己学习微服务,服务器越来越多,虽然自己写了一些shell脚本来安装需要的软件,比如mysql,redis,jdk等等,但是还是好麻烦.希望学习docker能够快速安装部署这些东西. 记录一 ...

  3. [原创]Docker学习记录: Shipyard+Swarm+Consul+Service Discover 搭建教程

    网上乱七八糟的资料实在是太多了, 乱, 特别乱, 而看书呢, 我读了2本书, 一本叫做<>, 另一本叫做<< Docker进阶与实战>> 在 服务发现这块讲的又不清 ...

  4. The Docker学习记录[Doing]

    微服务 & Docker 译文:使用Java构建微服务 原文:Building Microservices With Java [编者的话]本文翻译自Dzone Guide to the Ja ...

  5. docker学习------记录centos7.5下docker安装更换国内源的处理过程

    一.centos7.5下更换阿里源 1.装好centos7.5镜像,将yum源更换为阿里源 第一步:刚出的centos7.5是解析不到阿里的东西的,所以找了台centos7.4,下载一些包 (1) 下 ...

  6. Docker 学习记录(基础命令)

    1. 获取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]  ===>   docker pull ubuntu:16:04 2.运 ...

  7. Docker 学习记录

    docker logs 查看日志 docker logs  容器id docker logs -f 容器id 这次命令后面添加了一个新的标识 -f. 和 tail -f 类似, docker logs ...

  8. Docker 学习记录笔记(一)

    Docker 一些简单的命令列表docker build -t friendlyhello . # Create image using this directory's Dockerfiledock ...

  9. Docker学习记录常用命令

    1. docker ps  -a 查看运行中的容器 2. docker images 查看docker镜像 3. docker rm id(容器id)  删除容器(容器id可以通过docker ps查 ...

随机推荐

  1. 禁止用su切换到root

    http://jie388.blog.51cto.com/1433454/920492

  2. CSS3中设置字体的抗锯齿或光滑度的属性

    刚刚接触前端开发,对于-webkit-font-smoothing: antialiased; 这个属性不了解.上网查找了一些资料. 总结一下: -webkit-font-smoothing  :  ...

  3. 详细说明进程管理工具htop、vmstat等相关命令

    htop htop是一款运行于Linux系统监控与进程管理软件,用于取代Unix下传统top.与top只提供最消耗资源进程列表不同,htop提供所有进程的列表,并且使用彩色标识出处理器.swap和内存 ...

  4. [Java Web学习]JDBC事务处理

    1. Spring中加入数据库的bean <bean id="dataSource" class="org.apache.commons.dbcp.BasicDat ...

  5. poj 3347

    #include <cstring> #include <iostream> #include <cstdlib> #include <iomanip> ...

  6. React Native 开发环境搭建

    1.安装 Python 2,不知道是否已支持 Python 3 2.安装 node,npm... 修改 npm 镜像,不建议使用 cnpm,cnpm 安装模块的路径与 npm 有差别 npm conf ...

  7. 芯灵思Sinlinx A64 开发板移植SQLite3

    开发平台 芯灵思Sinlinx A64 内存: 1GB 存储: 4GB 开发板详细参数 https://m.tb.cn/h.3wMaSKm 开发板交流群 641395230 首先到 http://ww ...

  8. day-10初级函数

    函数 函数的定义 函数:完成 特定 功能的代码块,作为一个整体,对其进行特定的命名,该名字就代表函数-- 现实中:很多问题要通过一些工具进行处理 => 可以将工具提前生产出来并命名=> 通 ...

  9. linux下的c程序排版工具:indent

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/u010839382/article/details/30779523 Linux下有一个方便的c语言 ...

  10. gcc的调试调研——gdb

    首先来介绍一下gcc的选项: 其他选项都为常用编译选项,在这里介绍一下优化功能: 优化编译时使用选项: -O:可以告诉gcc同时减小代码的长度和执行时间,其效果等价于-O1,在这一级别上能够进行的优化 ...