Docker常用命令

本文主要整理一些常用的docker命令,便于大家查询。
运行hello world测试
docker run hello-world
显示本地镜像
docker images
获取镜像
docker pull ubuntu:12.04
创建一个容器,让其运行bash
docker run -t -i ubuntu:12.04 /bin/sh
说明:-i:表示以“交互模式”运行容器 -t:表示容器启动后会进入其命令行
利用DocFile来创建镜像
mkdir sinatra
cd sinatra/
touch Dockerfile
vim Dockerfile
docker build -t="ouruser/sinatra:v2" .
运行容器
docker start [stop| restart] xxx
导出容器
docker ps -a
docker save -o ubuntu.tar.gz ubuntu:14.04 *(保存的是所有这个镜像的版本记录,包括一些历史数据.)*
docker export pid > ./ubuntu.tar.gz *(导出的是容器当前所用的镜像内容)*
导入容器
docker load < /tmp/mynewimage.tar *(docker save 的逆操作)*
cat ubuntu.tar | docker import - test/ubuntu:v1.0 *( export 的逆操作)*
删除容器
docker stop xxx
docker rm xxx
docker 的文件是放在 /var/lib/docker/containers/ 中的。
保存镜像
docker commit xxx abc
这里保存成一个名叫 abc 的镜像,镜像名称中只允许出现小写字母和数字。
删除镜像
docker rmi abc
获取镜像历史
docker history abc
docker images --tree *(查看所有镜像的历史过程)*
只能对本地存在的 docker 镜像执行这个命令
杀死一个或多个指定容器进程
docker kill container
-s "KILL" 自定义发送至容器的信号。
查看一个正在运行容器开放端口
docker port container
查看一个正在运行容器进程
docker top container
支持 ps 命令参数
暂停某一容器的所有进程
docker pause container
恢复某一容器的所有进程
docker unpause container
标记本地镜像,将其归入某一仓库
docker tag image name
-f 覆盖已有标记。
获取容器运行时的输出日志
docker logs container
docker attach到一个已经运行的容器的stdin
docker run -itd ubuntu:14.04 /bin/bash
docker attach 44fc0f0582d9
docker attach可以attach到一个已经运行的容器的stdin,然后进行命令执行的动作。但是需要注意的是,如果从这个stdin中exit,会导致容器的停止。
docker exec
docker exec -i name /bin/bash
只用-i时,由于没有分配伪终端,看起来像pipe执行一样。但是执行结果、命令返回值都可以正确获取。
docker exec -it name /bin/bash
使用-it时,则和我们平常操作console界面类似。而且也不会像attach方式因为退出,导致整个容器退出。
docker exec -t name /bin/bash
如果只使用-t参数,则可以看到一个console窗口,但是执行命令会发现由于没有获得stdin的输出,无法看到命令执行情况。
docker exec -d name /bin/bash a.sh
在后台执行一个进程。可以看出,如果一个命令需要长时间进程,使用-d参数会很快返回。程序在后台运行。
docker inspect
docker inspect 465c60612e5c
可以分层级显示一个镜像或容器的信息
开启Docker Remote API
docker run --name docker-api -d -v /var/run/docker.sock:/var/run/docker.sock -p 2376:2375 bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
curl localhost:2376/version
export DOCKER_HOST=“tcp://ip:2375"
资源限制之内存
docker run -it --rm -m 100M --memory-swap -1 ubuntu-stress:latest /bin/bash
stress --vm 1 --vm-bytes 1000M # 通过 stress 工具对容器内存做压测
docker stats
docker stats 465c60612e5c
使用 docker stats 查看当前容器内存资源使用.
资源限制之 CPU
docker run -it --rm --cpu-shares 512 ubuntu-stress:latest /bin/bash
stress -c 4
资源限制之 IO
docker run -it --rm --blkio-weight 1000 ubuntu-stress:latest /bin/bash
time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct
time dd if=/dev/zero of=test.out bs=1M count=1024 oflag=direct
登录dockerhub
docker login
提交镜像
docker push wangshibo/myubuntu:1.0
从容器创建一个新的镜像
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
docker commit -a "wangshibo" -m "this is test" 651a8541a47d myubuntu:1.0
整理了一些常用的docker命令,希望对你有所帮助。