Docker安装
Docker属于一种轻量化的虚拟解决方案,和虚拟机不完全相同,但是当我们对于进程隔离要求不是很高时,可以使用docker作为一个快速的替代方案。
一 docker的下载和安装
docker 下载官网:https://www.docker.com/get-started 当然由于总所周知的原因,一般是不可能从这上面下载下来任何东西的,推荐使用:http://get.daocloud.io/ 根据自己的操作系统,请选择对应的版本进行下载,由于我是在window上安装,因此选择该安装包:

安装过程不过多说,一路向下。

二 docker镜像下载
同理docker官网的镜像很难下载,依然推荐使用国内代理,需要在Daemon中设置镜像地址: “registry-mirrors”: [“http://f1361db2.m.daocloud.io”]
如图所示

然后在:https://hub.daocloud.io/ 搜索需要安装的镜像:
根据提示将其拉下就行:
docker pull daocloud.io/centos:7

通过:docker images 查询本地镜像是否拉取成功:

三 镜像安装与管理
镜像安装
通过 docker run 命令来将刚拉去的镜像进行启动起来:
docker run --privileged=true -idt -p 5022:22 -h MYCOMPUTER -v /F/myComputer:/datas --name mycomputer --restart=always centos_sshd_3 /usr/sbin/sshd -D

当使用docker ps命令查询到状态为 Up时,表明容器建立成功。
首先讲述一下镜像和容器的概念。我们下载下来的centos文件可以认为是一个镜像,是将一个系统完整的打包成了一个文件。使用程序员的思维,可以将其理解为一个:类;当镜像被运行起来后,就生产了一个容器,可以将其理解为:类的实例化
一般使用docker都是为了处理一些需要在linux下才能完成的动作。将本地文件夹映射给docker容器是最好的方式,具体使用就是命令中的 -v /F/myComputer:/datas 部分,冒号前面的是在windows上需要被映射的路径,后面是在docker容器中的访问路径。
–restart=always 是用来表示当重启后,默认启动该容器。
-privileged=true 是指在容器中具有root权限
-p 5022:22 是指使用本机的5022端口
-idt 中d是指启动后在后台运行,i和t一般组合使用,指为容器建立一个交互界面。如果不添加i和t参数,当容器运行后有可能会处于exiting状态。
我在第一次运行是,就未添加该参数,导致docker ps 查询的结果一直为空,通过 docker ps -as查询,发现状态一直是 exiting(0). 原因是由于docker容器本质是在原系统上新启动一个进程,在进程中运行相应的命令。当我们的镜像设置的启动后的命令比较简单,有可能会导致起来后很快就执行完了,进程自动退出。
镜像删除:
docker rmi 镜像描述

镜像提交:
docker commit -m=“update1” -a=“sshd” dcd9d82e2178 centos_sshd_4

-a 镜像描述
-m 是镜像作者
dcd9d82e2178 后面是镜像的容器ID,在下一节中会提到
centos_sshd_4 为镜像名称

四 进入容器
进入容器的方法有很多种,我一般喜欢使用ssh,因为该种方式可以使用各种工具提供的便利功能。因为容器是在本机上运行使用的是本机的网卡,因此使用127.0.0.1即可,端口号是我们在执行docker run时填写的 -p 5022:22

当然我们当前的centos是不能使用该种方式进入的,因为镜像中是没有sshd的,导致我们使用上面的方式是进不去的。因此我们要先使用docker attach的方式进入容器。
查询容器ID,并执行 docker attach 容器ID,即可进入容器

容器查看:
可以通过命令docker ps 来查看正在运行的容器。

如果容器异常停止或者未运行起来,该处显示可能为空,需要增加参数 -a来查看:

容器停止:
直接执行:docker stop 容器ID即可:

容器删除
正在运行的容器不允许删除,必须通过上一步将容器先停掉才行。然后执行命令:
docker rm 容器ID

五 安装sshd

5.1 安装openssh-server
yum install -y openssl openssh-server
5.2 修改配置文件:
在/etc/ssh/sshd_config文件中,修改如下配置:
PasswordAuthentication yes
PermitRootLogin yes
PubkeyAuthentication yes
在有些教程中,可能是需要修改RSAAuthentication项,但是在我下载的镜像中,未找到该配置项,大概收索了一下,原始是由于新版本的centos在7.4由于安全算法的更新,放弃了对RSAAuthentication的支持。但是当前仍然可以使用RSA ,这是由于该算法是有第一代和第二代之分,centos只是从第一代升级到了第二代,取消了该配置,但是仍然可以使用RSA进行登录。具体可参考:

最后使用/usr/sbin/sshd -D将该服务启动。
如果启动时会报如下错误:
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
这是由于在安装sshd时没有生成对应的密钥。
首先使用之前的docker run方式,启动容器,然后分别执行如下命令即可:
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
每条执行时,需要确认项都直接一路回车到底即可。
安装完后,权限可能无法执行,在/etc/ssh 文件夹下执行: chmod 600 * 来获取权限。权限不能太大,否则会因为权限过大,被认为不安全。

六Root密码修改
因为使用mobaxterm在登录的时候需要输入root密码,而且直接敲回车并不能进入,因此需要修改root密码,方法如下:
在系统中输入passwd命令默认修改root密码,然后输入2次密码即可。
配置完成后,记住docker commit生成新的镜像,然后在启动镜像的时候使用如下命令:
docker run --privileged=true -idt -p 5022:22 -h MYCOMPUTER -v /F/myComputer:/datas --name mycomputer --restart=always centos_sshd_3 /usr/sbin/sshd -D
即在最后添加 /usr/sbin/sshd -D,这样在容器启动的时候,就会自动执行
/usr/sbin/sshd -D 将sshd服务启动起来了。

七 mobaxterm登录
新建ssh连接,输入本地IP地址:127.0.0.1 ,用户名:root和运行容器时配置的端口号5022后,即可进入链接:

在界面输入刚刚配置的密码即可。

八 设置为全路径显示
当前默认为只显示一级路径,很多小伙伴可能不太习惯,可以使用如下方法将路径修改为显示为全路径:
针对所有用户设置可以 /etc/profile中设置

针对单个用户设置可以/home/.profile中设置。

以root用户为例:

vi /etc/profile

export PS1=’[\u@\h:$PWD]#’

保存退出文件wq
然后执行命令:source /etc/profile 生效
九 gcc的安装
Gcc的安装比较简单,在配置网络的情况下,在线安装是最为便捷的方式:
在根目录执行如下命令即可:
yum -y install gcc gcc-c++ autoconf make
安装完成后,执行:gcc --help即可查看安装是否成功以及版本号

十 cmake 安装:
Linux下的cmake安装包巨难下载,各种途径都因为资源问题下载不了。找了好久,发现下述的这个包下载速度很快,大家可以试下。
https://cmake.org/download/

安装方式比较简单,可参考下帖:

总结来说命令就是:
tar -zxvf cmake-3.16.8.tar.gz
进入解压好的安装文件夹:
cd cmake-3.1
然后依次执行如下三条命令即可
./bootstrap
make
make install
cmake 会默认安装在 /usr/local/bin 下面
执行cmake --version可以查询安装的工具版本。

十一 vim安装
Centos默认只有vi,没有vim编辑器。喜欢vim的同学可以直接使用:
yum -y install vim* 进行安装

Vim安装后,可能存在中文乱码的问题,这个也很简单:
vim /etc/vimrc
然后添加:
set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936
set termencoding=utf-8
set encoding=utf-8
保存后退出即可

结尾
所有工具安装完毕,可以试用一下:
首先编写helloWorld.c ,该程序不再赘述,然后新建CMakeLists.txt 文件:
编写脚本:

在同级目录下建立build目录:
mkdir build
cd build
cmake …

然后执行make命令来编译