美文网首页
docker常用命令

docker常用命令

作者: 飘飘梭 | 来源:发表于2019-04-08 21:09 被阅读0次

    镜像(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 配置

    相关文章

      网友评论

          本文标题:docker常用命令

          本文链接:https://www.haomeiwen.com/subject/xmbeiqtx.html