Docker常用命令

205 阅读20分钟

Docker是一种流行的容器技术,它可以帮助开发人员轻松地构建、打包和部署应用程序。在本文中,我们将介绍一些常用的Docker命令,并提供详细的案例说明。

使用Docker启动容器时,可以使用数据卷(Volume)来持久化存储数据,以避免数据丢失或容器删除后数据也随之消失的问题。以下是在Docker中以数据卷的方式启动容器的步骤:

  1. 创建一个数据卷
docker volume create mydata
  1. 启动容器时挂载数据卷
docker run -d -v mydata:/data --name mycontainer myimage

这里的-v mydata:/data表示将mydata数据卷挂载到容器中的/data目录,容器中的/data目录将与宿主机上的mydata数据卷关联起来。

  1. 在容器中使用数据卷

容器中的任何数据写入/data目录都将存储在mydata数据卷中,即使容器被删除,数据也将保留在mydata数据卷中,等待下一次容器启动。

docker exec -it mycontainer /bin/bash
echo "Hello World" > /data/hello.txt
exit
  1. 查看数据卷
docker volume ls
docker volume inspect mydata

运行以上命令可以查看数据卷列表和数据卷详细信息。

注意:Docker数据卷是独立于容器的实体,因此可以在多个容器之间共享。如果需要在多个容器之间共享数据卷,只需在启动每个容器时将数据卷挂载到相同的目录即可。

这个命令的作用是在 Docker 中启动一个名为 portainer 的容器,并且将主机的 9000 端口映射到容器的 9000 端口,使得我们可以通过浏览器访问 Portainer 界面。

具体参数解释如下:

  • -d:后台运行容器。
  • -p 9000:9000:将主机的 9000 端口映射到容器的 9000 端口。
  • --name portainer:将容器命名为 portainer
  • --restart always:容器退出后自动重启。
  • -v /var/run/docker.sock:/var/run/docker.sock:将主机的 Docker socket 文件映射到容器的 Docker socket 文件,以便容器可以访问主机上的 Docker 引擎。
  • portainer/portainer:启动的镜像名和版本号。

运行该命令后,就可以通过浏览器访问 http://localhost:9000 来访问 Portainer 界面。

要启动所有容器,可以使用以下命令:

docker start $(docker ps -aq)

该命令将启动所有处于停止状态的容器。其中,docker ps -aq 将列出所有容器的ID,$(docker ps -aq) 将返回所有容器ID的列表,作为 docker start 命令的参数。

请注意,如果您有多个容器,启动所有容器可能需要一些时间,具体取决于您的系统资源。

  1. docker version

该命令用于查看Docker版本信息。

  1. docker info

该命令用于查看Docker系统信息。

  1. docker run

该命令用于运行容器,例如:

docker run -d --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的容器,使用nginx镜像。

  1. docker ps

该命令用于列出当前正在运行的容器,例如:

docker ps

该命令将列出所有正在运行的容器。

  1. docker stop

该命令用于停止容器,例如:

docker stop mycontainer

该命令将停止名为mycontainer的容器。

  1. docker start

该命令用于启动停止的容器,例如:

docker start mycontainer

该命令将启动名为mycontainer的容器。

  1. docker restart

该命令用于重启容器,例如:

docker restart mycontainer

该命令将重启名为mycontainer的容器。

  1. docker rm

该命令用于删除容器,例如:

docker rm mycontainer

该命令将删除名为mycontainer的容器。

  1. docker rmi

该命令用于删除镜像,例如:

docker rmi nginx

该命令将删除名为nginx的镜像。

  1. docker pull

该命令用于拉取镜像,例如:

docker pull nginx

该命令将拉取最新版本的nginx镜像。

  1. docker images

该命令用于列出本地的镜像,例如:

docker images

该命令将列出所有本地的镜像。

  1. docker exec

该命令用于在运行的容器中执行命令,例如:

docker exec mycontainer cat /etc/nginx/nginx.conf

该命令将在名为mycontainer的容器中执行cat /etc/nginx/nginx.conf命令。

  1. docker logs

该命令用于查看容器的日志,例如:

docker logs mycontainer

该命令将查看名为mycontainer的容器的日志。

  1. docker inspect

该命令用于查看容器或镜像的详细信息,例如:

docker inspect mycontainer

该命令将查看名为mycontainer的容器的详细信息。

  1. docker build

该命令用于构建镜像,例如:

docker build -t myimage .

该命令将在当前目录下构建一个名为myimage的镜像。

  1. docker commit

该命令用于提交容器为镜像,例如:

docker commit mycontainer myimage

该命令将将名为mycontainer的容器提交为一个名为myimage的镜像。

  1. docker tag

该命令用于给镜像打标签,例如:

docker tag myimage myregistry/myimage

该命令将为名为myimage的镜像打上myregistry/myimage的标签。

  1. docker push

该命令用于推送镜像到仓库,例如:

docker push myregistry/myimage

该命令将名为myimage的镜像推送到myregistry仓库。

  1. docker login

该命令用于登录到Docker Hub或私有仓库,例如:

docker login myregistry

该命令将登录到名为myregistry的私有仓库。

  1. docker logout

该命令用于注销Docker Hub或私有仓库,例如:

docker logout myregistry

该命令将注销名为myregistry的私有仓库。

  1. docker network create

该命令用于创建网络,例如:

docker network create mynetwork

该命令将创建一个名为mynetwork的网络。

  1. docker network connect

该命令用于将容器连接到网络,例如:

docker network connect mynetwork mycontainer

该命令将将名为mycontainer的容器连接到名为mynetwork的网络。

  1. docker network disconnect

该命令用于将容器从网络中断开,例如:

docker network disconnect mynetwork mycontainer

该命令将将名为mycontainer的容器从名为mynetwork的网络中断开。

  1. docker network ls

该命令用于列出所有网络,例如:

docker network ls

该命令将列出所有网络。

  1. docker network inspect

该命令用于查看网络的详细信息,例如:

docker network inspect mynetwork

该命令将查看名为mynetwork的网络的详细信息。

  1. docker volume create

该命令用于创建数据卷,例如:

docker volume create myvolume

该命令将创建一个名为myvolume的数据卷。

  1. docker volume ls

该命令用于列出所有数据卷,例如:

docker volume ls

该命令将列出所有数据卷。

  1. docker volume inspect

该命令用于查看数据卷的详细信息,例如:

docker volume inspect myvolume

该命令将查看名为myvolume的数据卷的详细信息。

  1. docker volume rm

该命令用于删除数据卷,例如:

docker volume rm myvolume

该命令将删除名为myvolume的数据卷。

  1. docker cp

该命令用于从容器中复制文件到本地,例如:

docker cp mycontainer:/etc/nginx/nginx.conf .

该命令将从名为mycontainer的容器中复制/etc/nginx/nginx.conf文件到当前目录下。

  1. docker run -p

该命令用于将容器的端口映射到主机的端口,例如:

docker run -d --name mycontainer -p 8080:80 nginx

该命令将在后台运行一个名为mycontainer的容器,使用nginx镜像,并将容器的80端口映射到主机的8080端口。

  1. docker run -v

该命令用于将容器的数据卷挂载到主机的目录,例如:

docker run -d --name mycontainer -v /data:/var/lib/mysql mysql

该命令将在后台运行一个名为mycontainer的容器,使用mysql镜像,并将容器的/var/lib/mysql目录挂载到主机的/data目录。

  1. docker run -e

该命令用于设置容器的环境变量,例如:

docker run -d --name mycontainer -e MYSQL_ROOT_PASSWORD=password mysql

该命令将在后台运行一个名为mycontainer的容器,使用mysql镜像,并设置容器的MYSQL_ROOT_PASSWORD环境变量为password。

  1. docker run --link

该命令用于将容器链接起来,例如:

docker run -d --name db mysql
docker run -d --name web --link db:db mywebapp

该命令将在后台运行一个名为db的mysql容器和一个名为web的webapp容器,并将db容器链接到web容器。

  1. docker run --name

该命令用于为容器设置一个名称,例如:

docker run -d --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器。

  1. docker run --restart

该命令用于设置容器的重启策略,例如:

docker run -d --name mycontainer --restart always nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并设置容器的重启策略为always。

  1. docker run -it

该命令用于交互式地运行容器,例如:

docker run -it --name mycontainer ubuntu /bin/bash

该命令将在交互模式下运行一个名为mycontainer的ubuntu容器,并打开bash终端。

  1. docker run -d

该命令用于在后台运行容器,例如:

docker run -d --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器。

  1. docker run --rm

该命令用于在容器停止后自动删除容器,例如:

docker run --rm --name mycontainer nginx

该命令将在容器停止后自动删除名为mycontainer的nginx容器。

  1. docker run --privileged

该命令用于给容器授予特权,例如:

docker run --privileged --name mycontainer ubuntu

该命令将在后台运行一个名为mycontainer的ubuntu容器,并授予容器特权。

  1. docker run --user

该命令用于设置容器的用户,例如:

docker run --user 1000:1000 --name mycontainer ubuntu

该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的用户设置为1000:1000。

  1. docker run --cpu-shares

该命令用于设置容器的CPU份额,例如:

docker run --cpu-shares 512 --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的CPU份额设置为512。

  1. docker run --memory

该命令用于设置容器的内存限制,例如:

docker run --memory 512m --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的内存限制设置为512MB。

  1. docker run --cpuset-cpus

该命令用于设置容器的CPU核心,例如:

docker run --cpuset-cpus 0 --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的CPU核心设置为0。

  1. docker run --entrypoint

该命令用于设置容器的入口点,例如:

docker run --entrypoint /bin/bash --name mycontainer ubuntu

该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的入口点设置为/bin/bash。

  1. docker run --link-local-ip

该命令用于设置容器的本地IP地址,例如:

docker run --link-local-ip 192.168.1.100 --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的本地IP地址设置为192.168.1.100。

  1. docker run --security-opt

该命令用于设置容器的安全选项,例如:

docker run --security-opt seccomp:unconfined --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的安全选项设置为seccomp:unconfined。

  1. docker run --tmpfs

该命令用于设置容器的临时文件系统,例如:

docker run --tmpfs /tmp --name mycontainer ubuntu

该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的临时文件系统设置为/tmp。

  1. docker run --add-host

该命令用于添加主机名到容器的/etc/hosts文件中,例如:

docker run --add-host myhost:192.168.1.100 --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将主机名myhost添加到容器的/etc/hosts文件中。

  1. docker run --dns

该命令用于设置容器的DNS服务器,例如:

docker run --dns 8.8.8.8 --name mycontainer nginx

该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的DNS服务器设置为8.8.8.8。

1.拉取镜像

要使用Docker,您需要首先拉取一个镜像。可以使用以下命令从Docker Hub拉取一个Ubuntu镜像:

docker pull ubuntu

2.运行容器

要运行一个容器,可以使用以下命令:

docker run -it ubuntu /bin/bash

在这个例子中,我们运行了一个名为“ubuntu”的容器,并使用“/bin/bash”命令在容器中打开一个交互式终端。

3.列出容器

要列出正在运行的容器,可以使用以下命令:

docker ps

这将列出所有正在运行的容器。如果要列出所有容器,包括已停止的容器,可以使用以下命令:

docker ps -a

4.停止容器

要停止正在运行的容器,可以使用以下命令:

docker stop <container_id>

在这个例子中,我们使用容器的ID来停止它:

docker stop 1234abcd5678

5.删除容器

要删除一个容器,可以使用以下命令:

docker rm <container_id>

在这个例子中,我们使用容器的ID来删除它:

docker rm 1234abcd5678

6.列出镜像

要列出所有可用的镜像,可以使用以下命令:

docker images

这将列出所有可用的镜像。

7.删除镜像

要删除一个镜像,可以使用以下命令:

docker rmi <image_id>

在这个例子中,我们使用镜像的ID来删除它:

docker rmi 1234abcd5678

8.构建镜像

要构建一个新的镜像,可以使用以下命令:

docker build -t <image_name> <dockerfile_path>

在这个例子中,我们正在构建一个名为“myimage”的镜像,并将Dockerfile文件放在当前目录中:

docker build -t myimage .

9.导出容器

要导出一个容器,可以使用以下命令:

docker export <container_id> > <export_file_name>.tar

在这个例子中,我们使用容器的ID来导出它:

docker export 1234abcd5678 > mycontainer.tar

10.导入容器

要导入一个容器,可以使用以下命令:

cat <export_file_name>.tar | docker import - <image_name>

在这个例子中,我们正在导入一个名为“mycontainer.tar”的容器,并将其命名为“myimage”:

cat mycontainer.tar | docker import - myimage

这些是一些常用的Docker命令和案例。使用这些命令,您可以轻松地构建、打包和部署应用程序。 11.查看日志

要查看容器的日志,可以使用以下命令:

docker logs <container_id>

在这个例子中,我们使用容器的ID来查看它的日志:

docker logs 1234abcd5678

12.进入容器

要进入正在运行的容器,可以使用以下命令:

docker exec -it <container_id> /bin/bash

在这个例子中,我们使用容器的ID来进入它:

docker exec -it 1234abcd5678 /bin/bash

13.复制文件

要从主机复制文件到容器中,可以使用以下命令:

docker cp <local_path> <container_id>:<container_path>

在这个例子中,我们将文件“test.txt”从主机复制到名为“mycontainer”的容器中:

docker cp test.txt mycontainer:/data/test.txt

14.从容器复制文件

要从容器中复制文件到主机,可以使用以下命令:

docker cp <container_id>:<container_path> <local_path>

在这个例子中,我们将文件“test.txt”从名为“mycontainer”的容器复制到主机的当前目录中:

docker cp mycontainer:/data/test.txt .

15.端口映射

要将容器的端口映射到主机上的端口,可以使用以下命令:

docker run -p <host_port>:<container_port> <image_name>

在这个例子中,我们将容器的端口“8080”映射到主机的端口“80”:

docker run -p 80:8080 myimage

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 16.容器命名

可以为容器指定一个名称,使用以下命令:

docker run --name <container_name> <image_name>

在这个例子中,我们将一个名为“mycontainer”的容器运行在一个名为“myimage”的镜像上:

docker run --name mycontainer myimage

17.容器重启

可以使用以下命令重启一个容器:

docker restart <container_id>

在这个例子中,我们使用容器的ID来重启它:

docker restart 1234abcd5678

18.容器状态

要查看一个容器的状态,可以使用以下命令:

docker inspect <container_id>

在这个例子中,我们使用容器的ID来查看它的状态:

docker inspect 1234abcd5678

19.容器日志清理

Docker会自动保存容器的日志,但是这些日志会占用磁盘空间。要清理容器的日志,可以使用以下命令:

docker container prune

这将删除所有停止的容器和它们的日志。

20.镜像清理

Docker会自动保存镜像,但是这些镜像会占用磁盘空间。要清理不再使用的镜像,可以使用以下命令:

docker image prune

这将删除所有没有被任何容器使用的镜像。

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 21.容器端口查看

要查看容器的端口,可以使用以下命令:

docker port <container_id>

在这个例子中,我们使用容器的ID来查看它的端口:

docker port 1234abcd5678

22.容器资源限制

可以使用以下命令限制容器的资源使用:

docker run --name <container_name> --cpus=<cpu_count> --memory=<memory_limit> <image_name>

在这个例子中,我们将名为“mycontainer”的容器运行在一个名为“myimage”的镜像上,限制CPU使用为1个,内存限制为512MB:

docker run --name mycontainer --cpus=1 --memory=512m myimage

23.容器环境变量

可以使用以下命令在容器中设置环境变量:

docker run --name <container_name> -e <variable_name>=<variable_value> <image_name>

在这个例子中,我们将名为“mycontainer”的容器运行在一个名为“myimage”的镜像上,并设置环境变量“DATABASE_URL”:

docker run --name mycontainer -e DATABASE_URL='mongodb://localhost:27017/mydb' myimage

24.容器交互模式

可以使用以下命令在容器中启用交互模式:

docker run -it <image_name>

在这个例子中,我们在一个名为“myimage”的镜像中启用交互模式:

docker run -it myimage

25.容器后台运行

可以使用以下命令在容器中启用后台运行模式:

docker run -d <image_name>

在这个例子中,我们在一个名为“myimage”的镜像中启用后台运行模式:

docker run -d myimage

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 26.容器端口暴露

可以使用以下命令在容器中暴露一个端口:

docker run -p <host_port>:<container_port> <image_name>

在这个例子中,我们将容器的端口“8080”映射到主机的端口“80”:

docker run -p 80:8080 myimage

27.容器数据卷

可以使用以下命令在容器中创建一个数据卷:

docker run -v <host_path>:<container_path> <image_name>

在这个例子中,我们将主机上的目录“/data”挂载到容器的目录“/app/data”:

docker run -v /data:/app/data myimage

28.容器网络连接

可以使用以下命令连接容器到一个网络:

docker network connect <network_name> <container_name>

在这个例子中,我们将名为“mycontainer”的容器连接到名为“mynetwork”的网络上:

docker network connect mynetwork mycontainer

29.容器网络创建

可以使用以下命令创建一个网络:

docker network create <network_name>

在这个例子中,我们创建了一个名为“mynetwork”的网络:

docker network create mynetwork

30.容器暂停

可以使用以下命令暂停一个容器:

docker pause <container_id>

在这个例子中,我们使用容器的ID来暂停它:

docker pause 1234abcd5678

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 31.容器恢复

可以使用以下命令恢复一个已暂停的容器:

docker unpause <container_id>

在这个例子中,我们使用容器的ID来恢复它:

docker unpause 1234abcd5678

32.容器重命名

可以使用以下命令重命名一个容器:

docker rename <old_name> <new_name>

在这个例子中,我们将名为“mycontainer”的容器重命名为“newcontainer”:

docker rename mycontainer newcontainer

33.容器日志大小限制

可以使用以下命令限制容器日志文件的大小:

docker run --log-driver=<driver_name> --log-opt max-size=<size> <image_name>

在这个例子中,我们将容器的日志文件大小限制为100MB:

docker run --log-driver=json-file --log-opt max-size=100m myimage

34.容器日志轮换

可以使用以下命令轮换容器日志文件:

docker run --log-driver=<driver_name> --log-opt max-size=<size> --log-opt max-file=<file_count> <image_name>

在这个例子中,我们将容器的日志文件大小限制为100MB,并保留3个日志文件:

docker run --log-driver=json-file --log-opt max-size=100m --log-opt max-file=3 myimage

35.容器端口解绑

可以使用以下命令解绑容器端口:

docker container port <container_id> <container_port>

在这个例子中,我们使用容器的ID和端口号来解绑端口:

docker container port 1234abcd5678 8080

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 36.容器IP地址

可以使用以下命令查看容器的IP地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_id>

在这个例子中,我们使用容器的ID来查看它的IP地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 1234abcd5678

37.容器端口状态

可以使用以下命令查看容器端口的状态:

docker container inspect <container_id> | grep -i 'ports'

在这个例子中,我们使用容器的ID来查看它的端口状态:

docker container inspect 1234abcd5678 | grep -i 'ports'

38.容器环境变量查看

可以使用以下命令查看容器的环境变量:

docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' <container_id>

在这个例子中,我们使用容器的ID来查看它的环境变量:

docker inspect -f '{{range .Config.Env}}{{println .}}{{end}}' 1234abcd5678

39.容器状态查看

可以使用以下命令查看容器的状态:

docker inspect -f '{{.State.Status}}' <container_id>

在这个例子中,我们使用容器的ID来查看它的状态:

docker inspect -f '{{.State.Status}}' 1234abcd5678

40.容器运行时间

可以使用以下命令查看容器的运行时间:

docker inspect -f '{{.State.StartedAt}}' <container_id>

在这个例子中,我们使用容器的ID来查看它的运行时间:

docker inspect -f '{{.State.StartedAt}}' 1234abcd5678

这些是更多常用的Docker命令和案例。使用这些命令,您可以更好地管理和操作Docker容器和镜像。 41.容器复制

可以使用以下命令复制一个容器:

docker container create --name <new_container_name> --volumes-from <source_container_name> <image_name>

在这个例子中,我们复制名为“sourcecontainer”的容器,并将其命名为“newcontainer”:

docker container create --name newcontainer --volumes-from sourcecontainer myimage

42.容器网络断开

可以使用以下命令断开容器与网络的连接:

docker network disconnect <network_name> <container_name>

在这个例子中,我们将名为“mycontainer”的容器从名为“mynetwork”的网络上断开:

docker network disconnect mynetwork mycontainer

43.容器进程查看

可以使用以下命令查看容器的进程:

docker top <container_id>

在这个例子中,我们使用容器的ID来查看它的进程:

docker top 1234abcd5678

44.容器内存查看

可以使用以下命令查看容器的内存使用情况:

docker stats <container_id>

在这个例子中,我们使用容器的ID来查看它的内存使用情况:

docker stats 1234abcd5678

45.容器CPU查看

要查看容器的 CPU 使用情况,您可以使用以下命令:

docker stats <container-id>

此命令将显示容器的 CPU 使用情况,包括使用的 CPU 百分比、使用的内存量、网络流量等等。您还可以使用 -a 参数查看所有正在运行的容器的统计信息:

docker stats -a

另外,您可以使用 docker top 命令来查看容器中正在运行的进程和它们的 CPU 使用情况:

docker top <container-id>

此命令将显示容器中正在运行的进程和它们的 CPU 使用情况。