docker常用操作命令

最新版安装
wget -qO- https://get.docker.com/ | sh.
安装Docker
安装Docker使用apt-get命令:
$ apt-get install docker.io
启动服务和守护进程
$ service docker.io status
$ service docker.io start
创建软连接
ln -sf /usr/bin/docker.io /usr/local/bin/docker
如没有提示错误则说明你已经在Ubuntu14.04上面快速安装Docker成功了
docker
 搜索镜像
docker search ubuntu
下载镜像
docker pull ubuntu
查看所有已下载的images:
docker images
Ubuntu 镜像从DockerHub/Docker Registry下载
要创建容器,可以使用docker create 或 docker run
docker create ubuntu:14.04
docker create 命令会创建一个新的容器,但不会启动它。所以现在你需要使用运行命令:
docker run -i -t ubuntu:14.04 /bin/bash
此命令将创建并运行一个基于 Ubuntu14.04 镜像的容器,容器内并运行一个命令/bin/bash,您将在容器内自动运行命令。
当你输入 Exit 命令退出容器时,容器也是停止运行,如果你想容器在后台运行需要在命令后面添加 -d 参数。
docker run -i -t -d ubuntu:14.04 /bin/sh -c “while true; do echo hello world; sleep 1; done”
/bin/sh -c “while true; do echo hello world; sleep 1; done” this is bash script to echo 
“hello word”
 forever.
现在你可以看到容器在后台运行通过命令:
docker ps
如果你想从 bash 命令看日志结果,使用命令:
docker logs NAMES/ContainerID
怎样在后台访问容器 shell?这个命令将会连接你的容器 shell:
docker exec -i -t NAMES/ContainerID
你可以看到主机名和容器ID是相等的,这意味着你在容器shell内。当你在shell 上键入’exit`,会离开的shell,但容器仍在运行。
你会经常使用的另一个命令是:
docker stop NAME/ContainerID
这将停止容器而不将其删除,这样你就可以用命令重新启动它:
docker start NAME/ContainerID
如果你想删除的容器,先停止它,然后用命令将其删除:
docker rm NAME/ContainerID
运行我们的web应用
假设我们应用是www,目录位置在/app/deploy/www
docker run –privileged=true -v /app/deploy/www:/usr/local/tomcat/webapps/www  -p 8081:8080 tomcat:7 
-v /app/deploy/www:/usr/local/tomcat/webapps/www 是把/app/deploy/www的目录挂载至容器的/usr/local/tomcat/webapps/www。 
–privileged=true是授予docker挂载的权限
杀死所有正在运行的容器
复制代码
代码如下:
docker kill $(docker ps -a -q)
 删除所有已经停止的容器
复制代码
代码如下:
docker rm $(docker ps -a -q)
 删除所有未打 dangling 标签的镜像
复制代码
代码如下:
docker rmi $(docker images -q -f dangling=true)
 删除所有镜像
复制代码
代码如下:
docker rmi $(docker images -q)
 为这些命令创建别名
复制代码
代码如下:
# ~/.bash_aliases
# 杀死所有正在运行的容器.
alias dockerkill=’docker kill $(docker ps -a -q)’
# 删除所有已经停止的容器.
alias dockercleanc=’docker rm $(docker ps -a -q)’
# 删除所有未打标签的镜像.
alias dockercleani=’docker rmi $(docker images -q -f dangling=true)’
# 删除所有已经停止的容器和未打标签的镜像.
alias dockerclean=’dockercleanc || true && dockercleani’
另附上docker常用命令
docker version #查看版本
 docker search tutorial#搜索可用docker镜像
 docker pull learn/tutorial #下载镜像
 docker run learn/tutorial echo "hello word"#在docker容器中运行hello world!
 docker run learn/tutorial apt-get install -y ping#在容器中安装新的程序
保存镜像
首先使用docker ps -l命令获得安装完ping命令之后容器的id。然后把这个镜像保存为learn/ping。
 提示:
 1.运行docker commit,可以查看该命令的参数列表。
 2.你需要指定要提交保存容器的ID。(译者按:通过docker ps -l 命令获得)
 3.无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。(译者按:非常类似git里面的版本号)
 正确的命令:
docker commit 698 learn/ping
运行新的镜像
docker run lean/ping ping 
www.google.com
检查运行中的镜像
现在你已经运行了一个docker容器,让我们来看下正在运行的容器。
 使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
 目标:
查找某一个运行中容器的id,然后使用docker inspect命令查看容器的信息。
 提示:
可以使用镜像id的前面部分,不需要完整的id。
 正确的命令:
docker inspect efe
怎么把docker镜像文件 复制到主机
docker cp使用方法
docker cp 03091bf3d393:/root/Documents/combo.cpp 。/
上面这条命令就是把ID为03091bf3d393的容器中的/root/Documents/目录下的combo.cpp文件
docker cp 容器ID:容器中文件的绝对路径 主机路径
docker cp使用方法
docker cp 03091bf3d393:/root/Documents/combo.cpp 。/
上面这条命令就是把ID为03091bf3d393的容器中的/root/Documents/目录下的combo.cpp文件
1. 查看docker信息(version、info)
[plain]
 
view plain
 
copy
  1. # 查看docker版本  
  2. $docker version  
  3.   
  4. # 显示docker系统的信息  
  5. $docker info  
2. 对image的操作(search、pull、images、rmi、history)
[plain]
 
view plain
 
copy
  1. # 检索image  
  2. $docker search image_name  
  3.   
  4. # 下载image  
  5. $docker pull image_name  
  6.   
  7. # 列出镜像列表; -a, –all=false Show all images; –no-trunc=false Don’t truncate output; -q, –quiet=false Only show numeric IDs  
  8. $docker images  
  9.   
  10. # 删除一个或者多个镜像; -f, –force=false Force; –no-prune=false Do not delete untagged parents  
  11. $docker rmi image_name  
  12.   
  13. # 显示一个镜像的历史; –no-trunc=false Don’t truncate output; -q, –quiet=false Only show numeric IDs  
  14. $docker history image_name  
3. 启动容器(run)
docker容器可以理解为在沙盒中运行的进程。这个沙盒包含了该进程运行所必须的资源,包括文件系统、系统类库、shell 环境等等。但这个沙盒默认是不会运行任何程序的。你需要在沙盒中运行一个进程来启动某一个容器。这个进程是该容器的唯一进程,所以当该进程结束的时候,容器也会完全的停止。
[plain]
 
view plain
 
copy
  1. # 在容器中运行"echo"命令,输出"hello word"  
  2. $docker run image_name echo "hello word"  
  3.   
  4. # 交互式进入容器中  
  5. $docker run -i -t image_name /bin/bash  
  6.   
  7.   
  8. # 在容器中安装新的程序  
  9. $docker run image_name apt-get install -y app_name  
Note:  在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。apt-get 命令执行完毕之后,容器就会停止,但对容器的改动不会丢失。
4. 查看容器(ps)
[plain]
 
view plain
 
copy
  1. # 列出当前所有正在运行的container  
  2. $docker ps  
  3. # 列出所有的container  
  4. $docker ps -a  
  5. # 列出最近一次启动的container  
  6. $docker ps -l  
5. 保存对容器的修改(commit)
当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。
[plain]
 
view plain
 
copy
  1. # 保存对容器的修改; -a, –author="" Author; -m, –message="" Commit message  
  2. $docker commit ID new_image_name  
Note:  image相当于类,container相当于实例,不过可以动态给实例安装新软件,然后把这个container用commit命令固化成一个image。
6. 对容器的操作(rm、stop、start、kill、logs、diff、top、cp、restart、attach)
[plain]
 
view plain
 
copy
  1. # 删除所有容器  
  2. $docker rm `docker ps -a -q`  
  3.   
  4. # 删除单个容器; -f, –force=false; -l, –link=false Remove the specified link and not the underlying container; -v, –volumes=false Remove the volumes associated to the container  
  5. $docker rm Name/ID  
  6.   
  7. # 停止、启动、杀死一个容器  
  8. $docker stop Name/ID  
  9. $docker start Name/ID  
  10. $docker kill Name/ID  
  11.   
  12. # 从一个容器中取日志; -f, –follow=false Follow log output; -t, –timestamps=false Show timestamps  
  13. $docker logs Name/ID  
  14.   
  15. # 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的  
  16. $docker diff Name/ID  
  17.   
  18. # 显示一个运行的容器里面的进程信息  
  19. $docker top Name/ID  
  20.   
  21. # 从容器里面拷贝文件/目录到本地一个路径  
  22. $docker cp Name:/container_path to_path  
  23. $docker cp ID:/container_path to_path  
  24.   
  25. # 重启一个正在运行的容器; -t, –time=10 Number of seconds to try to stop for before killing the container, Default=10  
  26. $docker restart Name/ID  
  27.   
  28. # 附加到一个运行的容器上面; –no-stdin=false Do not attach stdin; –sig-proxy=true Proxify all received signal to the process  
  29. $docker attach ID  
Note: attach命令允许你查看或者影响一个运行的容器。你可以在同一时间attach同一个容器。你也可以从一个容器中脱离出来,是从CTRL-C。
7. 保存和加载镜像(save、load)
当需要把一台机器上的镜像迁移到另一台机器的时候,需要保存镜像与加载镜像。
[plain]
 
view plain
 
copy
  1. # 保存镜像到一个tar包; -o, –output="" Write to an file  
  2. $docker save image_name -o file_path  
  3. # 加载一个tar包格式的镜像; -i, –input="" Read from a tar archive file  
  4. $docker load -i file_path  
  5.   
  6. # 机器a  
  7. $docker save image_name > /home/save.tar  
  8. # 使用scp将save.tar拷到机器b上,然后:  
  9. $docker load < /home/save.tar  
8、 登录registry server(login)
[plain]
 
view plain
 
copy
  1. # 登陆registry server; -e, –email="" Email; -p, –password="" Password; -u, –username="" Username  
  2. $docker login  
9. 发布image(push)
[plain]
 
view plain
 
copy
  1. # 发布docker镜像  
  2. $docker push new_image_name  
10.  根据Dockerfile 构建出一个容器
[plain]
 
view plain
 
copy
  1. #build  
  2.       –no-cache=false Do not use cache when building the image  
  3.       -q, –quiet=false Suppress the verbose output generated by the containers  
  4.       –rm=true Remove intermediate containers after a successful build  
  5.       -t, –tag="" Repository name (and optionally a tag) to be applied to the resulting image in case of success  
  6. $docker build -t image_name Dockerfile_path  
 docker run -itd -p 3307:3306 -v /usr/local/docker/mysql/:/var/lib/mysql/ -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6 

Author:

发表评论

电子邮件地址不会被公开。 必填项已用*标注