内容简介:Docker进阶 & C++ boost入门昨天玩docker玩到夜里一点多,总算是使用docker搭建了一个能够编译引用了C++ boost库的应用程序的开发环境,犹豫了许久要不要输出这篇博客,后来觉得可以简单写一写,主要原因两个,其一是因为这可以让我再加深一些对docker常用命令的印象;其二是为学习后面的C++ boost库开一个头,有一个能够编译boost程序的快捷的环境。所以正好用一篇文章达到两个目的。因此得出这篇文章就会围绕我上面提到的两个点进行展开,分别是如何使用docker搭建一个独立可运行
Docker进阶 & C++ boost入门
昨天玩 docker 玩到夜里一点多,总算是使用docker搭建了一个能够编译引用了C++ boost库的应用程序的开发环境,犹豫了许久要不要输出这篇博客,后来觉得可以简单写一写,主要原因两个,其一是因为这可以让我再加深一些对docker常用命令的印象;其二是为学习后面的C++ boost库开一个头,有一个能够编译boost程序的快捷的环境。所以正好用一篇文章达到两个目的。因此得出这篇文章就会围绕我上面提到的两个点进行展开,分别是如何使用docker搭建一个独立可运行的centos并能够通过外部ssh连接到这个container container并提交到自己个人的docker hub仓库,以及如何在centos中安装boost库,并完成一个显示boost版本的c++程序,下面正式进入主题
Docker创建Centos镜像
启动镜像
实际上这一步非常简单,只需要从远程仓库搜索到指定的docker image,拉下来,并使用docker run执行之就可以了,这里搜索直接使用下面的命令搜索在Docker hub中所有可用的image
docker search centos6.5
这里出现了一系列备选的image选项,从中选取任意一个就可以,这里我选择了star数最多的,与github类似,star代表了这个镜像的流行程度和靠谱程度
下面就可以直接使用docker run来运行这个image,具体到我这里,命令如下
docker run -it --name="bryantchang_boost_proj" --user root -p 2200:22 --privileged=true --cap-add=SYS_PTRACE --cap-add=SYS_TIME --security-opt seccomp=unconfined -v /Users/bryantchang/Desktop/codes/tools/docker/srcs:/home/bryantchang/docker_proj hasedon/centos6.5 /bin/bash
这里面有一些重要的参数需要说明:
-it 使用交互模式运行(-i 和 -t是两个独立的配置项,不过很大概率上他们是被绑在一起使用的) -p 2200:22 将docker中的22端口映射到本机的2200端口,那么我们在docker中部署好sshd server之后,可以通过访问2200端口访问到内部的docker容器 --name 这个container的名字 --user 运行image的用户名 --privileged 是否对image拥有系统权限,如果这个参数不设置成true,及时使用root用户启动了image,也只是普通用户而已 --cap-add 这个景象中拥有的能力,例如用于支持gdb的SYS_PTRACE,用于显示时间的SYS_TIME -v : 将本地的某个目录映射到image中的某个指定目录(文件的本地与远程的映射) /bin/bash 启动container后就是/bin/bash
这里需要说明一下,这里通过docker内部部署sshd server来让外部访问docker container的方式并不推荐,这里只是为了介绍-p的含义,docker的4中推荐的访问方式详见 docker的4种推荐访问方式
当然这里面也有一些问题,稍后我会说明。这时,一个干净的centos6.5镜像就被部署在了本地的docker engine中,下面先暂时抛开docker环境,我们把操作的对象集中于Centos6.5本身,下面的主题就是如何在centos中安装boost库
Centos安装boost库以及c++编译环境+gdb
首先安装基本的lib
yum upgrade yum update yum install -y
安装gcc g++以及gdb,这里都是一些简单的命令,不过多赘述,直接上命令
yum -y install gcc #安装gcc yum -y install gdb #安装gdb yum -y install gcc-c++ #安装g++
安装完这些简单的lib和工具,现在先简单写个cpp程序测试一下是不是上述 工具 是否安装成功,写了一个最简单的Hello World,代码如下
#include <iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; }
g++ -o main main.cpp ./main
效果如下
程序运行成功,说明环境安装完成。至于gdb,直接输入gdb就可以看到是否安装成功
其次,安装boost库,安装方法也十分简单,首先下载boost的压缩包,这里我们安装的是1.64.0
wget http://ufpr.dl.sourceforge.net/project/boost/boost/1.64.0/boost_1_64_0.tar.bz2
解压后直接通过bootstrap和b2进行安装
./bootstrapt.sh ./b2 --buildtype=complete install
这里我用的是完全安装,脚本将会自动安装调试版,正式版,静态库和动态库。
完成安装后,boost库宣告安装完成,下面我们用一个boost中的helloworld程序打印我当前的boost版本,代码如下
#include <iostream> #include <boost/version.hpp> using namespace std; int main() { cout << "Boost 版本" << BOOST_VERSION << endl; return 0; }
还是按照之前的方式进行编译,并运行,运行结果如下
到此,我们完成了boost库的安装,接下来则是保存当前的镜像状态,将这个镜像提交到个人的dockerhub,如果没有dockerhub的话,需要类似github一样在Docker hub仓库注册新的账户,注册完后,在本机输入下面命令连上dockerhub的提交客户端,如果出现如下信息,说明登录成功
docker login
下面我们完成最后一步,将image提交到个人仓库
调教当前image到docker hub
与github类似,提交到docker镜像仓库也有两步,commit和push,commit为本地提交,命令如下
docker commit -a bryantchangxy -m "boost commit" bryantchang_boost_proj bryantchangxy/gcc_boost:latest
其中 -a为提交的用户,-m 为提交时的摘要,bryantchang_boost_proj这个名字则是你运行的container的名字,如果没有的话就要填写当前运行container id bryantchangxy/gcc_boost:latest则是你自己仓库下的某个具体的某个项目,完成后会生成一个sha256的代码用于标示本次提交
完成后,正式push到个人仓库,命令如下
docker push bryantchangxy/gcc_boost:latest
成功后就可在个人的仓库中看到自己的image了
同时还能够通过docker search搜索到自己的的image
docker search gcc_boost
大功告成,最后为我的image做个广告,自己在这个景象中安装了常用语言的编译,执行环境,如java,scala,go等还有mvn等一系列工具,欢迎大家下载,star个人的docker hub地址为 docker hub个人主页 后面有一些好玩的东西,我也会以image的方式放到这个仓库中,欢迎大家关注。后面的文章将正式围绕boost这个准标准库的特性展开。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Hyperledger Fabric环境搭建及环境测试(Mac环境)
- CV 环境很重要,各种环境搭建大全
- Openstack Queens 环境搭建(一)环境准备
- Python 环境搭建
- 1 - 搭建开发环境
- 搭建 Android 内核环境
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。