印象笔记链接: https://app.yinxiang.com/fx/816a7b17-37a1-49c6-a7c5-210282b18d4a

一:镜像操作

注意: -f 参数为强制删除

1.1 查看镜像

a.查看所有镜像:

docker images

b.批量查找镜像,下面的xxxx为你要查询的镜像名称,类似like查询

docker images | grep ‘xxxx’ | awk ‘{print $3}’ | xargs

1.2 删除镜像

a.单个删除

docker rmi 镜像id/镜像名称

b.批量删除 同查找

docker images | grep ‘xxxx’ | awk ‘{print $3}’ | xargs docker rmi -f

c.删除所有镜像

docker rmi $(docker images -q)

d.删除名称为none的镜像

docker rmi -f $(docker images | grep “” | awk “{print $3}”)

1.3 镜像重命名

docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)

栗子:

docker tag 镜像ID 你要更改的镜像名称:版本号
docker tag 6ec125fd1895 xxxx:5000/jdk1.8.0_251:1

更改完之后 docker images就会有多一个镜像ID一样,但是名称不一样的镜像

二:容器操作

2.1 查看容器

a. 查看所有容器

docker ps -a

b. 查看正在运行的容器

docker ps

c. 批量某个字符开头的docker 容器

docker ps -a | grep “redi” | awk ‘{print $1 }’|xargs

2.2 停止容器

a. 停止单个容器

docker stop 容器ID / 容器名称

b. 批量停止容器

docker ps -a | grep “redi” | awk ‘{print $1 }’|xargs docker stop -f

2.3 删除容器

a. 单个删除容器

docker rm 容器ID / 容器名称

b. 批量删除容器

docker ps -a | grep “redi” | awk ‘{print $1 }’|xargs docker rm -f

c. 删除所有的容器

docker rm $(docker ps -a -q)

2.4 查看容器日志

实时查看:

docker logs -f 容器ID 或者 容器名称

栗子:

docker logs -f seata-server

2.5 运行容器

docker run -di --name xx-cloud-eureka --net=host -p 9000:9000 --restart=always --privileged=true -v /aa/bb:/cc/dd xx-cloud-eureka:latest

参数说明:

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

-i: 以交互模式运行容器,通常与 -t 同时使用

–name 设置的容器名称

–net 指定网络配置模式
bridge: 默认值,连接到网桥
host: 宿主机和容器网络保持一致,使用本地主机网络环境
none: 把当前容器的网络放到隔离的网络栈中,用户可自行配置
container : 把当前容器放到一个配置好网络的容器中

转: https://blog.51cto.com/13362895/2130375

–restart 主机重启配置
always 主机重启或者docker重启后,启动启动当前容器

-p 指定端口

-v 挂在目录,前是宿主机路径,后是容器目录,注意,挂在的时候,如果需要把文件挂在到容器中,一定要再容器启动之前把文件存放到宿主机的指定目录中,否则获取不到文件

2.6 进入容器命令 ,centors7

docker exec -it 容器id或容器名称 /bin/bash

三: 搭建docker私有仓库

3.1 拉取docker-registry, 端口为:5000

docker pull registry

或者直接运行registry,没有找到镜像会自动帮下载

docker run --name docker-registry -d -p 5000:5000 -v /usr/local/registry:/var/lib/registry registry

3.2 运行registry后访问

http://ip:5000/v2/_catalog 或者curl ip:5000/v2/_catalog 即可

因为docker-registry 私有仓库有固定格式,所以需要更改为固定格式的镜像,才能push到私有仓库里面

其格式: ip:5000/镜像名称:版本

参照 1.3 中重命名镜像

docker push aaa.bbb/ccc.ddd:5000/xxxx:latest

push到私有仓库之后再刷新仓库,会有新的镜像 http://ip:5000/v2/_catalog

注意,如果不能push,提示超时之类的,需要再 /etc/ 目录下的 daemon.json中配置私有仓库地址

{
“registry-mirrors”: [“https://xxxx.mirror.aliyuncs.com”], # 这里我设置为阿里云的镜像加速地址
“insecure-registries”: [“xxx.xx.xx.xx:5000”] # 配置的私有仓库地址,这里建议设置为内网地址,否则push镜像的时候会很慢
}

建议: 每次拉取镜像之前,先清空docker-registry中的blob 和其配置,这里为registry运行时挂在的目录

docker exec registry rm -rf /var/lib/registry/docker/registry/v2/repositories/xxx(具体仓库位置)
docker exec registry bin/registry garbage-collect /etc/docker/registry/config.yml