docker常用命令

镜像(image)命令:

        docker images 查看镜像信息

        docker search ubuntu:16.04  从docker hub搜索ubuntu 16.04的镜像

        docker pull ubuntu:16.04  从docker hub下载ubuntu 16.04的镜像

        docker push 将本地镜像上传到docker hub

        docker history image.name 查看构建历史

        docker rmi ubuntu 删除本地的ubuntu镜像

        docker tag 给镜像打tag

        构建镜像的两种方式:

                1. docker commit  container_name  image_name

                2. 通过Dockerfile 构建

                        FROM ubuntu

                        RUN apt-get update && apt install vim

                        通过 docker build -t image.name . 命令构建 -t后为镜像名

                        通过 docker history image.name 命令查看构建历史

                        如果不希望在构建镜像时使用缓存,可以在docker build命令中加上--no-cache参数

                        Dockerfile常用指令:

                                FROM  指定base镜像

                                MAINTAINER  设置镜像的作者,可以是任意字符串

                                COPY  将文件从build contest 复制到镜像, COPY src dest 

                                ADD  与COPY类似, 从build context 复制文件到镜像。不同的是,如果时压缩文件会被自动解压

                                ENV  设置环境变量

                                EXPOSE  指定容器中的进程会监听某个端口,docker可以将该端口暴露出来

                                VOLUME  将文件或目录声明为volume

                                WORKDIR  为后面的RUN CMD ENTRYPOINT ADD COPY指令设定镜像中的当前工作目录

                                RUN  在容器中运行指定的命令,    RUN指令通常用于安装应用和软件包。

                                CMD 容器启动时运行指定的命令 ,CMD可以被docker run 之后的参数替换。     

                                ENTRYPOINT Dockerfile中可以有多个ENTRYPOINT指令,但只有最后一个生效。CMD或docker run 之后的参数会被当做参数传递给ENTRYPOINT。

        构建本地仓库:

                docker run -d -p 5000:5000 -v /localregistry:/var/lib/registry registry

                -d 后台启动容器

                -p 将容器的5000端口映射到host的5000端口。5000 是registry的服务端口。

                -v 将容器/var/lib/registry 目录映射到host的/localregistry。 用于存放镜像数据


容器(Container)命令:

        docker ps 或docker container ls 来查看Docker host 中当前运行的容器

        docker ps -a 或docker container ls -a 来查看Docker host 中所有的容器 

        docker create 创建一个容器,这是容器处于Created状态

        docker stop 停止一个容器

        docker kill 快速停止一个容器

        docker start 重启一个停止的容器

        docker restart 相当于 docker stop + docker start

        docker attach 直接进入容器启动命令的终端,不会启动新的进程

        docker exec 则是在容器中打开新的终端,并且可以启动新的进程,执行这个命令进入通过 -d启动的服务类容器, 如数据库

        docker logs    输出容器中执行的命令 

        docker rename 重命名容器

        docker run 建立一个新的容器, 相当与 docker create + docker start

        docker run 命令时,可以通过 --restart=always 让容器无论已何种原因退出(包括正常退出和因某种错误停止运行),都立即重启 , 即除了docker stop 和docker kill命令之外

        docker pause   让容器暂停工作,出与暂停状态的容器不会占用cpu

        docker unpause 回复暂停的容器

        docker rm 删除容器

        docker run -m 200M --memory-swap=300M ubuntu 允许该容器使用200Mb的内存和100Mb的swap,如果不指定--memory-swap 则 --memory-swap默认为 -m的两倍


网络(Network)命令

        docker 在安装时自动为我们创建none、host、bridge三种网络, 通过--network命令指定,默认bridge模式

        docker 还提供三种user-defined网络驱动: bridge、overlay、 macvlan,其中overlay和macvla 用于创建跨主机的网络。

        docker network create --driver bridge my_net 创建名为my_net的bridge网络,还可以通过--subnet命令来指定ip网段,通过--gateway参数来指定网关

        docker network inspect my_net 查看网络信息 

        容器要使用新的网络,需要在启动时通过--network指定,如docker run --network=my_net ubuntu --ip 172.18.0.2 ubuntu:lasted

        当我们想固定容器的ip地址(即静态ip),只有使用--subnet创建的网络才可以, 

        默认情况下两个不同网络的容器是不能互相访问的,但我们可以 docker network connect my_net container 来实现二者的连接

        docker dns server 使容器通过容器名进行通信,不过只适用于user-defined网络中        

        joined 容器使两个或多个容器共享一个网络栈,共享网卡与配置信息, docker run -d -it --name=web1 httpd 再创建一个容器并通过 --network=container:web1 httpd 

        容器是默认可以访问外网的,外部世界则通过端口映射来访问容器


存储命令

       容器由最上面的一个可写层和若干个只读的镜像组成,容器的数据就存放在这些层中。这样的分层结构最大的特性为Copy-on-write.

        对于有持久化数据的需求,容器启动时需要加载已有的数据,容器销毁时需要保留产生的新数据,这就用到了的docker的一种存储机制: Date Volume, Date Volume本质上是Docker Host 文件系统中的目录或者文件,能够直接被mount到容器中。        

        目前docker提供了两种类型的volume:

                1. bind mount

                        docker run -it -v <host path>:<container path> ubuntu

                        bind mount 还可以指定数据的读写权限,莫认是可读可写,可指定为只读, 如

                                docker run -v <host path>:<container path>:ro

                        bind mount还支持对单个文件的bind

                        不同的容器可以通过bind mount 共用一个文件系统

                2 docker managed volume

                        docker managed volume 具有更好的移植性

                        通过命令 docker run -v <container path> ubuntu

                        docker 会在host上/var/lib/docker/volumes/目录下创建一个目录保存容器中的文件

                        docker volume ls 查看host中已有的数据卷

                        docker volume inspect volume:id查看该数据卷的详细信息

                        docker managed volume 不支持单个文件,也不能进行权限控制,不支持指定文件位置,但其移植性强,无需指定host目录

        volume container 是专门为其他容器提供volume的容器。它提供的卷可以使bind mount, 也可以是docker managed volume。下面我们创建一个volume container

                docker create --name vc_data -v <host path>:<container path> ubuntu

                之所以用create 命令,这是因为volume container 之提供数据,不需要处于运行状态。

                其他容器可以通过 --volumes-from 使用刚刚创建的volume container

                docker run --volumes-from va_data ubuntu

                与bind mount 相比,不必为每个容器制定host path,所有的path都在volume container 中定义好了

        data-packed volume container 与 volume container 相比,将放在host里的数据 放到了镜像中,其具有较强的可移植性。


docker machine

安装docker-machine

base=https://github.com/docker/machine/releases/download/v0.16.0&& curl -L $base/docker-machine-$(uname-s)-$(uname-m)>/tmp/docker-machine&& sudo install /tmp/docker-machine /usr/local/bin/docker-machine

创建docker machine

docker-machine create --driver generic --generic-ip-address=192.168.1.63 host1

docker-machine env host1

eval $(docker-machine env host1)

docker-machine upgrade

docker-machine config 查看machine的docker daemon 配置

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,417评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,921评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,850评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,945评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,069评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,188评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,239评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,994评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,409评论 1 304
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,735评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,898评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,578评论 4 336
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,205评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,916评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,156评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,722评论 2 363
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,781评论 2 351

推荐阅读更多精彩内容

  • docker常用命令详解 - CSDN博客 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的...
    Meathill大魔王阅读 800评论 1 2
  • 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备...
    Joncc阅读 275评论 0 0
  • 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备...
    BestbpF阅读 272评论 0 0
  • Docker常用命令使用 docker ps列出容器使用语法:docker ps [options]options...
    StrongZhao阅读 635评论 0 0
  • 尼采:当你在凝视深渊的时候,深渊也正在凝视着你。 他最近发现一个人,总是像粘在脚底的口香糖随时吸引着他的注意力,而...
    颜人青阅读 888评论 2 4