1.Docker的架构和底层技术
1.Docker Platform
2.Docker Engine
3.Docker Architecture
4.底层技术支持
2. Docker Image概述
1.什么是image
2.查看本地image
sudo docker image ls
3.Image的获取
Build from Dockerfile
Pull from Registry
3.DIY一个Base Image
给vagrant用户sudo权限
1.查看已有镜像
docker image ls
2.创建一个目录叫hello-world,进入目录,创建一个C语言的hello world程序,hello.c
mkdir hello-world cd hello-world vim hello.c
编辑hello.c
#include <stdio.h> void main() { printf("Hello Docker "); }
3.下载gcc和glibc-static将hello.c编译成可执行文件hello程序
gcc -static hello.c -o hello
hello是可执行文件
4.创建一个Dockerfile文件
FROM scratch ADD hello / CMD ["/hello"]
5.使用Dockerfile构建image
docker build -t xiaopeng163/hello-world .
6.查看分层
docker history acca11e86101
7.执行
docker run xiaopeng163/hello-world
4.初识Container
1.什么是Container
2.查看本地正在运行的容器
docker container ls
3.查看当前所有的容器,包括正在运行的以及退出的
docker container ls -a
4.交互式运行容器的方法
docker run -it centos
5.删除容器
docker container rm 846b5efe98d4
删除容器时容器ID可简写
docker conatiner rm 89
6.docker ps -a 等同于docker conatiner ls -a
docker ps -a
7.docker rm 等同于docker container rm
8.docker images 等同于docker image ls
docker images
9.docker rmi 等同于 docker image rm
docker image rm 67759ccc6f1 docker rmi f2a91732366c
10.查看所有容器ID
11.删除所有容器
docker rm $(docker conatiner ls -aq)
12.删除所有已退出的容器
5.构建自己的Docker镜像
1.基于一个已经存在的container创建一个image (不提倡使用此方式)
docker commit xenodochial_pare xiaopeng163/centos-vim
2.通用Dockerfile创建image
mkdir docker-centos-vim cd docker-centos-vim
创建一个Dockerfile
FROM centos RUN yum install -y vim
通过Dockerfile构建image
docker build -t xiaopeng163/centos-vim-new .
6.Dockerfile语法梳理及最佳实践
官方文档:https://docs.docker.com/engine/reference/builder/
1.FROM
定制的镜像基于 FROM 的镜像
尽量使用官方的image作为base image
2.LABEL
LABEL定义Metadata 版本、描述等等。
3.RUN
Run a command in a new container
为了美观,复杂的RUN请用反斜线换行!避免无用分层,合并多条命令成一行!
4.WORKDIR
指定工作目录
注意:我们要使用WORKDIR不要使用RUN cd。尽量使用绝对路径。
5.ADD & COPY
大部分情况,COPY优于ADD。ADD除了COPY还有额外功能(解压)!
天津远程文件/目录请使用curl或者wget!
6.ENV
ENV指令用以定义镜像的环境变量
尽量使用ENV增加可维护性
7.RUN vs CMD vs Entrypoint
1.RUN&CMD&Entrypoint
2.Shell和Exec格式
小例子
如何让上方的结果是hello Docker
3.CMD
4.ENTRYPOINT
8.镜像的发布
1.docker push前要先登录
2.docker push
发布完成后,可在个人的Docker hub中查看到此镜像
3.另一种方式是docker hub与github做关联。
4.使用私有仓库
视频链接:https://pan.baidu.com/s/1JQpwDU-R8L-nfiydzQ5C-Q
提取码:24v3
9.Dockerfile实战
app.py
Dockerfile
build
后台执行 run -d
10.容器的操作
官方文档:https://docs.docker.com/engine/reference/commandline/cli/
1.exec
2.停止容器
通过ID
通过名字
3.删除容器
4.启动容器
启动已关闭的容器
5.docker inspect
6.docker logs
11.Dockerfile实战(2)