【DOCKER】随手记

目录

  • 1. 安装
    • 1.1 LINUX
    • 1.2 Windows
  • 2. 常用配置
    • 2.1 普通权限运行
    • 2.2 开机自启动
    • 2.3 3 更换Docker镜像源
    • 2.4 更改默认存储位置
  • 3. 显示带UI的软件
  • 4. 基于DOCKER的服务
    • 4.1 FTP
    • 4.2 Portainer
    • 4.3 Watchtower
    • 4.4 SiYuan
    • 4.5 GitLab
      • 4.5.1 创建容器
      • 4.5.2 克隆路径问题
      • 4.5.3 获取默认密码

1. 安装

1.1 LINUX

参考

  • https://docs.docker.com/engine/install/ubuntu/
  • https://mirror.tuna.tsinghua.edu.cn/help/docker-ce/
# 卸载之前的安装
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd# 安装依赖
sudo apt-get update -y
sudo apt-get install -y ca-certificates curl gnupg lsb-release# 添加GPG
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 安装最新引擎  
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 运行样例
sudo docker run -rm hello-world

1.2 Windows

待补充

2. 常用配置

2.1 普通权限运行

sudo usermod -aG docker $USER
newgrp docker 
docker run --rm hello-world

2.2 开机自启动

# 开启
sudo systemctl enable docker.service
sudo systemctl enable containerd.service# 关闭
sudo systemctl disable docker.service
sudo systemctl disable containerd.service

2.3 3 更换Docker镜像源

# 方式一:命令添加
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://docker.m.daocloud.io","https://docker.mirrors.sjtug.sjtu.edu.cn","https://cr.console.aliyun.com","http://mirror.azure.cn/"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker# 方式二:手动添加
sudo vim  /etc/docker/daemon.json
{"registry-mirrors" : [ "https://docker.mirrors.sjtug.sjtu.edu.cn" ],
}
sudo systemctl daemon-reload
sudo systemctl restart docker

2.4 更改默认存储位置

sudo docker info | grep "Docker Root Dir"                               # 查看 docker 存储位置
sudo systemctl stop docker                                              # 停止 docker 服务
sudo rsync -avzP /var/lib/docker/ /home/docker                         # 复制原有数据到新位置
sudo rm -rf /var/lib/docker                                             # 删除原始存储文件夹
sudo ln -s /home/docker /var/lib/                        # 指定新的路径之软连接到新位置
sudo sed -i '1a"data-root": "/home/docker",' > /etc/docker/daemon.json # 指定新的路径之配置文件指定新位置
sudo systemctl daemon-reload                                            # 重启守护进程
sudo systemctl restart docker                                       # 重启docker
sudo systemctl status docker                                            # 查看运行状态
sudo docker info | grep "Docker Root Dir"                               # 查看最新存储位置

3. 显示带UI的软件

# 1. 宿主机开放X server权限
xhost +# 2. 创建容器,使用 -v 参数挂载宿主机的/tmp/.X11-unix目录,该目录中存放着unix套接字文件;使用 -e 参数设置容器的DISPLAY环境变量与宿主机一致
docker run -it --rm -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=$DISPLAY ubuntu:20.04apt update
apt install gedit
gedit

4. 基于DOCKER的服务

4.1 FTP

# 拉取镜像
docker pull fauria/vsftpd# 创建数据卷文件夹
mkdir -p ${HOME}/.docker/volumes/vsftpd# 创建容器
docker run                                           \
--detach                                             \
--publish 51020:20                                   \
--publish 51021:21                                   \
--publish 21100-21103:21100-21103                    \
--env FTP_USER=admin                                 \
--env FTP_PASS=admin                                 \
--env PASV_ADDRESS=172.17.0.1                        \
--env PASV_MIN_PORT=21100                            \
--env PASV_MAX_PORT=21103                            \
--env REVERSE_LOOKUP_ENABLE=NO                       \
--name vsftp                                         \
--hostname localhost                                 \
--privileged=true                                    \
--restart=always                                     \
--volume ${HOME}/.docker/volumes/vsftpd:/home/vsftpd \
--volume /etc/localtime:/etc/localtime:ro            \
fauria/vsftpd# 命令行下载文件
wget ftp://admin:admin@172.17.0.1:50021/sources/boost_1_74_0.tar.gz# 默认情况下,仅能上传下载FTP根目录下的数据。不能下载其子目录中的数据。这是由于新建的子目录的所有权为root账户。而连接的账户为ftp。因此需要通过以下命令修改文件夹所属的用户及用户组。
chown ftp用户名  文件夹  # 修改所有者
chgrp ftp用户名  文件夹  # 修改所属组# UBUNTU连接FTP服务器
文件管理器 >> Other Locations >> Connect to server
ftp://172.17.0.1:10021

4.2 Portainer

# 拉取镜像
docker pull portainer/portainer-ce# 创建数据卷文件夹
mkdir -p ${HOME}/.docker/volumes/portainer/data# 创建容器
docker run                                            \
--detach                                              \
--publish 58000:8000                                  \
--publish 59000:9000                                  \
--name=portainer                                      \
--restart=always                                      \
--hostname localhost                                  \
--privileged=true                                     \
--volume /var/run/docker.sock:/var/run/docker.sock    \
--volume ${HOME}/.docker/volumes/portainer/data:/data \
portainer/portainer-ce:latest# 浏览器中输入:http://172.17.0.1:9000

4.3 Watchtower

# 拉取镜像
docker pull containrrr/watchtower# 创建容器
docker run                                         \
--detach                                           \
--name watchtower                                  \
--restart=always                                   \
--hostname localhost                               \
--privileged=true                                  \
--volume /var/run/docker.sock:/var/run/docker.sock \
containrrr/watchtower# 单次运行
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --cleanup --run-once

4.4 SiYuan

# 拉取镜像
docker pull b3log/siyuan# 创建数据卷文件夹
mkdir -p           ${HOME}/.docker/volumes/siyuan/workspace
chown -R 1000:1000 ${HOME}/.docker/volumes/siyuan/workspace# 创建容器
docker run                                             \
--detach                                               \
--publish 56806:6806                                   \
--name=siyuan                                          \
--restart=always                                       \
--privileged=true                                      \
--user 1000:1000                                       \
--volume /var/run/docker.sock:/var/run/docker.sock     \
--volume ${HOME}/.docker/volumes/siyuan/workspace:/siyuan/workspace \
b3log/siyuan --workspace=/siyuan/workspace --accessAuthCode=SiYuan123,# 浏览器中输入:
# http://172.17.0.1:56806

4.5 GitLab

4.5.1 创建容器

# 1. 拉取镜像
docker pull gitlab/gitlab-ce# 2. 创建宿主机数据卷文件夹
mkdir -p ${HOME}/.docker/volumes/gitlab/logs    # 日志
mkdir -p ${HOME}/.docker/volumes/gitlab/data    # 数据
mkdir -p ${HOME}/.docker/volumes/gitlab/config  # 配置# 3. 创建容器
docker run                                                    \
--detach                                                      \
--publish 50080:80                                            \
--publish 50022:22                                            \
--publish 50443:443                                           \
--name gitlab                                                 \
--hostname localhost                                          \
--privileged=true                                             \
--restart always                                              \
--volume ${HOME}/.docker/volumes/gitlab/config:/etc/gitlab    \
--volume ${HOME}/.docker/volumes/gitlab/logs:/var/log/gitlab  \
--volume ${HOME}/.docker/volumes/gitlab/data:/var/opt/gitlab  \
--volume /etc/localtime:/etc/localtime:ro                     \
--env 'GITLAB_HOST=192.168.1.88'                              \
--env 'GITLAB_PORT=50080'                                     \
--env 'GITLAB_SSH_PORT=50022'                                 \
gitlab/gitlab-ce# 浏览器中输入:
# http://172.17.0.1:50080

4.5.2 克隆路径问题

vim ${HOME}/.docker/volumes/gitlab/config/gitlab.rb# 方式一:
external_url 'http://192.168.1.88:50080'
gitlab_rails['gitlab_ssh_host'] = '192.168.1.88'
gitlab_rails['gitlab_shell_ssh_port'] = 50022
nginx['listen_port'] = 80# 方式二:
创建容器时不对 80 端口进行映射,而是直接映射 external_url 中的端口(即原本 -p 9080:80 修改成 -p 9080:9080),同时不要设置 nginx['listen_port'],因为 nginx 会自动监听 external_url 中的端口,若 external_url 未指定端口,则监听 80docker restart gitlab

4.5.3 获取默认密码

GitLab初始化时将初始秘方放在/etc/gitlab/initial_root_password,且该文件在首次执行reconfigure后自动删除。由于做了数据卷挂载,因此只需要到宿主机的${HOME}/.docker/volumes/gitlab/config/initial_root_password文件中获取。

sudo cat ${HOME}/.docker/volumes/gitlab/config/initial_root_password

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/697013.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win系统下安装php8.3版本并配置环境变量的详细教程

本篇文章主要讲解在win系统下安装和配置php8.3版本&#xff0c;并配置环境变量的详细教程。 日期&#xff1a;2024年2月22日 作者&#xff1a;任聪聪 一、下载php8.3版本包 php8.3版本官方下载地址&#xff1a;https://windows.php.net/download#php-8.3 步骤一、打开下载地址…

【Unity】Unity与安卓交互

问题描述 Unity和安卓手机进行交互&#xff0c;是我们开发游戏中最常见的场景。本教程将从一个简单的例子来演示一下。 本教程需要用到Android Studio2021.1.1 1.Android Studio新建一个工程 2.选择Empty Activity 然后点击Next 3.点击Finish完成创建 4.选择File-New-New Mo…

【python 3.9.18】windowns安装版

因为这个版本官方未提供&#xff0c;所以需要自己编译出来&#xff0c;其他没有的版本可以依据下面的进行生成一个exe也可行。 成品&#xff1a; https://gitee.com/greatLong/python-3.9.18/tree/master/python-3.9.18/PCbuild/amd64 1、环境准备 需要使用到 这里面还需要选…

【MATLAB GUI】 5. 图像处理菜单(菜单编辑器)

看B站up主freexyn的freexyn编程实例视频教程系列36Matlab GUI的学习笔记 任务要求设计一个图像处理菜单&#xff0c;实现图像的打开导入、灰度处理、存储等功能 修改过文件名&#xff0c;所以运行的时候会有一点点报错&#xff0c;但是不影响运行 打开工具栏下边的菜单编辑器…

开窗Window和WindowAll的区别

在 Apache Flink 流处理框架中&#xff0c;窗口操作是处理流数据的重要部分。Flink 提供了时间窗口、计数窗口等多种窗口类型&#xff0c;用于将数据分割成不同的窗口进行聚合或其他处理。 Window 和 WindowAll 是 Flink 中窗口操作的两种不同方式&#xff0c;它们分别对应不同…

GIT仓库转移--携带原分支及提交记录

背景&#xff1a;最近公司仓库位置需要移动&#xff0c;想保留原有的仓库分支和提交记录 操作&#xff1a; 目的位置新建仓库&#xff08;要保证创建无误&#xff09;原仓库 git clone 到本地&#xff0c;git pull 保证代码最新找到原仓库.git/config 文件&#xff0c;修改 rem…

EPSON机器人与PC上位机软件C#网络TCP通讯

项目背景&#xff1a; 在非标设备PIN焊接机中用到了爱普生机器人。上位机软件使用c#wpf开发。主要逻辑在上位机中。用爱普生机器人给焊接平台实现自动上下料。 通讯方式&#xff1a;网络TCP通讯&#xff0c;Socket 角色&#xff1a;上位机为服务端&#xff0c;机器人为客户端…

Linux|centos7|录屏神器asciinema的编译安装和离线化安装使用

前言&#xff1a; asciinema这个录屏软件前面有一点研究&#xff0c;但它的部署安装比较麻烦&#xff0c;虽然此软件的安装部署方式是很多的&#xff0c;比如yum安&#xff0c;apt&#xff0c;brew&#xff0c;docker&#xff0c;pip&#xff0c;rust编译&#xff0c;docker等…

创建一个基于Node.js的实时聊天应用

在当今数字化社会&#xff0c;实时通讯已成为人们生活中不可或缺的一部分。无论是在社交媒体平台上与朋友交流&#xff0c;还是在工作场合中与同事协作&#xff0c;实时聊天应用都扮演着重要角色。与此同时&#xff0c;Node.js作为一种流行的后端技术&#xff0c;为开发者提供了…

CrossOver虚拟机软件2024有哪些功能?最新版本支持哪些游戏?

CrossOver由codewaver公司开发的类虚拟机软件&#xff0c;目的是使linux和Mac OS X操作系统和window系统兼容。CrossOver不像Parallels或VMware的模拟器&#xff0c;而是实实在在Mac OS X系统上运行的一个软件。CrossOvers能够直接在Mac上运行Windows软件与游戏&#xff0c;而不…

Java架构师之路七、大数据:Hadoop、Spark、Hive、HBase、Kafka等

目录 Hadoop&#xff1a; Spark&#xff1a; Hive&#xff1a; HBase&#xff1a; Kafka&#xff1a; Java架构师之路六、高并发与性能优化&#xff1a;高并发编程、性能调优、线程池、NIO、Netty、高性能数据库等。-CSDN博客Java架构师之路八、安全技术&#xff1a;Web安…

[前端]开启VUE之路-NODE.js版本管理

VUE前端开发框架&#xff0c;以Node.js为底座。用历史性的项目来学习&#xff0c;为了降低开发环境的影响因素&#xff0c;各种版本号最好能一致。前端项目也是一样。为了项目能够快速启动&#xff0c;Node.js的版本管理&#xff0c;可以带来很大的便利&#xff08;node.js快速…

2023年全年回顾

本年度比较折腾&#xff0c;整体而言可以分为两个大的阶段&#xff0c;简单而言&#xff0c;转岗前和转岗后。 个人收获 据说程序员有几大浪漫&#xff0c;比如操作系统、编译器、浏览器、游戏引擎等。 之前参与过游戏引擎&#xff0c;现在有机会参与存储业务交付&#xff0c…

LangChain支持哔哩哔哩视频总结

是基于LangChain框架下的开发&#xff0c;所以最开始请先 pip install Langchain pip install bilibili-api-python 技术要点&#xff1a; 使用Langchain框架自带的Document loaders 修改BiliBiliLoader的源码&#xff0c;自带的并不支持当前b站的视频加载 源码文件修改&a…

如何在 Emacs Prelude 上使用 graphviz 的 dot 绘制流程图

文章目录 如何在Emacs Prelude上使用graphviz的dot绘制流程图 <2022-08-23 周二> 如何在Emacs Prelude上使用graphviz的dot绘制流程图 标题中的Emacs Prelude是指&#xff1a;bbatsov/prelude&#xff0c;在custom.el中添加即可&#xff1a; ;;; graphviz (prelude-re…

【高德地图】Android高德地图绘制标记点Marker

&#x1f4d6;第4章 Android高德地图绘制标记点Marker ✅绘制默认 Marker✅绘制多个Marker✅绘制自定义 Marker✅Marker点击事件✅Marker动画效果✅Marker拖拽事件✅绘制默认 Infowindow&#x1f6a9;隐藏InfoWindow 弹框 ✅绘制自定义 InfoWindow&#x1f6a9;实现 InfoWindow…

Java 中 CopyOnWriteArrayList和CopyOnWriteArraySet

什么是CopyOnWriteArrayList和CopyOnWriteArraySet CopyOnWriteArrayList和CopyOnWriteArraySet都是Java并发编程中提供的线程安全的集合类。 CopyOnWriteArrayList是一个线程安全的ArrayList&#xff0c;其内部通过volatile数组和显式锁ReentrantLock来实现线程安全。它采用…

解决ios17无法复制的问题

原代码写过一片js实现复制的代码 那段代码有问题 以下是之前写的一段有问题的原代码&#xff1a; let url "kkkkkk";const hiddenTextarea document.createElement("textarea");hiddenTextarea.style.position "absolute";hiddenTextarea.st…

ArcgisForJS如何实现添加含图片样式的点要素?

文章目录 0.引言1.加载底图2.获取点要素的坐标3.添加含图片样式的几何要素4.完整实现 0.引言 ArcGIS API for JavaScript 是一个用于在Web和移动应用程序中创建交互式地图和地理空间分析应用的库。本文在ArcGIS For JavaScript中使用Graphic对象来创建包含图片样式的点要素。 …

MIT-6.824-Lab2,Raft部分笔记|Use Go

文章目录 前记Paper6&#xff1a;RaftLEC5、6&#xff1a;RaftLAB22AtaskHintlockingstructureguide设计与编码 2BtaskHint设计与编码 2CtaskHint question后记 LEC5&#xff1a;GO, Threads, and Raftgo threads技巧raft实验易错点debug技巧 前记 趁着研一考完期末有点点空余…