本地docker安装使用

目录

WIN10安装

启用虚拟化

打开hyper-v功能

安装WSL,即适用于Windows的Linux子系统(又称分发安装,分发指的是具体的Linux分发版本,如ubuntu,debian,redhat等)

启动已安装分发

测试

使用

使用问题 

普通用户build镜像报错

问题原因

解决方法

Docker push报错server gave HTTP response to HTTPS client

问题原因

解决方法


记一次本地docker安装

WIN10安装

启用虚拟化

开机有画面时不停间断地点击F10进入BIOS(HP惠普),找到固件中启用虚拟化,设置开启

打开hyper-v功能

应用和功能->程序和功能->启用或关闭windows功能下

若无hyper-v选项,运行Hyper-V.cmd脚本,执行完成后重启电脑,选项就出现了,全部选中即可

注:hyper-v是微软推出的系统管理程序虚拟化产品,电脑自带

安装WSL,即适用于Windows的Linux子系统(又称分发安装,分发指的是具体的Linux分发版本,如ubuntu,debian,redhat等)

  1. 完全未安装 WSL (全称windows subsystem for linux)时,使用命令wsl --install即可
  2. 若以上步骤运行 wsl --install时直接输出查看 WSL 帮助文本,请尝试运行 wsl --list --online 以查看可用发行版列表,然后运行 wsl --install -d <DistroName> 以安装发行版
  3. 注意:安装分发时报错0x80072efd或0x80072ee2,请关闭防火墙,并将ipv4协议DNS解析改为4.2.2.1,备用改为4.2.2.2即可

启动已安装分发

设置用户名密码:

测试

方式一:查看版本号docker version,docker run hello-world 来载入测试镜像测试

测试报错:

方式二:安装了docker desktop工具点开报错,需升级到wsl2

 解决办法:按文档操作以下两步即可

测试成功

方式一:

 

方式二:

使用

  1. build镜像:docker build -t 镜像名:标签 .

  2. 根据Dockerfile文件执行一系列命令,详解如下

根据FROM指令获取到镜像,ENV指定环境变量,COPY移动文件(被移动文件需在同一目录下),RUN chmod文件授权,CMD指定启动脚本命令

3.镜像查看:docker images

4.push镜像到远程仓库,报错

解决:docker desktop添加如下insecure-registries配置,并重启

注:docker配置文件daemon.json/daemon.conf(配置远程私有仓库,镜像加速器等)路径默认:/etc/docker

重新push成功

5.portainer上拉取镜像 

6.创建/编辑容器并启动

docker run -p 10108:10108 --name 容器名称 -e "SPRING_PROFILES_ACTIVE=prod" -d 当前镜像

已有的镜像,使用container id开启即可:docker start containerId

常用命令参数:

-p:指定端口映射,宿主机端口:容器端口

-P:随机端口映射,容器内部端口随机映射到主机的端口

--name:指定容器名称

-e:设置环境变量

-d:后台运行,并返回容器id

注:该命令是docker create和docker start的结合

portainer操作如下:

 7.容器查看

docker ps:查看运行中容器

docker ps -a:查看所有容器

使用问题 

普通用户build镜像报错

ERROR: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied

问题原因

docker通信权限不足(/var/run/docker.sock)

解决方法

1、添加用户组的方式解决问题(只适用于在容器外部部署的方式)

在容器本身就是在docker中部署的,容器所在的用户在容器内部,所以无法把容器所在的用户加入到docker.sock的用户组

(1)将用户加入docker组($USER:当前用户,其他用户改成相应的用户名即可)

sudo gpasswd -a $USER docker

(2)查看用户组下用户是否添加成功:cat /etc/group | grep docker 

重启docker服务:sudo systemctl restart docker

修改权限/var/run/docker.sock为666

 2、修改相关文件或文件夹(docker.sock)权限为777,或者直接暴露docker.sock

风险较大,在任何地方都能使用docker命令了,很有可能会被恶意攻击者完全接管

3、使用root用户权限启动容器

在启动命令中加入-u root

Docker push报错server gave HTTP response to HTTPS client

问题原因

Docker自从1.3.X之后docker registry交互默认使用的是HTTPS,但是搭建私有镜像默认使用的是HTTP服务导致

解决方法

需添加insecure-registry配置,添加方式有如下两种:

1.启动命令添加参数:--insecure-registry

(1)查找docker.service配置文件路径:find / -name docker.service

(2)修改docker.service配置,添加启动命令参数

vim /etc/systemd/system/multi-user.target.wants/docker.service

 2.配置文件中添加参数

(1)在/etc/docker目录下创建配置文件daemon.conf

添加选项DOCKER_OPTS=" --insecure-registry=私有仓库IP:私有仓库端口"

(2)指定docker配置文件:在docker.service文件中添加EnvironmentFile=-/etc/docker/daemon.conf

-:忽略错误

/etc/docker/daemon.conf:配置文件绝对路径(包括配置文件名称

(3)ExecStart引入配置文件中的变量$DOCKER_OPTS,后续添加多个私有仓库在daemon.conf配置文件中添加即可:空格隔开,参考格式如下:

"--insecure-registry=私有仓库IP:私有仓库端口 --insecure-registry=私有仓库IP:私有仓库端口"

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值