最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

docker 直接部署可执行文件

XAMPP新闻 admin 629浏览 0评论

#只要有想做的事,想见的人,那就不要考虑结果会如何,努力奔跑便是了。

zzzzzs00064docker

#前提拓展:

#动态编译 (动态链接)dynamically linked
gcc Proxy2.c config.c -pthread -o proxy
#使用file查看proxy文件链接情况
proxy: ELF 64-bit LSB shared object, ARM aarch64, 
version 1 (SYSV), dynamically linked, 
interpreter /lib/ld-linux-aarch64.so.1, 
for GNU/Linux 3.7.0, BuildID[sha1]=ae8630ce1e6ab7e933c7ca688f90dbbfeec90e21, not stripped

#静态编译(静态链接)statically linked
gcc -static Proxy2.c config.c -pthread -o proxy
#使用file查看proxy文件链接情况
proxy: ELF 64-bit LSB executable, ARM aarch64,
 version 1 (GNU/Linux), statically linked, 
 for GNU/Linux 3.7.0, BuildID[sha1]=b08ccfac797f13986fc85eafb2dd570e95ac3fbb, 
 with debug_info, not stripped

动态链接的程序在编译阶段,只将调用的库函数名和相关重定位信息记录到 ELF 可执行文件中,当程序载入内存运行时,加载器和链接器会根据记录的动态链接信息调入 OS 中的相关运行时的库,和程序动态链接后运行,所以这里就有一个对运行时动态链接库的依赖。

 

静态链接的程序则在编译阶段即将程序会用到的所有链接库函数全部取出来放到程序中作为程序的一部分。

静态链接的好处就是不需要程序的运行环境有运行时环境的支持,即可用自身所带的最小需要的库函数等载入运行,这在嵌入式环境中是非常频繁用到的,此外在对运行时环境中某些库版本有需求时,为了保证程序在不同环境下的运行会用到。

静态链接的缺点则是,更长时间编译、与浪费空间,更新困难。

经过前面的拓展,我们制作docker可执行文件镜像时候,在编译的时候应该选择静态编译。因为可执行程序中已经具备了所执行程序所需要的任何东西。

#定时1s打印

#include <stdio.h>
#include <unistd.h>
int main(int argc, char **argv)
{
  int number = 2000;
  while(number--)
  {
    printf("docker run [%d]\n", number);
    sleep(1);
  }
}

 

#gcc 静态编译

gcc -static hellosleep.c -o hellosleep

 

#Dockerfile文件

#以ubuntu为docker容器内环境
FROM ubuntu
#在docker容器内创建jiafeng文件夹
RUN mkdir /jiafeng
#以jiafeng文件夹为工作环境
WORKDIR /jiafeng
#拷贝当前Dockerfile文件目录下的helloSleep到jiafeng
COPY helloSleep /jiafeng
#运行helloSleep
ENTRYPOINT ["/jiafeng/helloSleep"]

 

#制作/查看镜像hellosleep,

#制作镜像
docker build -t hellosleep .
#列出镜像
docker images

 

运行/查看docker容器

#运行镜像
docker run hellosleep
#列出运行的容器 docker ps -a 则是列出所有容器
docker ps

 

出现了问题,发现好长时间才进行打印。那是因为我们没有用交互式运行

 

解决办法:

docker run -it hellosleep
-i:允许对容器内的标准输入进行交互
-t:在容器内启动一个终端

用交互模式运行容器,并为容器重新分配一个伪输入终端。这样就可以进入到docker容器内部的环境。

转载请注明:XAMPP中文组官网 » docker 直接部署可执行文件

您必须 登录 才能发表评论!