windows docker安装cloudreve

windows-docker安装cloudreve

在E盘新建E:/docker/dc1docker-compose.yml文件,写入

version: "3.4"
volumes:
  # tempData:
  cloudreve:
  uploads:
services:  
  cloudreve:
      container_name: cloudreve
      image: cloudreve/cloudreve:latest
      restart: unless-stopped
      ports:
        - "5212:5212"
        # - "443:443"
      volumes:
        - cloudreve:/cloudreve
        - uploads:/cloudreve/uploads

进入该文件夹,运行docker-compose启动:


E:\docker\dc1<!--autointro-->

windows安装docker

安装WSL

先安装WSL,管理员运行`wsl –install

(base) PS C:\Users\weiyo> wsl --install
正在安装: 虚拟机平台
已安装 虚拟机平台。
正在安装: 适用于 Linux 的 Windows 子系统
已安装 适用于 Linux 的 Windows 子系统。
正在下载: WSL 内核
正在安装: WSL 内核
已安装 WSL 内核。
正在下载: GUI 应用支持
[======                    10.6%                           ]

(base) PS C:\Users\weiyo<!--autointro-->

docker因为无法创建文件夹映射导致启动失败解决

[root@iZ8vbajg9wo8iwynfb1lgeZ dc_wagtail]# docker-compose up
Creating wagtail ... error
ERROR: for wagtail  Cannot create container for service wagtail: open /var/lib/docker/volumes/dc_wagtail_wagtailpython/_data: no such file or directory
ERROR: for wagtail  Cannot create container for service wagtail: open /var/lib/docker/volumes/dc_wagtail_wagtailpython/_data: no such file or directory
ERROR: Encountered errors while bringing up the project.

对于我来说出现这种错误一般是因为测试过程中第一次生成了映射文件夹,但是第二次测试前给它改名字了,想让容器重新生成,但结果是容器无法从新生成。
又发现虽然自己把主机实际文件夹名称改了,但是docker内部volume记录名称仍然存在,这就导致找不到该文件夹了。
使用
docker volume ls列出映射的文件夹
使用
`docker volume rm

docker网络模式

Docker有四种网络模式

1.host模式

容器和宿主机共享network,这时候localhost就可以访问宿主机端口了。

docker run -d --network host --name nginx

2.container模式

容器A和容器B共享network,就是说容器之间可以通过localhost直接访问。

docker run -d --network container --name nginx

3.none模式

容器与宿主机隔绝,不能联网,安全性最高,一般很少用到。

docker run -d --network none --name nginx

4.bridge模式(默认模式)

每个容器有自己的network,通过localhost访问不到宿主机

docker run -d --name nginx

docker-compose 中volumes参数说明

docker-compose 使用数据卷进行持久化
直接使用宿主机路径映射

  image: ghost
volumes:
- ./ghost/config.js:/var/lib/ghost/config.js

使用卷标映射

    services:
mysql:
image: mysql
container_name: mysql
volumes:
- mysql:/var/lib/mysql
...
volumes:
mysql:

第一种情况路径直接挂载到本地,比较直观,但需要管理本地的路径
第二种使用卷标的方式,比较简洁,但你不知道数据存在本地什么位置,下面说明如何查看docker的卷标

查看所有卷标

  docker volume ls 

查看批量的卷标

 $ docker volume ls | grep mysql
local               vagrant_mysql

查看具体的volume对应的真实地址


$ docker volume inspect vagrant_mysql
[
{
"Name": "vagrant_mysql",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/vagrant_mysql/_data"
}
]
```<!--autointro-->

Compose常用命令

Compose常用命令

Compose常用命令
docker-compose -h                           # 查看帮助
docker-compose up                           # 启动所有docker-compose服务
docker-compose up -d                        # 启动所有docker-compose服务并后台运行
docker-compose down                         # 停止并删除容器、网络、卷、镜像。
docker-compose exec  yml里面的服务id         # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash
docker-compose ps                      		# 展示当前docker-compose编排过的运行的所有容器
docker-compose top                     		# 展示当前docker-compose编排过的容器进程
docker-compose logs  yml里面的服务id     	# 查看容器输出日志
docker-compose config     					# 检查配置
docker-compose config -q  					# 检查配置,有问题才有输出
docker-compose restart   					# 重启服务
docker-compose start     					# 启动服务
docker-compose stop      					# 停止服务

docker查看所有镜像:

docker images

docker删除所有镜像:

#删除tag为none的镜像
docker image prune
#删除指定ID的镜像
docker rmi ed9c93747fe1
#删除全部镜像
docker rmi -f $(docker images -qa)

docker关闭、删除所有容器:

docker stop $(docker ps -a -q)
docker rm $(docker ps -aq)

docker-compose命令使用

docker-compose -f docker-compose-org3.yaml up -d

重新启动docker服务

service docker restart

进入docker容器

docker exec -it [CONTAINERID] /bin/bash

查看docker运行中项目日志

docker logs -f  容器ID
docker logs -f -t --tail 100 容器ID

查看docker-compose运行日志

docker-compose  logs -f
#or
docker-compose  logs

docker 启动配置文件路径

vim /lib/systemd/system/docker.service

进入docker容器内

docker exec -it 89693c83bae9 /bin/bash

注意:如果报错OCI runtime exec failed: exec failed: container_linux.go:349: starting container process caused “exec: “/bin/bash”: stat /bin/bash: no such file or directory”: unknown使用如下命令:

docker exec -it 1e33b26152e1 bash #or docker exec -it 1e33b26152e1 sh<!–autointro–>

centos8 安装docker

最近换了服务器,安装了最新的centos8。为了方便使用,避免各种环境相互干扰,准备使用docker来搭建自己的各种应用。记录安装docker的过程如下。

  1. 查看是否已经安装docker的某些版本
    yum repolist

如有,则移除:

sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
  1. 安装需求工具:
    
    sudo yum install -y yum-utils

$ sudo yum-config-manager \
–add-repo \
https://download.docker.com/linux/centos/docker-ce.repo


遇到报错:

Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/CentOS-epel.repo; Configuration: OptionBinding with id "failovermethod" does not exist


修改了```/etc/yum.repos.d/CentOS-epel.repo```文件:
将```failovermethod=priority```注释掉,变成如下:

[epel]
name=Extra Packages for Enterprise Linux 8 – $basearch
baseurl=http://mirrors.cloud.aliyuncs.com/epel/8/Everything/$basearch

220913comment

failovermethod=priority

enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8


修改后重新运行命令,成功后进行下一步。
3. 安装docker

sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin


这一步会让确认是否下载,核对指纹。确认即可。

Importing GPG key 0x621E9F35:
Userid : "Docker Release (CE rpm) docker@docker.com

docker相关

关于映射文件夹

查看和移除docker映射文件夹

[root@iZ8vbajg9wo8iwynfb1lgeZ dc1]# docker volume ls
DRIVER    VOLUME NAME
local     d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667
local     dc1_cheveretoconfig
local     dc1_cheveretodata
local     dc1_djangocmsapp
local     dc1_djangocmsdata
[root@iZ8vbajg9wo8iwynfb1lgeZ dc1]# docker volume rm d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667
d70d4c146eba60e8eb616b8d68f58f6254075a9f30d18ff7584ed424cc418667

docker查询容器所有文件夹映射

docker inspect easyimage | grep Mounts -A 20

docker daemon文件生效

sudo systemctl daemon-reload 
sudo systemctl restart docker

更新服务器时间-bash: ntpdate: 未找到命令

 yum install ntpdate
ntpdate -u ntp.api.bz

221018

docker在pull镜像的时候经常出现头一天晚上怎么都不行,第二天一早忽然就可以了。

docker查看所有容器占用的内存

docker stats

获取帮助

docker stats --help

“`perl

获取容器ID

docker ps =<!–autointro–>

window查看端口占用程序

1、打开cmd命令提示符窗口;
2、netstat -ano | findstr xxx(端口),查找端口占用的PID;
3、tasklist | findstr xxx(PID),输入后回车,界面第一列显示的即为占用端口的进程。

C:\Users\weiyo>netstat -ano | findstr 5212
TCP    127.0.0.1:5212         0.0.0.0:0              LISTENING       6220
TCP    127.0.0.1:51616        127.0.0.1:5212         TIME_WAIT       0
C:\Users\weiyo<!--autointro-->

根据局域网内主机名查询ip

通过ping主机名可以后去对方ip。

远程连接时不知道ip地址可以使用主机名连接。


C:\Users\Administrator>nbtstat -a PCMICRO-2OJFA00
以太网:
节点 IP 址址: [192.168.1.79] 范围 ID: []
找不到主机。
vEthernet (Default Switch) 3:
节点 IP 址址: [192.168.59.113] 范围 ID: []
找不到主机。
WLAN:
节点 IP 址址: [0.0.0.0] 范围 ID: []
找不到主机。
以太网 2:
节点 IP 址址: [169.254.126.76] 范围 ID: []
NetBIOS 远程计算机名称表
名称               类型         状态
---------------------------------------------
PCMICRO-2OJFA00<20<!--autointro-->