DockerJava 杂谈程序员

史上最快Docker入门!(三)-Docker的镜像和容器

2018-10-12  本文已影响55人  紫霞等了至尊宝五百年

1 Docker架构和底层技术简介

Docker Platform
Docker Engine


Docker Architecture
底层技术支持

2 Docker Image概述


dockerimage结构

从基本的看起,一个典型的 Linux 文件系统由 bootfs 和 rootfs 两部分组成,

2.2 image的获取

image的获取-1

image的获取-2

image的获取-2
sudo docker pull ubuntu:16.04

官方镜像仓库

3 DIY Base Image

无需再用 sudo 权限




运行结果
vim Dockerfile
docker build -t root/hello-world .

docker run root/hello-world

4 初识Container

什么是 Container

docker rm 默认就是移除 container
docker images = docker image ls


5 构建自己的Docker镜像

-a :提交的镜像作者;

-c :使用Dockerfile指令来创建镜像;

-m :提交时的说明文字;

-p :在commit时,将容器暂停。
使用当前目录的 Dockerfile 创建镜像,标签为 runoob/ubuntu:v1。

docker build -t runoob/ubuntu:v1 . 
使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。

docker build github.com/creack/docker-firefox
也可以通过 -f Dockerfile 文件的位置:

$ docker build -f /path/to/a/Dockerfile .
在 Docker 守护进程执行 Dockerfile 中的指令前,首先会对 Dockerfile 进行语法检查,有语法错误时会返回:

$ docker build -t test/myapp .
Sending build context to Docker daemon 2.048 kB
Error response from daemon: Unknown instruction: RUNCMD
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-p: 端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

docker run -it ubuntu


新创建的container



docker commit wizardly_feynman root/ubuntu-vim

删除刚才创建的 docker

以上新建方式不推荐,下面看

5.2 dockerfile 创建方法

上一篇下一篇

猜你喜欢

热点阅读