DockerFile练习
root@Desktop:~# pwd
/root
root@Desktop:~# mkdir test
root@Desktop:~# cd test/
1.FROM
我们创建基于centos的镜像
root@Desktop:~/test# docker pull centos
root@Desktop:~/test# vim Dockerfile
#FROM练习
FROM centos
#构建
root@Desktop:~/test# docker build -t centos:v1 .
Sending build context to Docker daemon 2.048kB
Step 1/1 : FROM centos
---> 300e315adb2f
Successfully built 300e315adb2f
Successfully tagged centos:v1
#查看镜像
root@Desktop:~/test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 300e315adb2f 4 weeks ago 209MB
centos v1 300e315adb2f 4 weeks ago 209MB #新构建镜像
#创建容器
root@Desktop:~/test# docker run -itd centos:v1 /bin/bash
1d3ae663f2f6d1b8d2c36f1783b4ab23ebefc21b944267b94a5632c6b40078d9
root@Desktop:~/test# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1d3ae663f2f6 centos:v1 "/bin/bash" 15 seconds ago Up 14 seconds suspicious_mcclintock
#进入查看容器
root@Desktop:~/test# docker exec -it 1d3ae663f2f6 /bin/bash
[root@1d3ae663f2f6 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
#停止、删除容器
root@Desktop:~/test# docker stop 1d3ae663f2f6
1d3ae663f2f6
root@Desktop:~/test# docker rm 1d3ae663f2f6
1d3ae663f2f6
2.RUN
centos基础镜像是没有vim命令的,可以使用RUN在构建时安装
root@Desktop:~/test# vim Dockerfile
#FROM练习
FROM centos
#RUN练习
RUN yum install vim -y
root@Desktop:~/test# docker build -t centos:v2 .
root@Desktop:~/test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos v2 95a4459cd11f 19 seconds ago 267MB
centos latest 300e315adb2f 4 weeks ago 209MB
centos v1 300e315adb2f 4 weeks ago 209MB
root@Desktop:~/test# docker run -itd centos:v2 /bin/bash
31013f84e8747b0a70b822c593fc9f80358637e71bd25885f14bef5a57e856f0
root@Desktop:~/test# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
31013f84e874 centos:v2 "/bin/bash" 32 seconds ago Up 30 seconds intelligent_shtern
root@Desktop:~/test# docker exec -it 31013f84e874 /bin/bash
[root@31013f84e874 /]# vim
root@Desktop:~/test# docker stop 31013f84e874
31013f84e874
root@Desktop:~/test# docker rm 31013f84e874
31013f84e874
3.COPY
root@Desktop:~/test# echo "COPY测试" >> readme.txt
root@Desktop:~/test# vim Dockerfile
#FROM练习
FROM centos
#RUN练习
RUN yum install vim -y
#COPY练习
COPY readme.txt /usr/local/readme.txt
root@Desktop:~/test# docker build -t centos:v3 .
Sending build context to Docker daemon 3.072kB
Step 1/3 : FROM centos
---> 300e315adb2f
Step 2/3 : RUN yum install vim -y
---> Using cache
---> 95a4459cd11f
Step 3/3 : COPY readme.txt /usr/local/readme.txt
---> 402d5da1250d
Successfully built 402d5da1250d
Successfully tagged centos:v3
root@Desktop:~/test# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos v3 402d5da1250d 50 seconds ago 267MB
centos v2 95a4459cd11f 25 minutes ago 267MB
centos latest 300e315adb2f 4 weeks ago 209MB
centos v1 300e315adb2f 4 weeks ago 209MB
root@Desktop:~/test# docker run -itd centos:v3 /bin/bash
0fd152743c816294da0bdb8eb170cef30ee46f09de2745d83bb1476ec86fed70
root@Desktop:~/test# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0fd152743c81 centos:v3 "/bin/bash" 55 seconds ago Up 52 seconds suspicious_babbage
root@Desktop:~/test# docker exec -it 0fd152743c81 /bin/bash
[root@0fd152743c81 /]# ls /usr/local/
bin etc games include lib lib64 libexec readme.txt sbin share src
root@Desktop:~/test# docker stop 0fd152743c81
0fd152743c81
root@Desktop:~/test# docker rm 0fd152743c81
0fd152743c81
4.ADD
#下载jdk到这个目录
root@Desktop:~/test# ls
Dockerfile jdk-8u271-linux-x64.tar.gz readme.txt
root@Desktop:~/test# vim Dockerfile
#FROM练习
FROM centos
#RUN练习
RUN yum install vim -y
#COPY练习
COPY readme.txt /usr/local/readme.txt
#ADD练习
ADD jdk-8u271-linux-x64.tar.gz /usr/local/
root@Desktop:~/test# docker build -t centos:v4 .
Sending build context to Docker daemon 143.1MB
Step 1/4 : FROM centos
---> 300e315adb2f
Step 2/4 : RUN yum install vim -y
---> Using cache
---> 95a4459cd11f
Step 3/4 : COPY readme.txt /usr/local/readme.txt
---> Using cache
---> 402d5da1250d
Step 4/4 : ADD jdk-8u271-linux-x64.tar.gz /usr/local/
---> 4edbfd7b01b7
Successfully built 4edbfd7b01b7
Successfully tagged centos:v4
root@Desktop:~/test# docker run -itd centos:v4 /bin/bash0da589dae68907c2d70fbb5350e90cc571d41329492a9b3082aced18da1d3659root@Desktop:~/test# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0da589dae689 centos:v4 "/bin/bash" 24 seconds ago Up 22 seconds sharp_buckroot@Desktop:~/test# docker exec -it 0da589dae689 /bin/bash[root@0da589dae689 /]# ls /usr/local/bin etc games include jdk1.8.0_271 lib lib64 libexec readme.txt sbin share srcroot@Desktop:~/test# docker stop 0da589dae6890da589dae689root@Desktop:~/test# docker rm 0da589dae6890da589dae689
5.VOLUME
root@Desktop:~/test# vim Dockerfile
#FROM练习FROM centos#RUN练习RUN yum install vim -y#COPY练习COPY readme.txt /usr/local/readme.txt#ADD练习ADD jdk-8u271-linux-x64.tar.gz /usr/local/RUN mv /usr/local/jdk1.8.0_271 /usr/local/jdk1.8#VOLUME练习VOLUME ["/data1","/data2"]
root@Desktop:~/test# docker build -t centos:v5 .Sending build context to Docker daemon 143.2MBStep 1/6 : FROM centos ---> 300e315adb2fStep 2/6 : RUN yum install vim -y ---> Using cache ---> 95a4459cd11fStep 3/6 : COPY readme.txt /usr/local/readme.txt ---> Using cache ---> 402d5da1250dStep 4/6 : ADD jdk-8u271-linux-x64.tar.gz /usr/local/ ---> Using cache ---> 4edbfd7b01b7Step 5/6 : RUN mv /usr/local/jdk1.8.0_271 /usr/local/jdk1.8 ---> Running in 188d7fee415fRemoving intermediate container 188d7fee415f ---> 772c2cf7fecaStep 6/6 : VOLUME ["/data1","/data2"] ---> Running in d3fbf40b000fRemoving intermediate container d3fbf40b000f ---> ce71f6b3da9fSuccessfully built ce71f6b3da9fSuccessfully tagged centos:v5root@Desktop:~/test# docker run -itd centos:v5 /bin/bashaf43c31ab541e7ba742b9cad12f6652852114d1e83ffaaaaeadd1d8c881bd3d6root@Desktop:~/test# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESaf43c31ab541 centos:v5 "/bin/bash" 16 seconds ago Up 14 seconds nervous_hermannroot@Desktop:~/test# docker exec -it af43c31ab541 /bin/bash[root@af43c31ab541 /]# ls bin data1 data2 dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr varroot@Desktop:~/test# docker stop af43c31ab541
root@Desktop:~/test# docker inspect af43c31ab541 #宿主机的目录 "Mounts": [ { "Type": "volume", "Name": "0f7334729587e617b8f5ca0746ff28fab40cd8050f683ad67a4311e0b8789881", "Source": "/var/lib/docker/volumes/0f7334729587e617b8f5ca0746ff28fab40cd8050f683ad67a4311e0b8789881/_data", "Destination": "/data1", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" }, { "Type": "volume", "Name": "d49e7eed24193610e43a30b41f0d8d2513ae10c2d62d3aa0635b7f80c521f1e0", "Source": "/var/lib/docker/volumes/d49e7eed24193610e43a30b41f0d8d2513ae10c2d62d3aa0635b7f80c521f1e0/_data", "Destination": "/data2", "Driver": "local", "Mode": "", "RW": true, "Propagation": "" } ], #容器目录 "Volumes": { "/data1": {}, "/data2": {} },
6.EXPOSE
#下载好redisroot@Desktop:~/test# lsDockerfile jdk-8u271-linux-x64.tar.gz readme.txt redis-6.0.9.tar.gz
#FROM练习FROM centos#RUN练习RUN yum install vim -y#COPY练习COPY readme.txt /usr/local/readme.txt#ADD练习ADD jdk-8u271-linux-x64.tar.gz /usr/local/RUN mv /usr/local/jdk1.8.0_271 /usr/local/jdk1.8#VOLUME练习VOLUME ["/data1","/data2"]#EXPOSE练习ADD redis-6.0.9.tar.gz /usr/local/RUN cp /usr/local/redis-6.0.9/redis.conf /usr/local/redis-6.0.9/redis2.confEXPOSE 6379
ADD redis-6.0.9.tar.gz /usr/local/RUN cp /usr/local/redis-6.0.9/redis.conf /usr/local/redis-6.0.9/redis2.confEXPOSE 6379
root@Desktop:~/test# docker build -t centos:v6 .root@Desktop:~/test# docker run -it -p 6389:6379 centos:v6
6.EXPOSE
#FROM练习FROM centos#RUN练习RUN yum install vim -y#COPY练习COPY readme.txt /usr/local/readme.txt#ADD练习ADD jdk-8u271-linux-x64.tar.gz /usr/local/RUN mv /usr/local/jdk1.8.0_271 /usr/local/jdk1.8#VOLUME练习VOLUME ["/data1","/data2"]#EXPOSE练习RUN yum install nginx -yEXPOSE 80
root@Desktop:~/test# docker build -t centos:v6 .root@Desktop:~/test# docker run -it -p 8080:80 centos:v6#进入容器,启动nginx[root@08014f22b7f0 /]# nginx
在浏览器访问http://127.0.0.1:8080/ 看到nginx欢迎页面
7.CMD
root@Desktop:~/test# docker build -t centos:v7 .