Docker部署gcc程序完整步骤

1.检查内核版本,需大于3.10版本

#uname -r
3.10.0-957.5.1.el7.x86_64

2.yum更新到最新

#yum update

3.添加yum仓库

#tee /etc/yum.repos.d/docker.repo <<-‘EOF’
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF

4.安装docker引擎

#yum install -y docker-engine

5.查看是否安装成功

#docker version

6.启动docker

#systemctl start docker.service / #service docker start

7.验证安装启动是否成功

(有client和service两部分不是安装和启动都成功)
#docker version

8.查看docker是否存在镜像

#docker images

9.设置开机自启动

#sudo systemctl enable docker

10.搜索gcc镜像

#docker search gcc
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
gcc The GNU Compiler Collection is a compiling… 380 [OK]

11.下载gcc镜像

#docker pull gcc
Using default tag: latest
latest: Pulling from library/gcc
741437d97401: Pull complete
34d8874714d7: Pull complete
0a108aa26679: Pull complete
7f0334c36886: Pull complete
65c95cb8b3be: Pull complete
b40bc8c94ed4: Pull complete
abc0a6381cd8: Pull complete
9ed990ae689d: Pull complete
53f74cc4a6e6: Pull complete
Digest: sha256:c9aeb2f639fa114b94012805f880b5e388b1b8bb17423f553f285eb1386c4d82
Status: Downloaded newer image for gcc:latest

12.查看镜像是否下载至docker

#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gcc latest d9c54c668a78 8 days ago 1.15GB

13.在当前目录下创建Dockerfile和test.c

Dockerfile:
FROM gcc:latest
RUN mkdir /usr/src/myapp
COPY test.c /usr/src/myapp
WORKDIR /usr/src/myapp
RUN gcc test.c
CMD ["./a.out"]

test.c:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
int main()
{
FILE* file = fopen(“t.txt”,“w+”);
if (file == NULL)
{
return 0;
}
char buf[20]=“hello world!!!\n”;
int len = strlen(buf);
while(1)
{
fputs(buf,file);
fflush(file);
sleep(1);
}
fclose(file);
return 0;
}

14.通过Dockerfile的方式创建自己的镜像

【必须进入到Dockerfile文件路径下执行以下命令,这里我们在当前目录下执行】
#docker build -t mygcc-test:v1 .
Sending build context to Docker daemon 3.072kB
Step 1/6 : FROM gcc:latest
—> d9c54c668a78
Step 2/6 : RUN mkdir /usr/src/myapp
—> Running in e80462663ed3
—> 4167f085bd54
Removing intermediate container e80462663ed3
Step 3/6 : COPY test.c /usr/src/myapp
—> 467bb3334709
Removing intermediate container 9ec6afc315cc
Step 4/6 : WORKDIR /usr/src/myapp
—> 78198b5d00b4
Removing intermediate container 0b21a3bdd1da
Step 5/6 : RUN gcc test.c
—> Running in 618bf1b11a29
—> 9993b920877b
Removing intermediate container 618bf1b11a29
Step 6/6 : CMD ./a.out
—> Running in bdc28b925b8c
—> b9241e767ec2
Removing intermediate container bdc28b925b8c
Successfully built b9241e767ec2
Successfully tagged mygcc-test:v1

【语法
docker build [OPTIONS] PATH | URL | -
OPTIONS说明:
-f :指定要使用的Dockerfile路径;
-m :设置内存最大值;
–tag, -t: 镜像的名字及标签,通常 name:tag 或者 name 格式;可以在一次构建中为一个镜像设置多个标签。

15.查看新创建的镜像

#docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mygcc-test v1 b9241e767ec2 19 seconds ago 1.15GB
gcc latest d9c54c668a78 8 days ago 1.15GB

16.启动制作好的镜像

#docker run -d mygcc-test:v1
453ac856de656b7b52cdf41f4a44aa02fba33937eab5f06b62681f9054504510

【语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
OPTIONS说明:
-d: 后台运行容器,并返回容器ID】

17.查看容器运行情况,获取容器名

#docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
453ac856de65 mygcc-test:v1 “./a.out” 11 seconds ago Up 10 seconds awesome_saha

18.根据容器名进入容器

#docker exec -it awesome_saha /bin/bash

【语法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
OPTIONS说明:
-d :分离模式: 在后台运行
-i :即使没有附加也保持STDIN 打开
-t :分配一个伪终端】

19.查看执行结果

root@453ac856de65:/usr/src/myapp# ls
a.out t.txt test.c
root@453ac856de65:/usr/src/myapp# tail -f t.txt
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!
hello world!!!

  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值