背景

新公司不像菊厂和快马,没有公共的linux服务器供使用——应该是也有,但目前还是算了,自己在本地安装一个Docker Desktop,这样的话,能够把Windows下的本机资源做虚拟化,然后使用;

Docker Desktop

win10下安装Docker Desktop

下载链接:
Docker官方下载链接

安装后不必注册——除非你想上传自己的镜像——主要遇到的大坑就是win10下的虚拟化开关,需要通过Bios设置来打开,而不同的机器下的Bios是完全不同的,基本是在CPU下面的虚拟化选项里来设置——如果找到选项然后进行设置,是非常快的。
可参考下面的链接(虽然我安装的时候并没有参考):
WIN10中DOCKER的安装与使用

Docker基本使用

这是自己的弱项,之前没有好好学习过——其实在菊厂的时候简单用过——这次只能查着用;
参考链接:
Docker for windows : 安装linux

拉取镜像
docker pull hub.c.163.com/library/oraclelinux:latest

创建Linux容器

C:\Users\K-Jso>docker images -a
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
hub.c.163.com/library/php           7.1                 6cd3037a948f        6 months ago        371MB
hub.c.163.com/library/oraclelinux   latest              9fe41720f939        7 months ago        229MB
hub.c.163.com/library/redis         4.0.1               d4f259423416        7 months ago        106MB
hub.c.163.com/library/nginx         latest              46102226f2fd        10 months ago       109MB
hub.c.163.com/library/mysql         5.6                 0977f3a915e5        10 months ago       298MB

C:\Users\K-Jso>docker run --name linux -it -d 9fe41720f939 /bin/bash
04d7d2d30543f983fdd329f6f23d235b2229291063211e1a5f514636f26310e3

注意
如果想映射本地目录到容器内,应该采用如下命令:

docker run --name linux -it -v D:\Program\Docker\linux\:/mnt -d 9fe41720f939 /bin/bash

进入容器并交互

docker exec -it 04d7d2d30543f983fdd329f6f23d235b2229291063211e1a5f514636f26310e3 /bin/sh

或者也可以通过Docker Desktop的按钮来进入:

win 10 下 Docker Engine配置 window10下docker_Docker

Linux下安装Gcc

win 10 下 Docker Engine配置 window10下docker_Docker_02

公司内部的安装方式

在后续的gcc安装过程中,发现坑太多,调头换用公司所用的centos镜像和gcc,过程如下:

拉取:

docker pull jdeathe/centos-ssh:centos-7

运行

docker run -d -p 11001:22 --privileged --ulimit core=-1 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /D/Program/Docker/linux:/workspace --shm-size=1024m jdeathe/centos-ssh:centos-7 /usr/sbin/init
——关于-p ==> 端口映射
上面的11001:22 =》物理机的11001端口映射到docker下的22端口
更进一步的命令:
docker run --name client -d -p 11002:23 --privileged --ulimit core=-1 --cap-add=SYS_PTRACE --security-opt seccomp=unconfined -v /D/Program/Docker/linux:/workspace --shm-size=1024m jdeathe/centos-ssh:centos-7 /usr/sbin/init
命名新的环境名称为client,并且把物理机的11002端口映射到docker下的23端口
可参考链接:
外部访问docker容器(docker run -p/-P 指令)

进入或通过docker desktop来进入centos下

docker exec -it 09de35f53b680e6585d92fec26a99e3ad609d876a50aa4b0ada93316dfc78a72 /usr/sbin/init

docker desktop使用遇到的坑

error during connect: In the default daemon configuration on Windows, the docker client must be run with elevated privileges to connect

刚装的win10启动window-desktop报错:
C:\Program Files\Docker\Docker\Resources\bin\docker.exe: error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.39/containers/create: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running.

解决方法:
cd “C:\Program Files\Docker\Docker”
./DockerCli.exe -SwitchDaemon
运行这个后可能会造成容器和镜像都没了,不要着急,都还在;通过下面的操作来找到即可

image operating system “linux” cannot be used on this platform

简单来说就是docker默认当前的容器系统是windows,需要修改为linux;

右键点击windows下的任务栏上的docker desktop,然后switch到linux container

win 10 下 Docker Engine配置 window10下docker_Docker_03

win10 docker启动后检查版本报错

Docker.Core.Backend.BackendException:

Error response from daemon: open .\pipe\docker_engine_linux: The system cannot find the file specified.
在win10 命令行提示符执行:
Net stop com.docker.service
Net start com.docker.service

工具的安装和使用

gcc

sudo yum install centos-release-scl centos-release-scl-rh
sudo yum install -y scl-utils*
sudo yum -y install llvm-toolset-7 devtoolset-8-gcc*

scl enable devtoolset-8 bash
或者在.bashrc中添加
source /opt/rh/devtoolset-8/enable
验证 gcc:
which gcc(提示没有which)
gcc -version(ok,g++ --version 也是ok的)

net-tools

输入ifconfig -a提示没有发现命令,这时候需要安装net-tools:

sudo yum install net-tools

安装过程中询问是否安装,输入 y并回车即可

win 10 下 Docker Engine配置 window10下docker_linux_04

iperf

安装iperf:

sudo yum install iperf

安装过程中询问是否安装,输入 y并回车即可

win 10 下 Docker Engine配置 window10下docker_Docker_05

iperf的简单使用

网络性能测试工具iperf详细使用图文教程TCP测试[iperf默认就是用TCP,如果想测试UDP,需要通过 -u 指定]:
Server侧
iperf -s -p 5001 -t 1000 -w 1024
==>-s指定是server,-p指定server的端口(也可以不指定,由iperf分配),-t 指明测试时长,-w指定TCP接收buffer的大小,可以简单理解为一个TCP报文的大小,便于测试
Client侧
iperf -c 172.17.0.2 -p 5001 -t 1000
= =>-c指定是client,172.17.0.2是server的ip,-p指定要连接的server的端口,-t 指明测试时长

iperf -c 172.17.0.2 -i 1 -b 1m -p 5001 -t 1000
-c:客户端模式,后接服务器ip
-p:后接服务端监听的端口
-i:设置带宽报告的时间间隔,单位为秒
-t:设置测试的时长,单位为秒

-w:设置tcp窗口大小,一般可以不用设置,默认即可
UDP测试(未亲自使用):
Server侧
iperf -s -u -p 5003 -t 1000
==>-s指定是server,-u指定是udp模式;-p指定server的端口(也可以不指定,由iperf分配),-t 指明测试时长
Client侧
iperf -c 172.17.0.2 -u -p 5003 -t 1000
= =>-c指定是client,172.17.0.2是server的ip,-u指定是udp模式;-p指定要连接的server的端口,-t 指明测试时长
注意:172.17.0.2作为server ip要在-c之后,放在-u的前面;