主力电脑是MacBook,有时候需要ubuntu环境只能求助于docker。同时一直在用的朋友服务器最近改成了nixos,不太适应,也需要docker配置ubuntu。
所以配置的ubuntu docker为主力环境,日常开启用ssh连接。
第一步:
<span class="token function">docker</span> pull ubuntu<span class="token function">docker</span> pull ubuntudocker pull ubuntu
默认下载最新版——22.04。
在家里目录下创建ubuntu22目录,与ubuntu镜像进行挂载,然后启动ubuntu镜像为container
<span class="token function">docker</span> run --name ubuntu22 -h ubuntu22-docker -ti -d -v /home/*username*/ubuntu22/:/home/*username*/ -p <span class="token number">9001</span>:22 ubuntu<span class="token function">docker</span> run --name ubuntu22 -h ubuntu22-docker -ti -d -v /home/*username*/ubuntu22/:/home/*username*/ -p <span class="token number">9001</span>:22 ubuntudocker run --name ubuntu22 -h ubuntu22-docker -ti -d -v /home/*username*/ubuntu22/:/home/*username*/ -p 9001:22 ubuntu
其中 –name是跑起来的container的名字;-h设定了ubuntu的hostname;-ti是即使没有连接,也要保持标准输入保持打开状态,一般t与i二者连用;-d后台运行;-v将本地文件夹与ubuntu容器中的文件夹映射到一起,-p则本地的9001端口与ubuntu 的22端口映射到了一起,如此一来便可以直接通过访问9001端口ssh连接ubuntu
<span class="token function">docker</span> <span class="token builtin class-name">exec</span> -ti ubuntu22 /bin/bash<span class="token function">docker</span> <span class="token builtin class-name">exec</span> -ti ubuntu22 /bin/bashdocker exec -ti ubuntu22 /bin/bash
启动进入ubuntu镜像
<span class="token function">apt</span> update<span class="token function">apt</span> updateapt update
更新apt源头
<span class="token function">apt</span> <span class="token function">install</span> -y <span class="token function">sudo</span> openssh-client openssh-server <span class="token function">vim</span><span class="token function">apt</span> <span class="token function">install</span> -y <span class="token function">sudo</span> openssh-client openssh-server <span class="token function">vim</span>apt install -y sudo openssh-client openssh-server vim
启动ssh
<span class="token function">service</span> <span class="token function">ssh</span> start<span class="token function">service</span> <span class="token function">ssh</span> startservice ssh start
ubuntu docker需要自行安装sudo、ssh、vim。
<span class="token function">passwd</span> <span class="token function">useradd</span> -d /home/*username* -m *username* -s /bin/bash -g <span class="token function">sudo</span> <span class="token function">passwd</span> *username* <span class="token function">su</span> *username* <span class="token operator">&&</span> <span class="token builtin class-name">cd</span> ~<span class="token function">passwd</span> <span class="token function">useradd</span> -d /home/*username* -m *username* -s /bin/bash -g <span class="token function">sudo</span> <span class="token function">passwd</span> *username* <span class="token function">su</span> *username* <span class="token operator">&&</span> <span class="token builtin class-name">cd</span> ~passwd useradd -d /home/*username* -m *username* -s /bin/bash -g sudo passwd *username* su *username* && cd ~
完成初始设置后切入用户进行操作
<span class="token function">mkdir</span> ./.ssh <span class="token function">vim</span> ./.ssh/auhorized_keys <span class="token function">service</span> <span class="token function">ssh</span> restart<span class="token function">mkdir</span> ./.ssh <span class="token function">vim</span> ./.ssh/auhorized_keys <span class="token function">service</span> <span class="token function">ssh</span> restartmkdir ./.ssh vim ./.ssh/auhorized_keys service ssh restart
配置ssh密钥免密码登陆。两次control+d后退出docker,此时在本地terminal执行
<span class="token function">ssh</span> -p <span class="token number">9001</span> *username*@localhost<span class="token function">ssh</span> -p <span class="token number">9001</span> *username*@localhostssh -p 9001 *username*@localhost
测试是否连接成功。
最后安装常用包
<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> -y <span class="token function">curl</span> <span class="token function">wget</span> <span class="token function">git</span> inetutils-ping tmux <span class="token function">htop</span><span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> -y <span class="token function">curl</span> <span class="token function">wget</span> <span class="token function">git</span> inetutils-ping tmux <span class="token function">htop</span>sudo apt install -y curl wget git inetutils-ping tmux htop
接下来是偏主观个人爱好了,由于自带的bash比较丑陋,所以将其用zsh和oh my zsh进行美化。
<span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> <span class="token function">zsh</span> chsh -s <span class="token variable"><span class="token variable">$(</span><span class="token function">which</span> <span class="token function">zsh</span><span class="token variable">)</span></span><span class="token function">sudo</span> <span class="token function">apt</span> <span class="token function">install</span> <span class="token function">zsh</span> chsh -s <span class="token variable"><span class="token variable">$(</span><span class="token function">which</span> <span class="token function">zsh</span><span class="token variable">)</span></span>sudo apt install zsh chsh -s $(which zsh)
重连后进入zshbash,继续进行zsh的初步配置
<span class="token function">sh</span> -c <span class="token string">"<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span class="token variable">)</span></span>"</span> <span class="token function">git</span> clone --depth<span class="token operator">=</span><span class="token number">1</span> https://gitee.com/romkatv/powerlevel10k.git <span class="token variable">${ZSH_CUSTOM<span class="token operator">:-</span>$HOME<span class="token operator">/</span>.oh-my-zsh<span class="token operator">/</span>custom}</span>/themes/powerlevel10k<span class="token function">sh</span> -c <span class="token string">"<span class="token variable"><span class="token variable">$(</span><span class="token function">curl</span> -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh<span class="token variable">)</span></span>"</span> <span class="token function">git</span> clone --depth<span class="token operator">=</span><span class="token number">1</span> https://gitee.com/romkatv/powerlevel10k.git <span class="token variable">${ZSH_CUSTOM<span class="token operator">:-</span>$HOME<span class="token operator">/</span>.oh-my-zsh<span class="token operator">/</span>custom}</span>/themes/powerlevel10ksh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" git clone --depth=1 https://gitee.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k
将~/.zshrc中的主题项设置为
<span class="token assign-left variable">ZSH_THEME</span><span class="token operator">=</span><span class="token string">"powerlevel10k/powerlevel10k"</span><span class="token assign-left variable">ZSH_THEME</span><span class="token operator">=</span><span class="token string">"powerlevel10k/powerlevel10k"</span>ZSH_THEME="powerlevel10k/powerlevel10k"
重启bash即可进入其初始配置页面。最后下载并安装自动补全插件
<span class="token function">git</span> clone https://github.com/zsh-users/zsh-autosuggestions <span class="token variable">${ZSH_CUSTOM<span class="token operator">:-</span>~<span class="token operator">/</span>.oh-my-zsh<span class="token operator">/</span>custom}</span>/plugins/zsh-autosuggestions<span class="token function">git</span> clone https://github.com/zsh-users/zsh-autosuggestions <span class="token variable">${ZSH_CUSTOM<span class="token operator">:-</span>~<span class="token operator">/</span>.oh-my-zsh<span class="token operator">/</span>custom}</span>/plugins/zsh-autosuggestionsgit clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
将~/.zshrc中的插件加上zsh-autosuggestions,成为
<span class="token assign-left variable">plugins</span><span class="token operator">=</span><span class="token punctuation">(</span> <span class="token function">git</span> zsh-autosuggestions <span class="token punctuation">)</span><span class="token assign-left variable">plugins</span><span class="token operator">=</span><span class="token punctuation">(</span> <span class="token function">git</span> zsh-autosuggestions <span class="token punctuation">)</span>plugins=( git zsh-autosuggestions )
还支持在vscode里直接用ssh-remote连接进该镜像,十分好用。
原文链接:https://blog.csdn.net/weixin_46091531/article/details/126803933