Docker 常用命令总结

彭楷淳发布于 2020-07-20
预计阅读时间 4 分钟
总计 1.1k
浏览

Docker 镜像常用命令


搜索镜像

1
$ docker search javaCopy to clipboardErrorCopied

下载镜像

1
$ docker pull java:8Copy to clipboardErrorCopied

查看镜像版本

由于docker search命令只能查找出是否有该镜像,不能找到该镜像支持的版本,所以我们需要通过Docker Hub来搜索支持的版本。

进入Docker Hub的官网,地址:https://hub.docker.com

然后搜索需要的镜像,查看镜像支持的版本

进行镜像的下载操作:

1
$ docker pull nginx:1.17.0Copy to clipboardErrorCopied

列出镜像

1
$ docker imagesCopy to clipboardErrorCopied

删除镜像

指定名称删除镜像:

1
$ docker rmi java:8Copy to clipboardErrorCopied

指定名称删除镜像(强制):

1
$ docker rmi -f java:8Copy to clipboardErrorCopied

删除所有没有引用的镜像:

1
$ docker rmi `docker images | grep none | awk '{print $3}'`Copy to clipboardErrorCopied

强制删除所有镜像:

1
$ docker rmi -f $(docker images)Copy to clipboardErrorCopied

打包镜像

1
2
# -t 表示指定镜像仓库名称/镜像名称:镜像标签 .表示使用当前目录下的Dockerfile文件
docker build -t mall/mall-admin:1.0-SNAPSHOT .Copy to clipboardErrorCopied

Docker 容器常用命令


新建并启动容器

1
2
3
4
docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-v /mydata/nginx/html:/usr/share/nginx/html \
-d nginx:1.17.0Copy to clipboardErrorCopied
  • -p:将宿主机和容器端口进行映射,格式为:宿主机端口:容器端口;
  • –name:指定容器名称,之后可以通过容器名称来操作容器;
  • -e:设置容器的环境变量,这里设置的是时区;
  • -v:将宿主机上的文件挂载到宿主机上,格式为:宿主机文件目录:容器文件目录;
  • -d:表示容器以后台方式运行。

列出容器

列出运行中的容器:

1
$ docker psCopy to clipboardErrorCopied

列出所有容器:

1
$ docker ps -aCopy to clipboardErrorCopied

停止容器

注意:$ContainerName表示容器名称,$ContainerId表示容器ID,可以使用容器名称的命令,基本也支持使用容器ID,比如下面的停止容器命令。

1
$ docker stop $ContainerName(or $ContainerId)Copy to clipboardErrorCopied

例如:

1
2
3
$ docker stop nginx
#或者
$ docker stop c5f5d5125587Copy to clipboardErrorCopied

强制停止容器

1
$ docker kill $ContainerNameCopy to clipboardErrorCopied

启动容器

1
$ docker start $ContainerNameCopy to clipboardErrorCopied

进入容器

先查询出容器的pid

1
$ docker inspect --format "{{.State.Pid}}" $ContainerNameCopy to clipboardErrorCopied

根据容器的pid进入容器:

1
$ nsenter --target "$pid" --mount --uts --ipc --net --pidCopy to clipboardErrorCopied

删除容器

删除指定容器:

1
$ docker rm $ContainerNameCopy to clipboardErrorCopied

按名称通配符删除容器,比如删除以名称mall-开头的容器:

1
$ docker rm `docker ps -a | grep mall-* | awk '{print $1}'`Copy to clipboardErrorCopied

强制删除所有容器;

1
$ docker rm -f $(docker ps -a -q)Copy to clipboardErrorCopied

查看容器的日志

查看容器产生的全部日志:

1
$ docker logs $ContainerNameCopy to clipboardErrorCopied

动态查看容器产生的日志:

1
$ docker logs -f $ContainerNameCopy to clipboardErrorCopied

查看容器的 IP 地址

1
$ docker inspect --format '{{ .NetworkSettings.IPAddress }}' $ContainerNameCopy to clipboardErrorCopied

修改容器的启动方式

1
2
# 将容器启动方式改为always
$ docker container update --restart=always $ContainerNameCopy to clipboardErrorCopied

同步宿主机到容器

1
$ docker cp /etc/localtime $ContainerName:/etc/Copy to clipboardErrorCopied

指定容器时区

1
2
3
$ docker run -p 80:80 --name nginx \
-e TZ="Asia/Shanghai" \
-d nginx:1.17.0Copy to clipboardErrorCopied

查看容器占用状况

查看指定容器资源占用状况,比如cpu、内存、网络、io状态:

1
$ docker stats $ContainerNameCopy to clipboardErrorCopied

查看所有容器资源占用情况:

1
$ docker stats -aCopy to clipboardErrorCopied

查看容器使用情况

1
$ docker system dfCopy to clipboardErrorCopied

执行容器内部命令

1
$ docker exec -it $ContainerName /bin/bashCopy to clipboardErrorCopied

指定账户进入容器内部

1
2
# 使用root账号进入容器内部
$ docker exec -it --user root $ContainerName /bin/bashCopy to clipboardErrorCopied

查看所有网络

1
2
3
4
5
6
$ docker network lsCopy to clipboardErrorCopied
[root@local-linux ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
59b309a5c12f bridge bridge local
ef34fe69992b host host local
a65be030c632 none Copy to clipboardErrorCopied

创建外部网络

1
$ docker network create -d bridge my-bridge-networkCopy to clipboardErrorCopied

指定容器网络

1
2
3
$ docker run -p 80:80 --name nginx \
--network my-bridge-network \
-d nginx:1.17.0Copy to clipboardErrorCopied

修改镜像的存放位置


查看Docker镜像的存放位置:

1
$ docker info | grep "Docker Root Dir"Copy to clipboardErrorCopied

关闭Docker服务:

1
$ systemctl stop dockerCopy to clipboardErrorCopied

先将原镜像目录移动到目标目录:

1
$ mv /var/lib/docker /mydata/dockerCopy to clipboardErrorCopied

建立软连接

1
$ ln -s /mydata/docker /var/lib/dockerCopy to clipboardErrorCopied

再次查看可以发现镜像存放位置已经更改。

更多干货请移步:https://antoniopeng.com


如果你喜欢这个博客或发现它对你有用,欢迎你点击右下角 “OPEN CHAT” 进行评论。也欢迎你分享这个博客,让更多的人参与进来。如果在博客中使用的图片侵犯了您的版权,请联系博主删除它们。谢谢你!