一、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>