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。修改方式如下:
- 通过命令
orb config docker
修改 - 直接编辑
~/.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配置文件:
- https://github.com/elastic/elasticsearch/tree/8.11/docs/reference/setup/install/docker
- https://github.com/elastic/elasticsearch/blob/8.11/docs/reference/setup/install/docker/docker-compose.yml
skywalking compose的配置文件,参考skywalking的docker目录,重点里面env 与 docker-compose配置文件:
- https://github.com/apache/skywalking/tree/master/docker
- https://github.com/apache/skywalking/blob/master/docker/docker-compose.yml
自己酌情修改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
其他参考,可选: