本文主要整理一些常用的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命令,希望对你有所帮助。

标签: Docker, Docker教程, 虚拟机, 容器, Docker与虚拟机区别, Docker命令, docker指令, 程序员工具, 开发工具, Docker常用命令