您的位置:首页 > 运维架构 > Docker

docker简单介绍和常用命令

2016-07-22 11:10 706 查看
前面安装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.[code]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.
[/code]

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息