docker 安装及日常使用命令手册

Docker 官网介绍
https://docs.docker.com/

1. 基础环境Alpine
https://alpinelinux.org/downloads/
参考:alpine linux ,Small. Simple. Secure.
为啥选 alpine? 轻量级,快速,安全
体积小,速度快,这是重点
下表是官方镜像的大小比较:

REPOSITORY TAG IMAGE ID VIRTUAL SIZE
alpine latest 4e38e38c8ce0 4.799 MB
debian latest 4d6ce913b130 84.98 MB
ubuntu latest b39b81afc8ca 188.3 MB
centos latest 8efe422e6104 210 MB

2. 在Alpine 中安装Docker
取消第三行 community 源注释
vi /etc/apk/repositories

#/media/cdrom/apks
http://mirrors.sjtug.sjtu.edu.cn/alpine/v3.14/main
http://mirrors.sjtug.sjtu.edu.cn/alpine/v3.14/community
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/main
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/community
#http://mirrors.sjtug.sjtu.edu.cn/alpine/edge/testing
#参考更新镜像源
sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
sed -i 's/mirrors.sjtug.sjtu.edu.cn/mirrors.ustc.edu.cn/g' /etc/apk/repositories

安装并设置docker服务默认启动

apk update
apk add docker
rc-update add docker boot
service docker start
docker version

 

3. 优化docker
国内的 Docker Hub 镜像加速器
参考 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6
参考 https://docs.docker.com/registry/recipes/mirror/
http://mirrors.ustc.edu.cn/help/dockerhub.html
docker config ls
docker info

创建或更新 /etc/docker/daemon.json

{"registry-mirrors": [   
"http://mirror.azure.cn",
"http://mirrors.ustc.edu.cn",
"https://666860.xyz",
"https://a.ussh.net",
"https://docker-0.unsee.tech",
"https://docker-mirror.aigc2d.com",
"https://docker-registry.nmqu.com",
"https://docker.1ms.run",
"https://docker.1panel.live",
"https://docker.1panel.top",
"https://docker.367231.xyz",
"https://docker.amingg.com",
"https://docker.apiba.cn",
"https://docker.hlmirror.com",
"https://docker.jsdelivr.fyi",
"https://docker.kejilion.pro",
"https://docker.ketches.cn",
"https://docker.m.daocloud.io",
"https://docker.xiaogenban1993.com",
"https://docker.xuanyuan.me",
"https://docker.yomansunter.com",
"https://dockercf.jsdelivr.fyi",
"https://dockerhub.icu",
"https://dockerproxy.net",
"https://dockerpull.cn",
"https://dockerpull.org",
"https://dockerpull.pw",
"https://dockertest.jsdelivr.fyi",
"https://dytt.online",
"https://hub3.nat.tf",
"https://hub-mirror.c.163.com",
"https://hub.1panel.dev",
"https://hub.amingg.com",
"https://hub.littlediary.cn",
"https://hub.rat.dev",
"https://hub.rat.dev",
"https://hubp.me",
"https://image.cloudlayer.icu",
"https://lispy.org",
"https://mirror.baidubce.com",
"https://proxy.1panel.live"

] ,"ipv6": false}

重启 docker 服务
service docker restart
再查看下配置

docker config ls
docker info

看到最后出来

 Registry Mirrors:
  https://hub-mirror.c.163.com/
  https://mirror.baidubce.com/

============
官方镜像搜索,https://hub.docker.com/
docker web ui 管理

# portainer, 多一些管理功能,首次使用设置初始密码,然后选择Local 即可
docker run -d -p 9001:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name docker-prtainer portainer/portainer

# docker-ui 这个没有访问限制,建议限于本地开发使用,http://{对应IP地址}:9002 即可打开(可选参考)
docker run -d -p 9002:9000 –restart=always -v /var/run/docker.sock:/var/run/docker.sock –name docker-web docker.io/uifd/ui-for-docker

============
#常用命令
# 停止所有容器
docker stop $(docker ps -aq)

#查询运行中容器
docker ps

# 设置自动启动
docker update –restart=always xxx-name
docker update –restart=on-failure:10 xxx-name

#因为容器的ID是随机码,而容器的名字又是看似无意义的命名,我们可以使用命令
docker rename old_name new_name

#给这个容器命名。这样以后,我们再次启动或停止容器时,就可以直接使用这个名字。
docker [stop] [start] new_name

#而要显示出所有容器,包括没有启动的,可以使用命令
docker ps -a

#++++++++++++++++++++++++++
docker 启动后进入交互终端
方法A

docker exec -it CONTAINER_ID bash 
游戏
docker exec -it CONTAINER_ID bash 

方法B: docker attach ()

docker attach [OPTIONS] CONTAINER_ID

# 这个方式需要注意退出时用 Ctrl+z 会导致 docker 进程关闭退出
# 可以使用 Ctrl+q,Ctrl,p  退出不结束(连续按Ctrl+q和Ctrl+p)

#++++++++++++++++++++++++++
#修改容器映射端口
1、停止容器(docker stop xxxxxxxxx )
2、停止docker服务(systemctl stop docker)
3、修改这个容器的hostconfig.json文件中的端口(/var/lib/docker/containers/xxxxxxxxx 目录下相关文件 ,比如config.v2.json )
4、启动docker服务(systemctl start docker)
5、启动容器(docker start xxxxxxxxx )

cd /var/lib/docker/containers/xxxxxxxxx
#这里是CONTAINER ID
vim hostconfig.json
如果之前没有端口映射, 应该有这样的一段:
“PortBindings”:{}
增加一个映射, 这样写:
“PortBindings”:{“8080/tcp”:[{“HostIp”:””,”HostPort”:”60000″}]}
前一个数字是容器端口, 后一个是宿主机端口。将宿主机的60000端口映射到容器的8080端口
而修改现有端口映射更简单, 把端口号改掉就行。
注:我原来的容器中只有22的对外访问,现在想在容器中部署一个springboot项目,端口为8091,则修改如下:
“PortBindings”:{“22/tcp”:[{“HostIp”:””,”HostPort”:”10022″}],”8091/tcp”:[{“HostIp”:””,”HostPort”:”8000″}]}

#方法B
1、获得容器IP,将container_name 换成实际环境中的容器名
docker inspect container_name_xxxxxxxxx | grep IPAddress
2、iptable转发端口
将宿主机的60000端口映射到容器的8080端口
iptables -t nat -A DOCKER -p tcp –dport 60000 -j DNAT –to-destination 172.17.0.2:8080

#方法C
#先停止容器
docker stop containerA
#将容器commit成为一个镜像
docker commit containerA newImageB
#运行容器
docker run -p 8080:8080 -p 8081:8081 -v /home/data/:/home/data/ -dt newImageB

参考:
https://www.runoob.com/docker/debian-docker-install.html
Debian 安装 Docker

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -sSL https://get.daocloud.io/docker | sh
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io

alpine-linux-kiosk

echo -e "#!/bin/sh\nopenbox-session &\nfirefox -kiosk https://www.bing.com" > ~/.xinitrc && chmod +x ~/.xinitrc

setup-xorg-base && apk add openbox font-noto-cjk firefox

[可选] 为 Firefox 创建策略配置, 禁止用户访问开发者工具(F12)

echo ‘{“policies”: {“DisableDeveloperTools”: true}}’ | tee /usr/lib/firefox/distribution/policies.json

# 注意以 root 身份下执行

# 添加 agetty 包
apk add agetty

# 编辑配置文件
vi /etc/inittab
#将 tty1 开头的行注释掉, 插入下面内容:

tty1::respawn:/sbin/agetty –autologin lpwm –noclear tty1 linux
参考文档: TTY Autologin

RaiDrive

RaiDrive可以把网盘挂载到电脑本地,使我们能像操作C盘、D盘等电脑本地磁盘那样,直接在本地操作网盘文件。比如,可以在本地直接对网盘中的文件进行复制,粘贴,重命名等操作。如同给我们的电脑硬盘扩容了,理论上只要您添加的网盘足够多容量或者足够大,相当于给电脑添加了一块“无限”容量的网络硬盘。

若是搭配 Everything 搜索软件,还可以在电脑中快速搜索网盘文件。此外,如果已经搭建并使用了alist,raidrive挂载alist后(WebDAV挂载),则可间接实现一键挂载阿里云盘、百度网盘、onedrive、天翼云盘、123云盘、中国移动云盘等诸多网盘。

不过,RaiDrive的新版本分为免费版和Pro版,而免费版有功能限制(比如限制大文件传输等),并且偶尔会出现广告。而由于RaiDrive起初是全免费软件,故而一些早期的旧版本反而没有这些功能限制且天然去广告了。

本次分享的是RaiDrive的历史版本,也就是早期的一些老版本。具体包含所谓的最后一个全功能版本 RaiDrive 1.5.3.1(不过也有说2019.12.22那个是最后一个完全免费版本),还有raidrive 1.8.0等等,基本上涵盖了raidrive 1.6.2.416 到 2019.12.22 的所有旧版本。

软件下载

https://pan.quark.cn/s/33f5ef3233ba

https://www.123pan.com/s/hieA-qsgxH.html

https://url26.ctfile.com/d/948726-56175567-da8e0e?p=7890 (访问密码: 7890)

===
https://raidrive.mrdownload.com/en/for-windows/app/download/7266
2020.6.25
OpenBoxLab
====
Raidrive新手+拓展教程
https://blog.csdn.net/EricZCY/article/details/106720431
https://wws.lanzous.com/iLfRMdlbbub

https://production-downloads-webserver.storage.googleapis.com/softwares/29efabd1-4006-4e2c-9a74-c5b81dad13c7/raidrive-2020-6-25.exe?AWSAccessKeyId=GOOG1EMFSX4KQJNU4T4R4BCA2WP4NEBACPV7PBW7ACQN55XEWDJUEEZVM63TI&Expires=1749032405&Signature=FvYRuKYOPpoZbUfn7gB2bkQ3oDI%3D

NVIDIA-CUDA-CUDNN

CUDA
https://developer.nvidia.com/cuda-toolkit-archive
https://developer.download.nvidia.cn/compute/cuda/12.4.1/local_installers/cuda_12.4.1_551.78_windows.exe

CUDNN
https://developer.nvidia.com/rdp/cudnn-archive
https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-windows-x86_64-8.9.7.29_cuda12-archive.zip

参考:
https://zhuanlan.zhihu.com/p/32400431090

linux-命令行-关闭显示器

setterm --blank poke --term linux < /dev/tty1
=======================================================================
参考
https://www.cnblogs.com/dirgo/p/17376210.html

题外话:不得不说现在百度的搜索真的烂,除了广告,有用的信息一点也搜不到,bing倒是广告少,照样也搜不到有用信息,谷歌虽然作恶不少,某些技术还是可以的,但是国内不通过特殊方法又使用不了,解决方法:1.找谷歌的镜像站,但是不好找,就算找到了,可能过几天就失效了;2.找一些小众的搜索引擎,推荐”F搜”,不过最近有些不稳定了,只能说且用且珍惜吧,本次的解决方法就是通过它才搜到的.

这个需求主要是解决当你把笔记本或者平板当作服务器,平时只用ssh连接,想关闭屏幕节电;

本机环境:cpu为z3735f的酷比魔方平板,系统为Arch Linux,未启动任何桌面环境和窗口管理器,即位于默认终端tty1下

在其他电脑通过ssh工具连接上平板;

方法如下:

命令需要root权限,可用su切换

关闭屏幕命令:

setterm –blank force –term linux </dev/tty1

打开屏幕命令:

setterm –blank poke –term linux < /dev/tty1

注意:关闭后,必须通过打开命令开启屏幕,移动鼠标或点击键盘按键均无法再点亮屏幕

参考文章:

https://access.redhat.com/discussions/3076941#comment-1184861

https://forums.centos.org/viewtopic.php?t=75666

第一个链接即本文的解决方法,是从第二个链接的论坛帖子尝试方法2跳转的,我的可以实现,但楼主说不行,他最后还是安装了桌面环境,其实安装桌面环境(主要的两个解决方案为Xorg(x11)和wayland),并且启动了桌面或者窗口管理器之后,解决的方法就非常多了(比如export DISPLAY=:0.0;xset dpms force off;),除了楼主写的几个,还可以借助一些工具,其实也是对/sys/class/backlight进行了一些封装操作,具体可参考Arch 的wiki(背光实用程序) https://wiki.archlinuxcn.org/wiki/%E8%83%8C%E5%85%89  ,并且可以实现关闭后移动鼠标或点击键盘重新点亮屏幕.

—————————-2023-05-15更新—-

以上方法其实只是关闭了显示输出,当然在一定程度上也降低了功耗。

但仔细观察会发现,屏幕的背光没有关闭,在Arch上试过很多方法都不行,甚至一度想直接拆开拔掉显示排线。

直到今天安装了Debian以后,发现背光可以调节和关闭了,这说明arch对一些老的硬件支持不那么好,老硬件可以尝试Debian,方法依照arch的wiki即可:

https://wiki.archlinuxcn.org/wiki/%E8%83%8C%E5%85%89

说到底还是使用acpi接口,修改/sys/class/backlight/acpi_video0/max_brightness 文件记录的亮度值,如:

echo 5 > /sys/class/backlight/acpi_video0/brightness