Docker 使用案例


docker pull

docker pull registry.hub.docker.com/ubuntu:15.04
# 即从注册服务器 registry.hub.docker.com 中的 ubuntu 仓库来下载标记为 15.04 的镜像

存出和载入镜像

# 存出镜像
sudo docker save -o ubuntu_14.04.tar ubuntu:14.04

# 载入镜像
sudo docker load --input ubuntu_14.04.tar
sudo docker load < ubuntu_14.04.tar

导出和导入容器

# 导出容器
sudo docker ps -a
## CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES
## 7691a814370e        ubuntu:14.04        "/bin/bash"         36 hours ago        Exited (0) 21 hours ago                       test
sudo docker export 7691a814370e > ubuntu.tar

# 导入容器快照
cat ubuntu.tar | sudo docker import - test/buntu:v1.0
sudo docker import http://example.com/exampleimage.tgz example/imagerepo

注:用户既可以使用 docker load 来导入镜像存储文件到本地镜像库,也可以使用 docker import来导入一个容器快照到本地镜像库。这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当时的快照状态),而镜像存储文件将保存完整记录,体积也要大。此外,从容器快照文件导入时可以重新指定标签等元数据信息。

Generate base image

1.Dockerfile

FROM ubuntu:15.04

MAINTAINER Darebeat 
# 设置时区
ENV TZ "Asia/Shanghai"
ENV TERM xterm

ADD patch.tar.gz /
RUN apt-get update && apt-get install -y vim curl git

2.patch.tar.gz

/etc/apt/source.list
/bin/
    ping
    bash
    mysql 这是可执行的客户端二进制文件
/sbin/
    ifconfig
    route

3.built

#! /bin/bash
set -e
if [ $(docker images|grep ubuntu|grep base|awk '{print $3}') ]; then
    docker rmi -f $(docker images|grep ubuntu|grep base|awk '{print $3}')
fi
docker build -t ubuntu:base .

运行container

docker run -idt --rm -p 2222:22 -P 22 --name test busybox:latest sh

进入container

docker exec -it test /bin/bash

Docker容器内外互相拷贝数据

1.用-v挂载主机数据卷到容器内

docker run -v /path/to/hostdir:/mnt $container
# 在容器内拷贝
cp /mnt/sourcefile /path/to/destfile

2.直接在主机上拷贝到容器物理存储系统
3.用输入输出符

docker run -i ubuntu /bin/bash -c 'cat > /path/to/container/file' < /path/to/host/file/  
docker exec -it  bash -c 'cat > /path/to/container/file' < /path/to/host/file/

你可能感兴趣的:(Docker 使用案例)