镜像
1.获取镜像
docker pull dl.dockerpool.com:5000/ubuntu:14.04(dl.dockerpool.com为注册服务器,5000为端口号,ubuntu为仓库名称,14.04是镜像也是版本号)
2.查看镜像信息
docker images(列出本地主机已有的所有镜像)
更改变迁信息
docker tag dl.dockerpool.com:5000/ubuntu:latest ubuntu:latest
docker inspect 000(000为镜像ID,显示这个镜像的详细信息)
3.搜寻镜像
docker search mysql (输出信息包括镜像名字、描述、星级、是否为官方创建、是否自动创建 )
4.删除镜像
docker rmi dl.dockerpool.com:5000/ubuntu:latest
注:当有该镜像创建的容器存在时,镜像文件默认是无法删除的,所以删除镜像前最好是删除所有依赖该镜像的容器,请不要用强制删除。
5.创建镜像
有三种方法:
a. 基于已有镜像的容器创建
docker commit -m “add new image”-a "" 000(容器ID) test(新建image name)
b. 基于本地模板导入
cat ubuntu-14.04-x86_64-minimal.tar.gz | docker import - ubuntu:14.04
c. 基于dockerfile创建
6.存出镜像
docker save -o ubuntu_14.04.tar ubuntu:14.04
7.载入镜像
docker load --input ubuntu_14.04.tar 或者
docker load < ubuntu_14.04.tar
8.上传镜像
docker push user/test:latest(user用户需要在dockerHub网站注册)
容器
容器是镜像的一个运行实例,但它带有额外的可写层
1.创建容器
docker create -it ubuntu:12.04
2.创建并启动容器
docker run -it ubuntu:12.04 /bin/bash
3.守护态运行
docker run -d ubuntu:12.04
4.查看容器信息
docker ps [-a -q 查看终止状态]
5.获取容器的输出信息
docker logs cet(cet是容器ID前三个字符)
6.终止容器
docker stop cet
7.启动容器
docker start cet
8.重启容器
docker restart cet
9.进入容器
1) attach命令
docker attach nostalgic(nostalgic是docker的name)
缺点:所有窗口同步显示
2) exec命令
docker exec -it 243... /bin/bash (243...为docker ID)
3) nsenter命令
a)找PID
PID=$(docker-pid 243..)
b)通过PID链接容器
nsenter --target $PID --mount --uts --ipc --net --pid
10.删除容器
docker rm [-f -l -v] cet
-f 强行终止并删除
-l 删除容器的链接,保留容器
-v 删除挂载的数据卷
11.导出容器
docker export cet >test.tar
12.导入容器(将容器快照导入到本地镜像库)
cat test.tar | docker import - test/ubuntu:v1.0(重新指定标签为ubuntu的镜像名称,v1.0的版本号
docker load 也可以导入镜像存储文件到本地镜像库,他比import方式的好处是:import导入镜像快照文件将丢失所有的历史记录和元数据信息。
**注:**通过导出容器和导入容器可以实现容器迁移(拷贝文件)
仓库
仓库是集中存放镜像的地方,一个注册服务器上有很多仓库,一个仓库中有很多镜像。
1. 登录
docker login
2. 基本操作
查找、上传、下载
3. 自动创建
4. 查看镜像
5. 更新镜像标签
docker tag dl.dockerpool.com:5000/ubuntu:12.04 ubuntu:12.04(将前面的镜像更改为ubuntu:12.04)
6. 创建私有仓库
docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry(自动下载并启动registry容器,创建本地的私有仓库服务,默认仓库船舰的容器在/tmp/registry,可以通过-v参数来存放到指定路径上)
7.管理私有仓库镜像
假设私有仓库地址为10.0.2.2,端口为5000,
docker tag ubuntu:14.04 10.0.2.2:5000/test(更改标签名)
docker push 10.0.2.2:5000/test(push镜像,会自动push到10.0.2.2地址的机器上)
curl http://10.0.2.2:5000/v1/search(查看仓库10.0.2.2:5000中是否含有test镜像)
docker pull 10.0.2.2:5000/test(在任何一台能访问到10.0.2.2地址的机器上下载镜像)