docker简单介绍和常用命令

前面安装zabbix时用到了docker,发现docker也是个好东西。Docker 是 dotCloud 的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行应用程序,并通过配置文件可以轻松实现应用程序的自动化安装、部署和升级,非常方便。因为使用了容器,所以可以很方便的把生产环境和开发环境分开,互不影响,这是 docker 最普遍的一个玩法。更多的玩法还有大规模 web 应用、数据库部署、持续部署、集群、测试环境、面向服务的云计算、虚拟桌面 VDI 等等。

安装在前面聊过了(http://blog.csdn.net/a5nan/article/details/51991428),下面在网上找了些资料聊一下常用命令:

docker三种命令运行方式

docker有三种命令运行的方式:短暂方式、交互方式、daemon方式。

a、短暂方式

sudo docker run ubuntu /bin/echo hello world #进入到ubuntu镜像执行一个echo语句,测试命令执行完后,container就终止了,不过并没有消失,可以用 sudo docker ps -a 看一下所有的container,第一个就是刚刚执行过的container,可以再次执行一遍:

sudo docker start container_id

#这次看不到”hello world”了,只能看到ID,用logs命令才能看得到:

sudo docker logs container_id

#可以看到两个”hello world”,因为这个container运行了两次。

b、交互方式

sudo docker run -i -t image_name bash #这样会进入镜像的bash命令行,也可以写成另一种方式:

sudo docker exec -it image_name bash

c、daemon方式

即让软件作为长时间服务运行,这就是SAAS啊!例如,一个无限循环打印的脚本(替换为memcached、apache等,操作方法仍然不变!):

CONTAINER_ID=$(sudo docker run -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done")

在container外面查看它的输出

sudo docker logs $CONTAINER_ID

或者连接上容器实时查看

sudo docker attach $CONTAINER_ID

终止容器
sudo docker stop $CONTAINER_ID
sudo docker ps #看一下,已经没了

docker官方common

$ sudo docker   # docker 命令帮助

Commands:
    attach    Attach to a running container                 # 当前 shell 下 attach 连接指定运行镜像
    build     Build an image from a Dockerfile              # 通过 Dockerfile 定制镜像
    commit    Create a new image from a container's changes # 提交当前容器为新的镜像
    cp        Copy files/folders from the containers filesystem to the host path
              # 从容器中拷贝指定文件或者目录到宿主机中
              # e.g.docker cp foo.txt mycontainer:/foo.txt  &&  docker cp mycontainer:/foo.txt foo.txt
    create    Create a new container                        # 创建一个新的容器,同 run,但不启动容器
    diff      Inspect changes on a container's filesystem   # 查看 docker 容器变化
    events    Get real time events from the server          # 从 docker 服务获取容器实时事件
    exec      Run a command in an existing container        # 在已存在的容器上运行命令
    export    Stream the contents of a container as a tar archive   
              # 导出容器的内容流作为一个 tar 归档文件[对应 import ]
    history   Show the history of an image                  # 展示一个镜像形成历史
    images    List images                                   # 列出系统当前镜像
    import    Create a new filesystem image from the contents of a tarball  
              # 从tar包中的内容创建一个新的文件系统映像[对应 export]
    info      Display system-wide information               # 显示系统相关信息
    inspect   Return low-level information on a container   # 查看容器详细信息
    kill      Kill a running container                      # kill 指定 docker 容器
    load      Load an image from a tar archive              # 从一个 tar 包中加载一个镜像[对应 save]
    login     Register or Login to the docker registry server   
              # 注册或者登陆一个 docker 源服务器
    logout    Log out from a Docker registry server         # 从当前 Docker registry 退出
    logs      Fetch the logs of a container                 # 输出当前容器日志信息
    port      Lookup the public-facing port which is NAT-ed to PRIVATE_PORT
              # 查看映射端口对应的容器内部源端口
    pause     Pause all processes within a container        # 暂停容器
    ps        List containers                               # 列出容器列表
    pull      Pull an image or a repository from the docker registry server
              # 从docker镜像源服务器拉取指定镜像或者库镜像
    push      Push an image or a repository to the docker registry server
              # 推送指定镜像或者库镜像至docker源服务器
    restart   Restart a running container                   # 重启运行的容器
    rm        Remove one or more containers                 # 移除一个或者多个容器
    rmi       Remove one or more images                 
              # 移除一个或多个镜像[无容器使用该镜像才可删除,否则需删除相关容器才可继续或 -f 强制删除]
    run       Run a command in a new container
              # 创建一个新的容器并运行一个命令
    save      Save an image to a tar archive                # 保存一个镜像为一个 tar 包[对应 load]
    search    Search for an image on the Docker Hub         # 在 docker hub 中搜索镜像
    start     Start a stopped containers                    # 启动容器
    stop      Stop a running containers                     # 停止容器
    tag       Tag an image into a repository                # 给源中镜像打标签
    top       Lookup the running processes of a container   # 查看容器中运行的进程信息
    unpause   Unpause a paused container                    # 取消暂停容器
    version   Show the docker version information           # 查看 docker 版本号
    wait      Block until a container stops, then print its exit code   
              # 截取容器停止时的退出状态值
Run 'docker COMMAND --help' for more information on a command. 

docker run

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明(原始的内容太多,挑了些常用的说明):

    -a, --attach stdin: # 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

    -d, --detch: # 后台运行容器,并返回容器ID;

    -i, --interactive: # 以交互模式运行容器,通常与 -t 同时使用;

    -t, --tty: # 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

    --name="nginx-lb": # 为容器指定一个名称;

    --dns 8.8.8.8: # 指定容器使用的DNS服务器,默认和宿主一致;

    --dns-search example.com: # 指定容器DNS搜索域名,默认和宿主一致;

    -h, --hostname "mars": # 指定容器的hostname;

    -e, --env username="ritchie": # 设置环境变量;

    --env-file=[]: # 从指定文件读入环境变量;

    --cpuset="0-2" or --cpuset="0,1,2": # 绑定容器到指定CPU运行;

    -m, --memory 512MB: # 设置容器使用内存最大值;

    --net="bridge": # 指定容器的网络连接类型,支持 bridge/host/none/Container: 四种类型;

    --link=[]: # 添加链接到另一个容器;

    --expose=[]: # 开放一个端口或一组端口;

    -p, --pulish 8080:8080: # 映射容器的8080端口到host的8080端口;

    -P, --publish-all: # 映射容器的所有端口到host;

    --restart=always: # 容器重启策略,默认是no;

    -v, --volume /data:/data: # 主机的目录/data映射到容器的/data;

补充:

1、docker ps命令
sudo docker ps #列出当前所有正在运行的container
sudo docker ps -l #列出最近一次启动的,且正在运行的container
sudo docker ps -a #列出所有的container

注意:
a、其他用法请参考 sudo docker ps -h
b、还有一种方式可以让程序在daemon模式下运行,就是在Dockerfile里设置USER为daemon

2、docker export命令
container_id=`docker run -d <image_name> ls`
docker export $container_id > image.tgz

3、docker import命令
cat image.tgz | sudo docker import - simple_dev #simple_dev为自定义的镜像名称

4、删除所有容器
sudo docker rm `sudo docker ps -a -q`

这里简单介绍一下docker的常用命令,下次再总结一下dockerfile相关的命令

大神链接:

http://blog.opskumu.com/docker.html

http://blog.csdn.net/zjin_hua/article/details/52041757



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值