Docker

date
Dec 22, 2021
slug
docker
status
Published
tags
Docker
summary
Docker
type
Post
这里只是记录一下碎片性的知识,推荐https://yeasy.gitbook.io/docker_practice/ 这个网站更齐全,另外常用的一些docker-compose请查看

安装docker

卸载旧版本
较旧的 Docker 版本称为 docker 或 docker-engine 。如果已安装这些程序,请卸载它们以及相关的依赖项。
安装 Docker Engine-Community
使用 Docker 仓库进行安装
在新主机上首次安装 Docker Engine-Community 之前,需要设置 Docker 仓库。之后,您可以从仓库安装和更新 Docker。
设置仓库
安装所需的软件包。yum-utils 提供了 yum-config-manager ,并且 device mapper 存储驱动程序需要 device-mapper-persistent-data 和 lvm2。
使用以下命令来设置稳定的仓库。
安装 Docker Engine-Community
安装最新版本的 Docker Engine-Community 和 containerd,或者转到下一步安装特定版本:
如果提示您接受 GPG 密钥,请选是。
有多个 Docker 仓库吗?
如果启用了多个 Docker 仓库,则在未在 yum install 或 yum update 命令中指定版本的情况下,进行的安装或更新将始终安装最高版本,这可能不适合您的稳定性需求。
Docker 安装完默认未启动。并且已经创建好 docker 用户组,但该用户组下没有用户。
要安装特定版本的 Docker Engine-Community,请在存储库中列出可用版本,然后选择并安装:
1、列出并排序您存储库中可用的版本。此示例按版本号(从高到低)对结果进行排序。
2、通过其完整的软件包名称安装特定版本,该软件包名称是软件包名称(docker-ce)加上版本字符串(第二列),从第一个冒号(:)一直到第一个连字符,并用连字符(-)分隔。例如:docker-ce-18.09.1。
通过运行 hello-world 映像来验证是否正确安装了 Docker Engine-Community 。

卸载docker

安装Docker Compose

进入相应目录
将自己的加速的地址复制进去

常用命令

docker-compose up -d
docker-compose -f es.yml up -d
docker-compose down
docker-compose down -v
docker-compose stop
docker-compose logs
 

YML中version版本有区分

 
 
 

给普通用户添加docker权限

docker网络设置代理

 

清除缓存

docker system prune --volumes
docker system prune
 

挂载问题

volumes 可能会导致无法读写的情况,可以这样配置
/data/xxx:/data/xxx:rw 最后添加:rw的方式解决
 

强制更新

docker-compose up -d --build -no-cache
 
 

离线安装docker

1.进入官网
2.下载安装包
(服务器国产系统建议使用19.03.12版本 ,因为高版本会出现 OCI 318 未知的权限问题)
3.解压
4.配置 docker.service文件
可以直接启动,但是为了方便可以做个配置
启动Docker守护程序:
如果需要使用其他选项启动守护程序,请相应地修改以上命令,或者创建并编辑文件/etc/docker/daemon.json 以添加定制配置选项。
重启服务
6.检验
7.开机启动

为 dockerd 设置网络代理

"docker pull" 命令是由 dockerd 守护进程执行。而 dockerd 守护进程是由 systemd 管理。因此,如果需要在执行 "docker pull" 命令时使用 HTTP/HTTPS 代理,需要通过 systemd 配置。
  • 为 dockerd 创建配置文件夹。
复制
  • 为 dockerd 创建 HTTP/HTTPS 网络代理的配置文件,文件路径是 /etc/systemd/system/docker.service.d/http-proxy.conf 。并在该文件中添加相关环境变量。
复制
  • 刷新配置并重启 docker 服务。
复制

为 docker 容器设置网络代理

在容器运行阶段,如果需要使用 HTTP/HTTPS 代理,可以通过更改 docker 客户端配置,或者指定环境变量的方式。
  • 更改 docker 客户端配置:创建或更改 ~/.docker/config.json,并在该文件中添加相关配置。
复制
  • 指定环境变量:运行 "docker run" 命令时,指定相关环境变量。
环境变量
docker run 示例
HTTP_PROXY
--env HTTP_PROXY="http://proxy.example.com:8080/"
HTTPS_PROXY
--env HTTPS_PROXY="http://proxy.example.com:8080/"
NO_PROXY
--env NO_PROXY="localhost,127.0.0.1,.example.com"

为 docker build 过程设置网络代理

在容器构建阶段,如果需要使用 HTTP/HTTPS 代理,可以通过指定 "docker build" 的环境变量,或者在 Dockerfile 中指定环境变量的方式。
  • 使用 "--build-arg" 指定 "docker build" 的相关环境变量
复制
  • 在 Dockerfile 中指定相关环境变量
环境变量
Dockerfile 示例
HTTP_PROXY
ENV HTTP_PROXY="http://proxy.example.com:8080/"
HTTPS_PROXY
ENV HTTPS_PROXY="http://proxy.example.com:8080/"
NO_PROXY
ENV NO_PROXY="localhost,127.0.0.1,.example.com"

docker run 转换为compose的问题

系统环境:Macos 12.6, Docker 4.13.1, docker-compose 1.29.2
背景: 希望运行一个基本的 centos 镜像,测试操作一些 bash 命令
问题描述: docker run 可以运行成功,docker-compose 运行报错,且无日志信息
复现过程:
docker run 方式,在 terminal 运行以下命令
docker-compose 使用composerize 转换后结果为
执行命令,运行状态为 Exited
docker-compose logs -f 日志内容:
 
问题描述解析:
-it 就直接进入到容器内了。docker-compose 运行后,发现程序执行完就推出了,所以容易就 exit 了。
在docker compose 中需要添加一下参数
 

Docker使用Mysql镜像远程访问

单独运行镜像
 
 

© Wang Jiahao 2021 - 2024