Myluzh Blog

Strive to become a dream architect.

Docker常用命令总结

发布时间: 2023-6-27 文章作者: myluzh 分类名称: Docker


0x00 前言
系统性地看完了《深入浅出Docker》这本干货,通俗易懂写得挺不错的。我现在对Docker的整个工作原理都有了一定的了解,并总结出了一些常用的命令,做下笔记备用。

0x01 容器

运行容器
docker run -d --restart=always --name nextcloud -p 80:80 -v /home/docker/nextcloud/:/var/www/html/ --link mysql nextcloud:latest
参数解释:-d 后台运行容器返回容器id
                --restart=always 自动启动相关容器
                --name 运行容器的名称
                -p 指定端口映射,格式为:主机(宿主)端口:容器端口
                -v -v 挂载目录,将容器中的目录映射到宿主机中。格式为:宿主机目录:容器中的目录
                --link 添加链接到另一个容器
停止容器
docker stop <container_id or container_name>
重启重启
docker restart <container_id or container_name>
删除容器
docker rm <container_id or container_name>
查看详细信息
docker inspect <container_id or container_name>

0x02 卷
#创建卷
docker volume create myvolume。
#查看所有卷
docker volume ls。
#查看单个卷的详细信息
docker volume inspect myvolume。
#删除卷
docker volume rm myvolume
#在启动容器时挂载卷,将myvolume卷挂载到容器中的/data目录
docker run -v myvolume:/data myimage
#转移卷,将myvolume卷中的数据从 /from 转移到 /to。
docker run --rm -v myvolume:/from -v myvolume:/to busybox sh -c "cd /from ; cp -a . /to"

0x03 镜像
拉取仓库中全部镜像
docker image pull -a nigelpoulton/tu-demo
显示本地所有镜像
docker image ls
查看悬虚(dangling)镜像
docker image ls  --filter dangling=true
清除悬虚(dangling)镜像
docker image prune
筛选标签为latest镜像
docker image ls --filter reference="*:latest"
删除镜像
docker rmi <image_name or image_id>
查看镜像详细信息

docker inspect <image_name or image_id>
通过Dockerfile构建镜像
docker build -t <repo>/<image>:<tag> <path/to/dockerfile/directory>

0x04 仓库
搜索镜像仓库
docker search alpine
搜索镜像仓库(只显示官方镜像)
docker search alpine --filter "is-official=true"
登录docker hub
docker login
登录阿里私有仓库
docker login registry.cn-hangzhou.aliyuncs.com
将镜像推送到私有仓库Registry(这里的hellohttp就是仓库名)
docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/myluzh/hellohttp:[镜像版本号]
docker push registry.cn-hangzhou.aliyuncs.com/myluzh/hellohttp:[镜像版本号]
下拉私有仓库镜像
docker pull registry.cn-hangzhou.aliyuncs.com/myluzh/hellohttp:v1

0x05 网络
#创建一个桥接网络,名为localnet
docker network create -d bridge localnet
#删除Docker主机上指定网络
docker network rm
#删除Docker主机上全部未使用的网络
docker network prune
#查看网络详细信息
docker network inspect localnet
#创建名为c2容器,并且加入localnet这个网络
docker container run -it --name c2 --network localnet alpine sh
#接入现有网络(macvlan)创建macvlan100网络以及eth0.100子接口
docker network create -d macvlan --subnet=10.0.0.0/24 --ip-range=10.0.00/25 --gateway=10.0.0.1 -o parent=eth0.100 macvlan100
#加入到macvlan100网络
docker container run -d --name mactainer1 --network macvlan100 alpine sleep 1d

0x06 覆盖网络
#swarm集群node1管理节点(172.31.1.5),创建overlay覆盖网络uber-net
docker network create -d overlay uber-net
#swarm集群node2工作节点(192.168.1.25),新建一个服务并连接到覆盖网络uber-net,docker服务会包含两个副本(容器),一个在node1节点上,一个在node2节点上。这样会将node2节点接入uber-net网络。
docker service create --name test --network uber-net --replicas 2 ubuntu sleep infinity
#查看被分配给覆盖网络的subnet
docker network inspect uber-net
#获取到容器396c8b142a85的IP地址
docker container inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 396c8b142a85

标签: 网络 docker 容器 镜像 仓库

发表评论