docker小结1
1通过dockerfile建立一个简单的HELLO.C,然后做一个简单的dockerimage
,这个是baseimage,共享宿主机的baseimage
建立目录,比如helloworld目录下,建立Dockerfile文件,写入
FROMscratch
ADDhello/
CMD["/hello"]//CMD运行后是会马上退出的
>dockerbuild-tliaoyurong/hello-world.
运行dockerrunliaoyurong/hello-world输出结果
2IMAGE和容器container的关系,大概等于类和实例的关系
3docercontainerls-a//列出当前运行和已退出的container
4dockerrun-itcentos//直接会进centosdecontainer,
exit//退出
5dockercontainerrmcontainerid(可以不写全)
6dockerps-a
dockerls-aq//列出所有containerid
dockerrm$(dockercontainerls-aq)//全部清理
7
比如在container中做了修改后,EXIT退出DOCKER,
docercontainerls-a
找出最新的names(是个随机字母)
dockercommitnamesxxxx/xxxx//容器中再修改后再提交成IMAGE
8通过dockerfile往CENTOS中安装VIM
FROMcentos
RUNyum-installvim
然后dockerbuild-tliao/xxxx.
9dockerfile语法
FROMscratch//制作baseimage
FROMcentos
LABELversion="1.0"//定义相关元数据
RUNyumupdate&&yuminstall-y.....
WORKDIR/root设定当前工作目录
ADDhello///复制到根目录
ADDtest.tar.gz/添加到根目录并解压
WORKDIR/root
ADDhellotest/hello的位置在#/root/test/hello
ENVMYSQL_VER5.6//设定的常量
10RUN:执行命令并创建新的IMAGELAYER
CMD:设置容易启动后默认执行的命令和参数,如果
dockerrun指定了其他命令,则CMD命令被忽略,
如果定义了多个CMD,则最后一个才给执行
ENTRYPOINT:设置容器启动时运行的命令
11SHELL格式
RUNapt-getinstall-yvim
CMDecho"hello"
ENTRYPOINTecho"hello"
//shell格式执行的话,能识别比如$name=abc这样的参数替换
EXEC格式
RUN["apt-get","install",.....]//通过逗号分隔
ENVnamedocker
ENTRYPOINT["/bin/bash","-c","echohello$name"]
12ENTRYPOINT//一般让容易以应用程序用服务形式执行,一定会执行;
13dockerpushxxx/xxxx;//发布
dockerpullxxx/xxxx//推送
分享dockerfile:
可以关联github上的库,dockerhub服务器从GITHUB上BUILD,等于DOCKERHUB帮你BUILD了,
其他人更信服
14dockersearchjava//搜索
15dockerrun-d-p91:80nginx
就是启动一个NGINX容器,-d后台运行-p宿主机端口:容器端口
则访问http://docker宿主IP:91就等于访问NGINX的80