1 通过dockerfile建立一个简单的HELLO.C,然后做一个简单的docker image

,这个是base image,共享宿主机的base image


建立目录,比如helloworld目录下,建立Dockerfile文件,写入


FROM scratch

ADD hello /

CMD ["/hello"] //CMD运行后是会马上退出的


>docker build -t liaoyurong/hello-world .

运行docker run liaoyurong/hello-world 输出结果


2 IMAGE和容器container的关系,大概等于类和实例的关系


3 docer container ls -a //列出当前运行和已退出的container


4 docker run -it centos //直接会进centosde container,

exit //退出


5 docker container rm containerid(可以不写全)

6 docker ps -a

docker ls -aq //列出所有containerid

docker rm $(docker container ls -aq) //全部清理


7

比如在container中做了修改后,EXIT退出DOCKER,


docer container ls -a


找出最新的names(是个随机字母)

docker commit names xxxx/xxxx //容器中再修改后再提交成IMAGE


8 通过dockerfile往CENTOS中安装VIM

FROM centos

RUN yum-install vim


然后docker build -t liao/xxxx .


9 dockerfile语法

FROM scratch // 制作baseimage

FROM centos

LABEL version="1.0" //定义相关元数据

RUN yum update &&yum install -y .....


WORKDIR /root 设定当前工作目录

ADD hello / //复制到根目录

ADD test.tar.gz / 添加到根目录并解压


WORKDIR /root

ADD hello test/ hello的位置在#/root/test/hello


ENV MYSQL_VER 5.6 //设定的常量



10 RUN:执行命令并创建新的IMAGE LAYER

CMD:设置容易启动后默认执行的命令和参数,如果

docker run指定了其他命令,则CMD命令被忽略,

如果定义了多个CMD,则最后一个才给执行

ENTRYPOINT:设置容器启动时运行的命令


11 SHELL格式

RUN apt-get install -y vim

CMD echo "hello"

ENTRYPOINT echo "hello"

//shell格式执行的话,能识别比如$name=abc这样的参数替换


EXEC格式

RUN ["apt-get","install",.....] //通过逗号分隔

ENV name docker

ENTRYPOINT["/bin/bash","-c","echo hello $name"]


12 ENTRYPOINT //一般让容易以应用程序用服务形式执行,一定会执行;

13 docker push xxx/xxxx ; //发布

docker pull xxx/xxxx //推送

分享dockerfile:

可以关联github上的库,dockerhub服务器从GITHUB上BUILD,等于DOCKERHUB帮你BUILD了,

其他人更信服


14 docker search java //搜索




15 docker run -d -p 91:80 nginx

就是启动一个NGINX容器,-d 后台运行 -p 宿主机端口:容器端口

则访问http://docker宿主IP:91 就等于访问NGINX的80