常用的Docker命令和介绍

常用的Docker命令和介绍

此处忽略安装过程

  • 启动本机Docker服务

    # service 命令的用法
    $ sudo service docker start
    
    # systemctl 命令的用法
    $ sudo systemctl start docker
    
  • 查看本地的image文件

    # 列出本机的所有 image 文件。
    $ docker image ls
    
    # 删除 image 文件
    $ docker image rm [imageName]
    
  • 抓取image文件从仓库到本地

    $ docker image pull library/hello-world
    # docker image pull是抓取 image 文件的命令
    # library/hello-world是 image 文件在仓库里面的位置
    # 简写:$ docker image pull hello-world
    
  • 运行hello-world 的image

    $ docker container run hello-world
    
  • 非自动终止的容器

    $ docker container run -it ubuntu bash
    # 命令手动终止容器
    $ docker container kill [containID]
    
  • 查看运行中的容器

    $ docker ps
    $ docker ps -a 
    # 停止/启动容器 
    $ docker stop/start[continer ID or name]
    

**容器文件:**image 文件生成的容器实例,本身也是一个文件,称为容器文件。也就是说,一旦容器生成,就会同时存在两个文件: image 文件和容器文件。而且关闭容器并不会删除容器文件,只是容器停止运行而已。

  • 查看容器的信息

    # 列出本机正在运行的容器
    $ docker container ls
    
    # 列出本机所有容器,包括终止运行的容器
    $ docker container ls --all        
    
    #终止运行的容器文件,依然会占据硬盘空间,可以使用命令删除。
    $ docker container rm [containerID]
    

生成image文件,需要用到Dockerfile文件。
它是一个文本文件,用来配置 image。Docker 根据 该文件生成二进制的 image 文件。

  • 自作Docker容器DEMO

    demo项目名称Koa 框架,根目录为/…/koa-demos/ 【不知道这个是啥框架】

    1. 根目录下,新建文本文件.dockerignore

      .git
      node_modules
      npm-debug.log
      

      表示:这三个路径要排除,不要打包进入 image 文件。如果你没有路径要排除,这个文件可以不新建。

    2. 项目根目录下,新建一个文本文件 Dockerfile

      FROM node:8.4
      COPY . /app
      WORKDIR /app
      RUN npm install --registry=https://registry.npm.taobao.org
      EXPOSE 3000
      

      含义如下

      * FROM node:8.4:该 image 文件继承官方的 node image,冒号表示标签,这里标签是8.4,即8.4版本的 node。
      * COPY . /app:将当前目录下的所有文件(除了.dockerignore排除的路径),都拷贝进入 image 文件的/app目录。
      * WORKDIR /app:指定接下来的工作路径为/app。
      * RUN npm install:在/app目录下,运行npm install命令安装依赖。注意,安装后所有的依赖,都将打包进入 image 文件。
      * EXPOSE 3000:将容器 3000 端口暴露出来, 允许外部连接这个端口。
      
    3. 建立image文件

      $ docker image build -t koa-demo .
      # 或者
      $ docker image build -t koa-demo:0.0.1 .
      

      上面代码中,-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。如果不指定,默认的标签就是latest。最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

    4. 生成容器

      # docker container run命令会从 image 文件生成容器。
      $ docker container run -p 8000:3000 -it koa-demo /bin/bash
      # 或者
      $ docker container run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
      

      参数含义:

      * -p参数:容器的 3000 端口映射到本机的 8000 端口。
      * -it参数:容器的 Shell 映射到当前的 Shell,然后你在本机窗口输入的命令,就会传入容器。
      * koa-demo:0.0.1:image 文件的名字(如果有标签,还需要提供标签,默认是 latest 标签)。
      * /bin/bash:容器启动以后,内部第一个执行的命令。这里是启动 Bash,保证用户可以使用 Shell。
      
    5. CMD命令,在Dockerfile里面添加命令

      FROM node:8.4
      COPY . /app
      WORKDIR /app
      RUN npm install --registry=https://registry.npm.taobao.org
      EXPOSE 3000
      CMD node demos/01.js
      

      这里的 CMD node demos/01.js,它表示容器启动后自动执行node demos/01.js。
      RUN命令在 image 文件的构建阶段执行,执行结果都会打包进入 image 文件;
      CMD命令则是在容器启动后执行。另外,一个 Dockerfile 可以包含多个RUN命令,但是只能有一个CMD命令。

      $ docker container run --rm -p 8000:3000 -it koa-demo:0.0.1
      # 现在,run命令就不能附加/bin/bash命令了,否则会覆盖CMD
      
    6. 发布image文件

      容器运行成功后,就确认了 image 文件的有效性。这时,我们就可以考虑把 image 文件分享到网上,让其他人使用。
      
      首先,去 hub.docker.com 或 cloud.docker.com 注册一个账户。然后,用下面的命令登录。
      
      $ docker login
      接着,为本地的 image 标注用户名和版本。
      
      $ docker image tag [imageName] [username]/[repository]:[tag]
      # 实例
      $ docker image tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1
      也可以不标注用户名,重新构建一下 image 文件。
      
      $ docker image build -t [username]/[repository]:[tag] .
      最后,发布 image 文件。
      
      $ docker image push [username]/[repository]:[tag]
      发布成功以后,登录 hub.docker.com,就可以看到已经发布的 image 文件。
      
  • 一些其他命令

        # 前面的docker container run命令是新建容器,每运行一次,就会新建一个容器。同样的命令运行两次,就会生成两个一模一样的容器文件。如果希望重复使用容器,就要使用docker container start命令,它用来启动已经生成、已经停止运行的容器文件。
        $ docker container start [containerID]
    
        # 前面的docker container kill命令终止容器运行,相当于向容器里面的主进程发出 SIGKILL 信号。而docker container stop命令也是用来终止容器运行,相当于向容器里面的主进程发出 SIGTERM 信号,然后过一段时间再发出 SIGKILL 信号。
        # 这两个信号的差别是,应用程序收到 SIGTERM 信号以后,可以自行进行收尾清理工作,但也可以不理会这个信号。如果收到 SIGKILL 信号,就会强行立即终止,那些正在进行中的操作会全部丢失。
        $ bash container stop [containerID]
    
        # docker container logs命令用来查看 docker 容器的输出,即容器里面 Shell 的标准输出。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令查看输出。
        $ docker container logs [containerID]
    
        # docker container exec命令用于进入一个正在运行的 docker 容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了。
        $ docker container exec -it [containerID] /bin/bash
    
        # docker container cp命令用于从正在运行的 Docker 容器里面,将文件拷贝到本机。下面是拷贝到当前目录的写法。
        $ docker container cp [containID]:[/path/to/file] .
    
  • 启动参数说明

    -p 80:80:将容器的80端口映射到主机的80端口
    
    --name mynginx:将容器命名为mynginx
    
    -v $PWD/www:/www:将主机中当前目录下的www挂载到容器的/www
    
    -v $PWD/conf/nginx.conf:/etc/nginx/nginx.conf:将主机中当前目录下的nginx.conf挂载到容器的/etc/nginx/nginx.conf
    
    -v $PWD/logs:/wwwlogs:将主机中当前目录下的logs挂载到容器的/wwwlogs
    

ok(^o^)/~ 差不多就这些内容了
简单的使用应该是足够了
20180427 小杭


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小_杭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值