Docker - Dockerfile学习
参考资料
一、首先建立一个 hello-world.cpp 文件
#include <iostream>
using namespace std;
int main () {
cout << "hello-world" << endl;
cout << "my first docker" << endl;
return 0;
}
二、编写DockerFile文件
FROM codenvy/cpp_gcc
RUN mkdir /home/user/myapp
ADD hello-world.cpp /home/user/myapp
ADD cmakeTest.tar.gz /home/user/myapp
ADD start.sh /home/user/myapp
WORKDIR /home/user/myapp
RUN g++ hello-world.cpp -o hello
ENV LD_LIBRARY_PATH /home/user/myapp/cmakeTest/comlib/3part/jsoncpp/lib:$LD_LIBRARY_PATH
ENV PATH /home/user/myapp/cmakeTest/comlib/3part/jsoncpp/lib:$PATH
CMD ["./hello"]
CMD ["./start.sh"]
EXPOSE 9950
具体含义
1、FROM codenvy/cpp_gcc
FROM是后面是该目标镜像使用的基础镜像。
2、RUN mkdir /home/user/myapp
RUN命令是容器构建时需要的命令,后面带有的就是我们常见的linux命令。
该命令就是在 /home/user 路径下新建一个 myapp 文件夹
3、ADD hello-world.cpp /home/user/myapp
ADD命令是将宿主机下的文件拷贝到镜像,也可以用COPY命令,不过ADD比COPY的功能更强大,ADD带有解压缩的功能。
该命令就是将第一步新建的 hello-world.cpp 源文件拷贝到镜像中的/home/user/myapp 路径下。
4、WORKDIR /home/user/myapp
WORKDIR命令就是指定创建容器时,容器的默认工作目录。
该命令将镜像中的 home/user/myapp 路径作为默认工作路径。
5、RUN g++ hello-world.cpp -o hello
该命令是使用g++编译 hello-world.cpp 源文件,构建一个可执行文件hello
6、CMD ["./hello"]
CMD是指定容器创建完成后第一个运行的命令。
该命令是运行上一步构建的可执行文件 hello
三、创建镜像
上述两个文件都放在/home/docker/路径下, 使用命令:
#docker build -f ./hello-dockerfile -t my_hello_docker:v1.0 .
[root@192 docker]# docker build -f ./hello-dockerfile -t my_hello_docker .
./hello-dockerfile: Dockerfile的所在位置
my_hello_docker: 新建的镜像的名字
v1.0:该镜像的标签。
四、通过该镜像运行一个容器
通过以下命令实例化一个容器:
[root@192 deploy]# docker run -it my_hello_docker bash
user@cc376d7c7865:~/myapp$
五、实践内容
端口映射,只能在宿主机上访问对应小网地址