背景
新公司不像菊廠和快馬,沒有公共的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的按鈕來進入:
Linux下安裝Gcc
公司内部的安裝方式
在後續的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
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并回車即可
iperf
安裝iperf:
sudo yum install iperf
安裝過程中詢問是否安裝,輸入 y并回車即可
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的前面;