一、Docker 镜像使用

1.1 基本命令

# 列出镜像列表
docker images
# 拉取镜像
docker pull ubuntu:13.10
# 查找镜像
docker search httpd
# 删除镜像
docker rmi hello-world
1.2 创建镜像

首先创建容器

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

通过命令 docker commit 来提交容器副本

docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2

各个参数说明:

  • -m: 提交的描述信息
  • -a: 指定镜像作者
  • e218edb10161:容器 ID
  • runoob/ubuntu:v2: 指定要创建的目标镜像名

1.3 构建镜像

使用命令 docker build , 从零开始来创建一个新的镜像

1.4 设置镜像标签

使用 docker tag 命令,为镜像添加一个新的标签。

docker tag 860c279d2fec runoob/centos:dev

二、容器使用``

2.1 启动容器

使用run命令启动容器

docker run --name test-unbuntu -it ubuntu /bin/bash

参数说明:

  • -i: 交互式操作
  • -t: 终端
  • ubuntu: ubuntu 镜像
  • /bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash
  • –name: 为容器起名字

要退出终端,直接输入exit

添加-d参数可以后台运行

2.2 查看所有的容器

使用ps命令查看运行中的容器

docker ps 

查看所有容器添加-a参数

docker ps -a

2.3 启动已停止运行的容器

通过ps命令查询容器ID后使用start命令再次启动

docker start <容器 ID>

2.4 停止一个容器

通过ps命令查询容器ID后使用stop命令停止

 docker stop <容器 ID>

2.5 进入容器

  • 使用attach命令
 docker attach <容器 ID>
  • 使用exec命令
docker exec -it <容器 ID> /bin/bash

attach命令与exec命令的区别在于使用 exec命令进入后退出不会停止容器,,这就是为什么推荐大家使用 docker exec 的原因

2.6 退出容器

  • Ctrl+P+Q:正常退出不关闭容器
  • exit:退出并关闭容器

2.7 导出和导入容器

使用export命令和import命令可以导出导入容器

docker export 1e560fca3906 > ubuntu.tar
cat docker/ubuntu.tar | docker import - test/ubuntu:v1

2.8 删除容器

使用rm命令删除容器

docker rm -f 1e560fca3906

三、高级使用

3.1 网络端口映射

run命令可以添加-p-P来配置端口映射,区别在于:

  • -P是容器内部端口随机映射到主机的端口
  • -p是容器内部端口绑定到指定的主机端口
docker run -d -p 5000:5000 xxx:xxx

另外,我们可以指定容器绑定的网络地址,比如绑定 127.0.0.1

如果要绑定 UDP 端口,可以在端口后面加上 /udp

 docker run -d -p 127.0.0.1:5000:5000/udp xxx:xxx

3.2 数据卷挂载

docker支持使用-v参数将容器的内目录挂载到本地,用来持久化数据,避免容器内的数据丢失,同时可以实现数据的共享

docker run -it -v 主机目录:容器内目录 xxx:xxx

匿名挂载,/var/test为容器内路径

docker run -it -v /var/test xxx:xxx

具名挂载,不指定目录时会在/var/lib/docker/volumes/目录下生成对应目录

docker run -it -v test:/var/test xxx:xxx

通过 -v 容器内路径:ro rw 改变读写权限

# ro readonly 只读
# rw readwrite 可读可写
docker run -it -v test:/var/test:ro xxx:xxx
docker run -it -v test:/var/test:rw xxx:xxx

可以使用inspect命令查看是否挂载成功

 docker inspect <容器 ID>