Docker 常用命令总结

Posted by 彭楷淳 on 2020-07-20
Estimated Reading Time 4 Minutes
Words 1.1k In Total
Viewed Times

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


If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !