Wsl Docker Install
layout: post
title: docker安装
tags: docker
categories: docker windows linux
docker安装
开启hyper-v
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
新建一个批处理文件,将以上代码复制进去,并保存为
enableHyperV.bat
文件。双击运行此文件,即可开启Hyper-V。 需要重启
注意:如果系统中已经安装了Hyper-V,则可以忽略此步骤。
修改注册表,伪装专业版
以管理员身份打开cmd,执行如下
REG ADD “HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion” /v EditionId /T REG_EXPAND_SZ /d Professional /F
WSL安装
手动安装 wsl –install
自动安装
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual
启用
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
下载Linux发行版
https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4—download-the-linux-kernel-update-package
安装Linux发行版
wsl –list –online
请使用“wsl –install -d <分发>”安装。 例如: NAME FRIENDLY NAME Ubuntu Ubuntu Debian Debian GNU/Linux kali-linux Kali Linux Rolling Ubuntu-18.04 Ubuntu 18.04 LTS Ubuntu-20.04 Ubuntu 20.04 LTS Ubuntu-22.04 Ubuntu 22.04 LTS Ubuntu-24.04 Ubuntu 24.04 LTS OracleLinux_7_9 Oracle Linux 7.9 OracleLinux_8_7 Oracle Linux 8.7 OracleLinux_9_1 Oracle Linux 9.1 openSUSE-Leap-15.6 openSUSE Leap 15.6 SUSE-Linux-Enterprise-15-SP5 SUSE Linux Enterprise 15 SP5 SUSE-Linux-Enterprise-15-SP6 SUSE Linux Enterprise 15 SP6 openSUSE-Tumbleweed openSUSE Tumbleweed PS C:\Users\Administrator> wsl --install -d Ubuntu-18.04分发>
参考链接
https://blog.csdn.net/qq_55610255/article/details/135898034
https://learn.microsoft.com/zh-cn/windows/wsl/install
常用命令
查看已安装的 Linux 发行版
wsl -l -v
设置默认系统
wsl –set-default Ubuntu-22.04
启动 Linux 发行版
wsl -d Ubuntu-22.04
终止运行的系统
wsl -t Ubuntu-22.04
注销指定系统
wsl –unregister Ubuntu-22.04
导出和导入 Linux 发行版(修改安装位置)
wsl –export Ubuntu-24.04 F:\DockOs\Ubuntu2404\ubuntu24.04.tar
wsl –unregister Ubuntu-24.04
wsl –import Ubuntu-24.04 F:\DockOs\Ubuntu2404\ubuntu24.04.tar
ubuntu2204.exe config –default-user root
更改或重置密码
请打开 Linux 发行版并输入命令:passwd。 系统会要求你输入当前密码,然后要求输入新密码,之后再确认新密码。 如果忘记了 Linux 分发版的密码:
请打开 PowerShell,并使用以下命令进入默认 WSL 分发版的根目录:wsl -u root
如果需要在非默认分发版中更新忘记的密码,请使用命令:wsl -d Debian -u root,并将 Debian 替换为目标分发版的名称。
在 PowerShell 内的根级别打开 WSL 发行版后,可使用此命令更新密码:passwd
系统将提示你输入新的 UNIX 密码,然后确认该密码。 在被告知密码已成功更新后,请使用以下命令在 PowerShell 内关闭 WSL:exit。
root 密码好像有长度校验,不能设置过短的密码。 root123456
安装net工具
apt install net-tools 查看IP地址 ifconfig查看IP地址
安装ssh服务,开启远程权限,shell登录
ssh服务安装 卸载ssh服务 apt remove openssh-server 1 重装ssh服务 apt install openssh-server 1 开启SSH服务 sudo service ssh start 1 设置SSH服务在开机时自动启动 sudo systemctl enable ssh
编辑/etc/ssh/sshd_config文件 vi /etc/ssh/sshd_config
修改ssh服务监听端口和监听地址 Port 22 #AddressFamily any ListenAddress 0.0.0.0 ListenAddress ::Port 22 #AddressFamily any ListenAddress 0.0.0.0 ListenAddress ::
#LoginGraceTime 2m PermitRootLogin yes #StrictModes yes #MaxAuthTries 6 #MaxSessions 10
To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes ## 允许root用户使用密码登录,开启的话必须使用public key登录
public key authentication is disabled by default since Ubuntu 16.04
#PermitEmptyPasswords no
开放22端口,允许SSH远程登录
sudo service ssh restart
远程连接
ssh root@192.168.1.100 # 连接远程服务器
远程命令执行
ssh root@192.168.1.100 “ls -l” # 远程执行命令
远程文件传输
scp /root/test.txt root@192.168.1.100:/root/test.txt # 远程文件传输
远程端口转发
ssh -L 8080:192.168.1.100:80 root@192.168.1.100 # 远程端口转发 8080 端口转发到 192.168.1.100 80 端口
远程端口转发(动态端口)
ssh -D 8080 root@192.168.1.100 # 远程端口转发 8080 端口转发到 192.168.1.100 80 端口(动态端口)
远程端口转发(动态端口)
ssh -N -f -L 8080:192.168.1.100:80 root@192.168.1.100 # 远程端口转发 8080 端口转发到 192.168.1.100 80 端口(动态端口)
远程端口转发(动态端口)
ubuntu常见命令
查看系统信息
uname -a # 查看系统信息
查看CPU信息
cat /proc/cpuinfo # 查看CPU信息
查看内存信息
free -m # 查看内存信息
查看磁盘信息
df -h # 查看磁盘信息
查看网络信息
ifconfig # 查看网络信息
查看进程信息
ps -ef # 查看进程信息
查看端口信息
netstat -anp # 查看端口信息
常用命令
切换目录
cd /root # 切换目录
查看当前目录下的文件
ls -al # 查看当前目录下的文件
创建目录
mkdir /root/test # 创建目录
删除目录
rm -rf /root/test # 删除目录
复制文件
cp /root/test.txt /root/test1.txt # 复制文件
移动文件
mv /root/test.txt /root/test1.txt # 移动文件
查看文件内容
cat /root/test.txt # 查看文件内容
查看文件大小
du -h /root/test.txt # 查看文件大小
查看文件权限
ls -l /root/test.txt # 查看文件权限
查看文件类型
file /root/test.txt # 查看文件类型
查看文件内容(指定行数)
head -n 10 /root/test.txt # 查看文件内容(指定行数)
查看文件内容(倒序)
tail -n 10 /root/test.txt # 查看文件内容(倒序)
查看文件内容(搜索关键字)
grep “关键字” /root/test.txt # 查看文件内容(搜索关键字)
查看文件内容(统计关键字出现次数)
grep -c “关键字” /root/test.txt # 查看文件内容(统计关键字出现次数)
查看文件内容(统计关键字出现位置)
grep -n “关键字” /root/test.txt # 查看文件内容(统计关键字出现位置)
压缩文件
tar -zcvf /root/test.tar.gz /root/test # 压缩文件
解压文件
tar -zxvf /root/test.tar.gz # 解压文件
文件操作命令
显示当前目录下的文件
ls
显示当前目录下的文件(详细信息)
ls -l
创建文件 touch test.txt
显示文件内容
cat test.txt
查找文件
find / -name “test.txt”
按文件名查找文件
find / -name “test.txt”
按文件类型查找文件
find / -type f -name “*.txt”
按文件大小查找文件
find / -size +10M -name “test.txt”
按文件权限查找文件
find / -perm 777 -name “test.txt”
按文件属主查找文件
find / -user root -name “test.txt”
按文件属组查找文件
find / -group root -name “test.txt”
按文件修改时间查找文件
find / -mtime -1 -name “test.txt”
按文件创建时间查找文件
find / -ctime -1 -name “test.txt”
按文件更改时间查找文件
find / -mtime -1 -name “test.txt”
按文件内容查找文件
find / -type f -name “*.txt” -exec grep “关键字” {} \;
按文件内容查找文件并显示行号
find / -type f -name “*.txt” -exec grep -n “关键字” {} \;
按文件内容查找文件并显示行号和文件名
docker desktop安装
选择Docker Engine,在其中输入(这里使用的是163的源,如果想要使用其他源可以自行设置,github上有个项目:docker_mirror可以自动检测在你的网络环境下那个源是最快的)
{ “registry-mirrors”: [ “http://hub-mirror.c.163.com”, “https://docker.mirrors.ustc.edu.cn” ], “insecure-registries”: [], “debug”: true, “experimental”: false }
doocker 常见命令
启动docker
sudo service docker start
重启docker
sudo service docker restart
停止docker
sudo service docker stop
获取当时所有镜像(docker images) docker image ls
或者
docker images
拉取镜像(docker pull)
官方镜像
docker image pull 镜像名称
或简写为
docker pull 镜像名称
比如
docker pull ubuntu docker pull ubuntu:16.04
个人镜像
docker pull 仓库名称/镜像名称 docker pull xunmi/django
第三方仓库拉去
docker pull 第三方仓库地址/仓库名称/镜像名称
docker pull hub.c.163.com/library/mysql:latest
(默认仓库名为library,所有从官方获取镜像相当于sudo docker image pull library/镜像名称
)
删除镜像(docker rmi) docker image rm 镜像名或镜像ID 或 docker rmi 镜像名或镜像ID docker image rm hello-world docker rmi 9e64176cd8a2
docker rm: 删除一个或多个 容器 docker rmi: 删除一个或多个 镜像 docker prune: 用来删除不再使用的 docker 对象
docker run [可选参数] 镜像名 [向启动容器中传入的命令]
启动一个容器
docker run -it –name my-ubuntu ubuntu:16.04 /bin/bash
-it: 让容器的标准输入、输出和错误输出保持打开状态,即可以进行交互式操作。
–name: 为容器指定一个名称,方便后续操作。
ubuntu:16.04: 指定要启动的镜像,这里是Ubuntu 16.04。
/bin/bash: 容器启动后默认执行的命令,这里是bash。
启动一个后台运行的容器
docker run -d –name my-ubuntu-daemon ubuntu:16.04 /bin/bash
停止一个容器
docker stop 容器名或容器ID
停止my-ubuntu容器
docker stop my-ubuntu
停止my-ubuntu-daemon容器
docker stop my-ubuntu-daemon
docker search 关键字 #下载影像,镜像位置填入上面搜索出来的地址 docker pull 影像 #创建启动容器,等同于先执行docker create命令,再执行docker start命令 docker run
启动容器
docker start 容器id
重启容器
docker restart 容器id
停止当前正在运行的容器
docker stop 容器id
强制停止当前容器
docker kill 容器id
#查看容器
docker ps
#进入容器
docker exec -it 容器id
安装的gitlab 查看初始密码
cat /etc/gitlab/initial_root_password
grep ‘Password:’ /opt/gitlab/config/initial_root_password
创建ssl证书目录
[root@cloud ~]# mkdir /opt/gitlab/config/ssl/
设置权限
[root@cloud ~]# chmod 755 /opt/gitlab/config/ssl/
切换到ssl目录下
[root@cloud ~]# cd /opt/gitlab/config/ssl/
创建证书
[root@cloud ssl]# openssl req -x509 -newkey rsa:1024 -keyout gitlab.key -out gitlab.crt -nodes -days 36500
Generating a 1024 bit RSA private key
….++++++
…………………………………++++++
writing new private key to ‘gitlab.key’
—–
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter ‘.’, the field will be left blank.
—–
Country Name (2 letter code) [XX]:cn
State or Province Name (full name) []:wh
Locality Name (eg, city) [Default City]:wc
Organization Name (eg, company) [Default Company Ltd]:manix
Organizational Unit Name (eg, section) []:manix
Common Name (eg, your name or your server’s hostname) []:manixchen.com
Email Address []: manixchen-@163.com
开启https支持,新版本的gitlab必须开启https支持,否则无法clone代码
编辑gitlab.rb文件
sudo vi /etc/gitlab/gitlab.rb
找到并修改以下内容 (如果是docker desktop安装的gitlab,直接在desktop的volume中修改gitlab.rb文件即可,特别方便,常用的配置文件均在里面)
external_url ‘https://192.168.134.1’ nginx[‘redirect_http_to_https’] = true nginx[‘ssl_certificate’] = “/etc/gitlab/gitlab.crt” nginx[‘ssl_certificate_key’] = “/etc/gitlab/gitlab.key”
https://192.168.134.1:9443/root/reactspark.git
git config –global user.name “Your Name” git config –global user.email “your.email@example.com”
验证配置是否生效: 在终端执行命令git config –list即可验证。
SSH密钥生成: 在本地终端运行以下命令:
ssh-keygen -t rsa -b 4096 -C “manixchensunshine@163.com”
假设我有github.com 、gitlab.com 和 bitbucket.org三个云端的账号,各自的注册邮箱和用户名不同。
建议:linux 或 mac 用户推荐在 ~/.ssh 路径下运行命令行,Windows用户推荐在“ C:\Users\用户名.ssh ”目录下运行命令行
说明:
-t rsa 表示加密方式
-C 表示注册不同云端仓库时所用的邮箱
-f 表示自定义生成秘钥的名称
#————————————–
生成 github.com 公私钥对
ssh-keygen -t rsa -C “manixchen@gmail.com” -f github
生成 gitlab.com 公私钥对
ssh-keygen -t rsa -C “manixchensun@gmail.com” -f gitlab
说明:
-t rsa 表示加密方式
-C 表示注册不同云端仓库时所用的邮箱
-f 表示自定义生成秘钥的名称
#————————————–
生成 github.com 公私钥对
ssh-keygen -t rsa -C “manixchen@gmail.com” -f github
生成 gitlab.com 公私钥对
ssh-keygen -t rsa -C “manixchensun@163.com” -f gitlab
在安装了git的机器上,关闭ssl验证,不然的话可能没法clone代码
export GIT_SSL_NO_VERIFY=true git config –global http.sslVerify “false”
//取消http代理(尝试作用不大)只需执行上面两行命令后,就可以clone代码了。 git config –global –unset http.proxy //取消https代理 git config –global –unset https.proxy https://192.168.134.1:9443/webjsj/reactspark.git
注意:下面提示:::如果是使用https协议,则需要关闭ssl验证。
``` $ git clone https://192.168.134.1:9443/root/reactspark.git Cloning into ‘reactspark’… fatal: unable to access ‘https://192.168.134.1:9443/root/reactspark.git/’: SSL certificate problem: self-signed certificate
$ git clone https://192.168.134.1:9443/root/reactspark.git Cloning into ‘reactspark’… fatal: unable to access ‘https://192.168.134.1:9443/root/reactspark.git/’: SSL certificate problem: self-signed certificate
``` … 注意,由于忽略了对HTTPS证书的验证,可能会存在安全风险,请谨慎使用 …
配置完成后根据仓库提示,可以关联项目到gitlab上,然后就可以进行代码的管理了。 如果是初始化项目名直接clone即可
查看现有远程仓库的信息(git remote -v); 删除现有的远程仓库信息(git remote rm origin); 建立新的远程仓库地址(git remote add origin + 新的远程仓库地址);