«

Docker常用命令总结

myluzh 发布于 阅读:423 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 容器 镜像 仓库


正文到此结束
版权声明:若无特殊注明,本文皆为 原创,转载请保留文章出处。
文章内容:https://itho.cn/docker/307.html
文章标题:《Docker常用命令总结