Docker 基本命令

docker常用操作命令

一、镜像:

docker pull NAME[:TAG]

从网络上下载镜像,如果不显示的制定TAG,则默认会选择latest标签,即下载仓库中最新版本的镜像。

docker images

列出本地主机上已有的镜像

  • 来自于哪个仓库
  • 镜像的标签信息
  • 镜像的ID号(唯一)
  • 创建时间
  • 镜像大小
docker inspect 镜像ID

获取该镜像的详细信息

docker search

搜多远端仓库中共享的镜像,默认搜索Docker Hub官方仓库中的镜像。支持参数

  • –automated=false 仅显示自主创建的镜像
  • –no-trunc-false 输出信息不截断显示
  • -s , –starts-0 制定仅显示评价为指定星级以上的镜像
docker rmi 镜像标签或镜像ID

删除镜像(如果该景象创建的容器存在时,镜像文件是无法被删除的)可以先删除依赖该景象的所有容器

docker rm 容器ID

 

docker commit

创建镜像

  • -a,–author==””作者信息
  • -m,–message=”” 提交信息
  • -p,–pause=true 提交时暂停容器运行
docker save -o ubuntu_14.04.tar ubuntu;14.04

存出镜像

docker load --input ubuntu_14.04.tar
docker load < ubuntu_14.04.tar

载入镜像

docker push NAME[:TAG]

上传镜像

二、容器

docker create -it ubuntu:latest

新建容器 ,可以使用docker start 命令来启动它

docker run ubuntu   /bin/echon  'Hello world'

新建并启动容器等价于docker create + docker start

利用docker run 来创建并启动容器时,Docker 在后台运行的标准操作包括

  • 检查本地是否存在制定的镜像,不存在就从公邮共苦下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中
  • 从地址池配置一个IP地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

下面的命令则启动一个bash终端,允许用户进行交互:

docker run -t -i ubuntu:14.04 /bin/bash
  •  -t选项表示让Docker 分配一个伪终端并绑定到容器的标准输入上
  • -i则让容器的标准输入保持打开
  • -d让docker容器在后台已守护态(Daemonized)形式运行

用户可以按Ctrl+d 或者输入exit命令来退出容器

docker stop 容器ID

终止容器,docker kill 命令会直接发送SIMGILL信号来强行终止容器

docker ps -a -q

查看处于终止状态的容器ID

docker run -idt ubuntu
docker attach 容器名称

使用参数-d,容器启动后会进入后台,用户无法看到容器中的信息,可以使用attach进入容器但有时attache不方便,docker 1.3版本起提供了exec命令

docker exec -ti 容器ID /bin/bash

 

docker rm

删除容器

  • -f –force=false 强制终止并删除一个运行中的容器
  • -l –link-false 删除容器的连接,但保留容器
  • -v –volumes=false 删除容器挂在的数据卷
cat test_for_run.tar | docker import - test/ubuntu:v1.0

导入容器

三、数据管理

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py

-P 是允许外部访问容器需要暴露的端口

加载主机的/src/webapp 目录到容器的/opt/webapp目录:

docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp:ro python app.py

ro表示只读 rw表示读写

docker run -it -v /dbdata --name dbdata ubuntu

创建一个数据卷容器dbdata,并在其中创建一个数据卷挂在到/dbdata:

其它容器使用–volumes-from来挂载dbdata容器中的数据卷

docker run -it --volumes-from dbdata --name db1 ubuntu
docker run -it --volumes-from dbdata --name db2 ubuntu

此刻db1和db2都挂载同一个数据卷到相同的/dbdata目录。三个容器任何一方在该目录写入,其它容器都可以看到

可以多次使用–volumes-from参数 来从多个容器挂载多个数据卷。还可以从其他已经挂在容器卷的容器来挂载数据卷:

docker run -d --name db3 --volumes-from db1 training/postgres

!使用–volumes-from参数所挂在数据卷的容器自身并不需要保持运行状态。

docker run --volumes-from dbdata -v $(pwd):/backpu --name worker ubuntu tar cvf /backpu/backpu.tar /dbdata

首先利用ubuntu镜像创建了一个容器worker。使用–volumes-from dbdata 参数来让worker容器挂在dbdata容器的数据卷(即dbdata数据卷);使用-v$(pwd):/backup参数来挂在本地的当前目录到worker容器的/backup目录。

worker容器启动后,使用tar -cvf /backup/backup.tar /dbdata明亮来将/dbdata下内容备份为容器内的/backup/backup.tar,即宿主主机当前目录下载backup.tar

docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /backup/backup.tar

恢复,首先创建一个带数据卷的容器dbdata2,然后创建另一个新的容器,挂在dbdata2的容器,并使用untar解压备份文件到所挂在的容器卷中即可

四、网络基础配置

docker run -d -P training/webapp python app.py
docker ps -l

-P docker会随机映射一个49000-49900的端口至容器内部开放的网络端口

docker logs -f 容器名称

查看容器信息

docker run -d -p 5000:5000 training/webapp python app.py

hostPort:containerPort 将本地的5000端口映射到容器的5000端口

docker run -d -p 5000:5000 training/webapp python app.py
docker run -d -p 5000:5000 -p3000:80 training/webapp python app.py

多次使用-p可以绑定多个端口

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

映射制定地址的端口

docker port 容器名称 5000

查看映射端口配置

容器的名称是唯一的。如果已经命名了一个叫web的容器,当你要再次使用web这个名称的时候,需要先用docker rm来删除之前创建的同名容器

容器互联

docker run -d --name db training/postgress

创建一个新的数据库容器

docker rm -f web
docker run -d -P --name web --link db:db training/webapp python app.py

删除之前创建的web容器,并将它连接到db容器,此时,db容器和web容器建立互联关系 –line name :alias name为链接容器的名称alias 链接的别名,可以使用docker ps 查看连接信息

 

共有 0 条评论

 Top