Docker备忘录

基础知识

博客园内有很多作者分享
(必看)10分钟看懂Docker和K8S

全面的Docker快速入门教程
Docker与虚拟机的区别
Docker 架构及工作原理

手把手教你安装Docker
Dockerfile制作自己的镜像文件

网络

# 4个模式,一般只用briage
host #直连主机IP
none #没有设置
briage #虚拟网卡
container #内网互联

Vim /etc/docker/daemon.json
{"bip":"10.55.0.1/16"
}

导入导出

docker images
查看镜像,这里选择nginx作为示范

docker save IMAGE ID > nginx.tar
导出nginx

mv nginx.tar docker/
cd docker
docker load < nginx.tar
docker images
剪切nginx.tar到docker,导入nginx.tar,查看镜像

docker tag IMAGE ID nginx:latest
修改名字

搭建仓库(Registy)

docker pull registy
docker images
创建仓库,查看镜像

docker run -d -v /registry:/var/lib/registry -p 5000:5000 --restart alwalys --name registry registry:latest
- `-d`: 表示容器在后台运行,不占用终端。
- `-v /registry:/var/lib/registry`: 将本地文件夹`/registry`挂载到容器内部的`/var/lib/registry`目录,用于持久化存储镜像数据。
- `-p 5000:5000`: 将容器内部的5000端口映射到主机的5000端口,用于访问registry镜像仓库。
- `--restart=always`: 设置容器总是自动重启,以确保容器服务不会因意外退出而中断。
- `--name registry`: 为容器设置一个名称。
- `registry:latest`: 使用registry最新版本的镜像来创建容器。

docker ps
ss -ntl
查看是否运行

docker tag nginx:latest 127.0.0.1:5000/nginx:latest
docker push 127.0.0.1:5000/nginx:latest
curl 127.0.0.1:5000/v2/_catalog
修改nginx名字并上传到仓库,用curl查看是否已上传
- `/v2/_catalog`: 查询所有可用的镜像仓库的名称。
其中,`/v2`表示使用的是Docker Registry API v2版本,`_catalog`则是API的一个endpoint,用于查询所有可用的镜像仓库的名称。

上传私有仓库

编辑文件/etc/docker/daemon.json

{"registry-mirror": [ "https://registry.docker-cn.com"
],"insecure-registries": [ "[私有仓库 ip:port]"
]
}

然后在命令行执行以下命令:
[root@CentOS7 ~]# systemctl restart docker
[root@CentOS7 ~]# docker login ---这一步根据实际情况操作。
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to
https://hub.docker.com to create one. Username:

命令

Docker日常工作常用命令
Docker笔记-Sol·wang
w3xueDocker命令手册

docker run -dit --name {新容器名称} \
	-c 2 \            # 限制CPU个数
	-m 4G \           # 限制内存大小(BKMG)
	--privileged \              # 赋予高系统权限
	-e LANG=C.utf8 \            # 系统环境变量-容器字符集
	-e TZ=Asia/Shanghai \       # 系统环境变量-容器时区
	--network {net-name} \      # 指定使用的网卡
	--ip {ip-address} \         # 指定IP地址(前提是使用自定义网卡)
	-p {cPort}:{port} \         # 宿主端口映射
	--hostname {host-name} \          # 设主机名称
	--restart unless-stopped \        # 自动重启
	-v /registry:/var/lib/registry  # 卷宿主文件映射
	{镜像名}:{tag}

docker commit -a 'test' -m 'test' container image:v1.0 将运行的容器保存为新的镜像
	- `-a`:指定新镜像的作者
	- `-m`:指定新镜像的描述信息
	- `-c`:在容器中执行dockerfile创建镜像
	- `-p`:在commit时将容器暂停
docker version 查看docker版本
docker info 查看docker信息
docker system df 查看docker磁盘使用信息
docker inspect image/container/volume/network 查看对象的详细信息
docker pull images 拉取镜像
docker rmi IMAGES ID 删除镜像(运行中的无法删除,只删除未开启的镜像)
	docker rmi $(docker images -q) 删除所有镜像(输出所有镜像ID,传递给rmi)
	for i in $(docker images -q); do docker rmi $i; done (遍历所有镜像ID,一个一个地传递给rmi)
docker push REGISTY 上传仓库
docker run/start/stop/rm/rm -f CONTAINER ID 启动/开启/停止/删除/强制删除 容器
docker stats 查看容器的资源使用信息
docker ps -a 查看容器启动暂停信息
docker top CONTAINER ID 查看容器进程(docker ps查看容器ID)
docker logs 查看容器日志
docker history IMAGES 查看镜像历史版本
docker create -it --name test test.io/library/ubuntu 使用test.io仓库来创建名为test的新容器
docker kill -s KILL `docker ps -q` 删除所有运行的容器
docker run -it /bin/bash 用RUN在创建时进入容器
docker exec -it CONTAINER ID 用exec进入容器,退出时不会关闭容器

docker run CONTAINER ID /bin/echo Hello World 不进入容器,打印一个字符串
docker exec -it CONTAINER ID bash -c date 查看容器时间
docker cp Filename CONTAINER ID:/ 将Linux上的文件复制到容器里
docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 获取正在运行的容器IP地址


curl -XGET http://ip:端口/v2/_catalog 查看私有仓库
curl -XGET http://ip:端口/v2/私有仓库镜像名称/tags/list 获取某个镜像的标签列表
posted @ 2023-05-08 17:31  Mugetsukun  阅读(52)  评论(0编辑  收藏  举报