跳转到内容

Docker笔记

CF搭建dockerhub代理

cloudflare反向代理之dockerhub代理配置。

项目主页:https://github.com/cmliu/CF-Workers-docker.io

参考教程:https://zhuanlan.zhihu.com/p/703901780

代理搭建完成之后,配置docker:https://zhuanlan.zhihu.com/p/703693460

最新可用dockerhub代理:https://github.com/dongyubin/DockerHub

主要操作vim /etc/docker/daemon.json

json
{
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.mybacc.com",
    "https://dytt.online",
    "https://lispy.org",
    "https://docker.xiaogenban1993.com",
    "https://docker.yomansunter.com",
    "https://aicarbon.xyz",
    "https://666860.xyz",
    "https://docker.zhai.cm",
    "https://a.ussh.net",
    "https://hub.littlediary.cn",
    "https://hub.rat.dev",
    "https://docker.m.daocloud.io"
  ]
}

重启docker:

bash
# 重新加载 systemd 的配置
sudo systemctl daemon-reload

# 重启 Docker 服务
sudo systemctl restart docker

如果docker没开机启动可以配置开机自启:

bash
sudo systemctl enable docker

查看docker源是否生效:

bash
docker info
docker run hello-world

Mac下面使用orbstack方式安装docker/docker compose。修改方式如下:

  1. 通过命令orb config docker修改
  2. 直接编辑 ~/.orbstack/config/docker.json修改

改完重启docker:

bash
orb restart docker

docker显示完整命令

bash
docker ps -a --no-trunc

卸载旧的docker版本

bash
yum remove docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-engine

安装步骤

设置docker镜像仓库:

bash
yum install -y yum-utils

yum-config-manager \
 --add-repo \
 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装:

bash
yum makecache fast
yum install docker-ce docker-ce-cli containerd.io

启动并验证:

bash
systemctl start docker
systemctl enable docker
docker run hello-world
docker images

卸载刚装的版本

bash
yum remove docker-ce docker-ce-cli containerd.io
rm -rf /var/lib/docker

配置阿里云镜像加速

bash
sudo mkdir -p /etc/docker

sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://axvfsf7e.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

普通用户授权

bash
# 为用户新增添加一个附加组docker
sudo usermod –aG docker $USER

普通用户验证:
docker version
docker run hello-world

docker常用参数

bash
docker search mysql --filter=STARS=3000

docker pull mysql5.7

docker rmi 删除镜像

docker rmi -f 镜像id

docker rmi -f $(docker images -aq) 删除全部

docker run -it centos /bin/bash 进入容器

docker logs -tf 容器id

docker logs --tail number 容器id #num为要显示的日志条数

查看容器的元数据 :
docker inspect 容器id

拷贝容器的文件到主机中:
docker cp 容器id:容器内路径 目的主机路径

拷贝宿主机的文件到容器中 :
docker cp 目的主机路径 容器id:容器内路径

docker exec -it c703b5b1911f /bin/bash

删除当前未被使用的docker镜像

清理所有未使用的(dangling)镜像: 这些是没有被任何容器引用的镜像层。

bash
docker image prune

清理所有未使用的容器: 这会删除所有已停止的容器。

bash
docker container prune

清理所有未使用的卷: 这些是没有被任何容器使用的命名卷。

bash
docker volume prune

清理所有未使用的网络: 这些是没有被任何容器使用的网络。

bash
docker network prune

清理所有未使用的镜像、容器、网络和构建缓存: 这是一个更全面的清理命令,会删除所有不再被使用的 Docker 对象。请注意,这也会删除所有未打标签的镜像。

bash
docker system prune

可以使用 -a 标志来删除所有未使用的镜像,包括那些有标签但没有被任何容器引用的镜像:

bash
docker system prune -a

其他待验证:

bash
docker images | tail -n +2 | awk '{print $1":"$2,$3}' | while read TAG ID;do if(! grep $TAG< <(docker ps | tail -n +2 | awk '{print $2}') > /dev/null);then echo $ID;fi;done | while read LINE;do docker rmi $LINE;done

docker run 示例

基本用法:

bash
docker run -d --name nginx01 -p 3334:80 nginx
-d 后台运行
--name 给容器命名
-p 3334:80 将宿主机的端口3334映射到该容器的80端口

进阶用法,以jenkins为示例:

bash
docker run --rm -d --name jenkins-docker \
 -p 8080:8080 -p 50000:50000 \
 -v /home/ht/ht-devops/jenkins/jenkins_home:/var/jenkins_home \
 jenkinsci/blueocean

docker run -d --rm --name jenkins-docker \
 -p 8080:8080 -p 50000:50000 \
 -v jenkins_home:/var/jenkins_home \
 jenkinsci/blueocean
 挂载目录如果是相对路径,比如上面,则会创建/var/lib/docker/volumes/jenkins-data

探索docker在非root用户情形下的使用情况 :

bash
docker run -u root -v /var/jenkins/data:/var/jenkins_home -p 8080:8080 jenkinszh/blueocean-zh:2.204.5

docker run -d --name jenkins -p 8080:8080 -v /home/ht/ht-devops/jenkins/jenkins_home:/var/jenkins_home jenkinszh/blueocean-zh:2.204.5

su - root

chown -R 1000:1000 /home/ht/ht-devops/jenkins/jenkins_home

备注:

-d //启动在后台
--name //容器名字
-p //端口映射(8081:宿主主机端口,8080:容器内部端口)
-v //数据卷挂载映射(/data/jenkins_home:宿主主机目录,另外一个即是容器目录)
jenkins/jenkins:lts //Jenkins镜像(最新版)

docker run --rm --name jenkins-docker -d -p 8080:8080 -p 50000:50000 jenkinszh/blueocean-zh:2.204.5
898833f858b24061b49301dbe401723d
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword

jenkins blueocean容器hub:
https://hub.docker.com/r/jenkinsci/blueocean
https://www.jenkins.io/doc/book/blueocean/

一些参考:

docker-compose常用操作

以elasticsearch skywalking安装过程作为示例。

es官方文档:https://www.elastic.co/guide/en/elasticsearch/reference/8.11/docker.html

docker-compose官网的方式:

官网需要访问github,使用curl直接下载安装,也可以先下载好后使用。方式如下(Linux):

https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64

下载下来后改名,然后放到/usr/local/bin/,赋予可执行权限。需要root权限。

bash
cp  docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

安装以及配置用法参考:https://blog.csdn.net/qq_45868731/article/details/131743699

elasticsearch安装docker-compose方式,官网教程: https://www.elastic.co/guide/en/elasticsearch/reference/8.11/docker.html#docker

里面搜compose有 .env与docker-compose.yml的配置样例。

elastic docker安装官方教程:

https://www.elastic.co/guide/en/elasticsearch/reference/8.11/docker.html

重点里面env 与 docker-compose配置文件:

skywalking compose的配置文件,参考skywalking的docker目录,重点里面env 与 docker-compose配置文件:

自己酌情修改env 与 docker-compose配置文件,多做测试。

docker与普通用户权限

步骤:

1、添加docker源,linuxmint可以参考:

https://www.zhihu.com/question/630722571

2、安装

bash
sudo apt-get install docker-ce docker-ce-cli containerd.io

3、配置普通用户运维权限

bash
sudo usermod -aG docker $USER
newgrp docker

其他参考,可选: