docker 命令小结

来源:互联网 发布:java web项目根目录 编辑:程序博客网 时间:2024/06/07 23:31

老大让我打个docker 包, 突然发现有些docker 命令已经渐渐忘记了。。。。。。很是尴尬,当初没有做好总结,导致命令到处搜集,索性今晚总结一下常用命令。

镜像

1.docker pull 命令来从仓库获取所需要的镜像

docker pull ubuntu:12.04

下载过程中,会输出获取镜像的每一层信息。
该命令实际上相当于docker pull registry.hub.docker.com/ubuntu:12.04命令,即从注册服务器中的 ubuntu 仓库来下载标记为 12.04 的镜像。

2.显示本地已有的镜像

docker images //显示本地已有的镜像docker images –tree //以树状结构列出镜像的所有提交历史。 
  1. 在列出信息中,可以看到几个字段信息
  2. 来自于哪个仓库,比如 ubuntu 镜像的标记,比如 14.04
  3. 它的 ID 号(唯一) 创建时间
  4. 镜像大小

3.进入镜像内部

docker run -t -i ubuntu:12.04 /bin/bash

4.修改镜像后我们使用 exit 来退出,现在我们的容器已经被我们改变了,使用 docker commit 命令来提交更新后的副本。

sudo docker commit -m "Added json gem" -a "Docker Newbee" imageID ouruser/sinatra:v2

其中,
-m 来指定提交的说明信息,跟我们使用的版本控制工具一样;
-a 可以 指定更新的用户信息;
之后是用来创建镜像的容器的 ID;
最后指定目标镜像的仓库 名和 tag 信息。
创建成功后会返回这个镜像的 ID 信息。

5.下载了一个 ubuntu-14.04 的镜像,之后使用以下命令导入:

sudo cat ubuntu-14.04.tar.gz  | docker import - ubuntu:14.04

6.上传镜像
可以通过 docker push 命令,把自己创建的镜像上传到仓库中来共享

sudo docker push myImageName

7.导出镜像到本地文件,可以使用 docker save 命令。

docker save -o ubuntu_14.04.tar ubuntu:14.04     ///ubuntu_14.04.tar 是保存到本地的名称  ubuntu:14.04为原始镜像的名称。

8.使用 docker load 从导出的本地文件中再导入到本地镜像库

sudo docker load --input ubuntu_14.04.tar

sudo docker load < ubuntu_14.04.tar

9.移除本地镜像

docker rmi // docker rmi 命令移除镜像。注意 docker rm 命令是 移除容器。//在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器

10。强行移除该镜像,即使其正被使用;

docker rmi -f  imageID

11。清理所有未打过标签的本地镜像

sudo docker rmi $(docker images -q -f "dangling=true")

12。显示一个镜像的历史;

docker history image_name

容器

1。启动一个 bash 终端,允许用户进行交互。

sudo docker run -t -i ubuntu:14.04 /bin/bash// -t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的标准输入 上,   则让容器的标准输入保持打开。

2.启动已终止容器

docker start  容器IDdocker start -i  containerID /// 启动一个Container并进入交互模式

3。 后台(background)运行

sudo docker run -d 镜像ID
 此时容器会在后台运行并不会把输出的结果(STDOUT)打印到宿主机上面(输出结果 可以用docker logs 查看)。

–name 标记可以为容器自定义命名。

docker run -d -P --name web 镜像ID

–net:host 映射宿主机的host (容器可用宿主机IP访问,解决容器上网问题)

docker run -d -P --net=host  --name web 镜像ID

4。查看docker 容器启动日志

docker logsdocker logs -f <容器名orID> //查看容器日志

5。 终止容器
停止一个正在运行的容器

docker stop  容器ID

6。查看停止后的容器

docker ps -a // 处于终止状态的容器,可以通过 docker start 命令来重新启动。docker ps -q //仅列出容器ID docker ps -s// 显示容器大小。

7。 进入容器

docker exec -it 容器id bin/bash

8.导出容器

docker export ContainerID > 导出的名字.tar

9。导入容器快照

cat 本地镜像文件.tar | sudo docker import - test/ubuntu:v1.0/// test/ubuntu:v1.0为本地镜像

10。将一个container固化为一个新的image,后面的repo:tag可选

docker commit <container> [repo:tag]  

10.删除容器

sudo docker rm  容器IDdocker rm <container...>  // 删除一个或多个containerdocker rm `docker ps -a -q` //删除所有的containerdocker ps -a -q | xargs docker rm   //同上, 删除所有的container

用 docker ps -a 命令可以查看所有已经创建的包括终止状态的容器,如果数量 太多要一个个删除可能会很麻烦,用 docker rm $(docker ps -a -q) 可以全 部清理掉。

仓库

docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。

数据卷

1。创建一个数据卷
用 docker run 命令的时候,使用 -v 标记来创建一个数据卷并挂载到容器 里。在一次 run 中多次使用可以挂载多个数据卷。
下面创建一个名为 web 的容器,并加载主机的 /src/webapp 目录到容器的 /opt/webapp 目录。

docker run -d -P --name web -v /src/webapp:/opt/webapp ImageID

Docker 挂载数据卷的默认权限是读写,用户也可以通过 :ro 指定为只读。

sudo docker run -d -P --name web -v /src/webapp:/opt/webapp:roImageID

2。查看数据卷的具体信息

docker inspect 容器名字

网络

1。当使用 -P(大写) 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开
放的网络端口。

sudo docker run -d -P  ImageId

2。-p(小写的)则可以指定要映射的端口在一个指定端口上只可以绑定一个 容器。支持的格式有 ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort

docker run -i -t -p <host_port:contain_port>  ImageId// 将container的端口映射到宿主机的端口

容器互联

1。
将新启动的 web 容器和 存在的db容器进行互联

先创建一个db 容器

sudo docker run -d --name db 镜像ID

在创建一个 web 容器和db 互联
–link 参数的格式为 –link name:alias ,其中 name 是要链接的容器的 名称, 是这个连接的别名。

sudo docker run -d -P --name web --link db:db 镜像ID

Docker 在两个互联的容器之间创建了一个安全隧道,而且不用映射它们的端口到 宿主主机上。在启动 db 容器的时候并没有使用 -p 和 -P 标记,从而避免了暴 露数据库端口到外部网络上。

2。公开连接信息
使用 env 命令来查看 web 容器的环境变量

$ sudo docker run --rm --name web2 --link db:db 镜像ID en
0 0