Docker是一种流行的容器技术,它可以帮助开发人员轻松地构建、打包和部署应用程序。在本文中,我们将介绍一些常用的Docker命令,并提供详细的案例说明。
使用Docker启动容器时,可以使用数据卷(Volume)来持久化存储数据,以避免数据丢失或容器删除后数据也随之消失的问题。以下是在Docker中以数据卷的方式启动容器的步骤:
- 创建一个数据卷
docker volume create mydata
- 启动容器时挂载数据卷
docker run -d -v mydata:/data --name mycontainer myimage
这里的-v mydata:/data表示将mydata数据卷挂载到容器中的/data目录,容器中的/data目录将与宿主机上的mydata数据卷关联起来。
- 在容器中使用数据卷
容器中的任何数据写入/data目录都将存储在mydata数据卷中,即使容器被删除,数据也将保留在mydata数据卷中,等待下一次容器启动。
docker exec -it mycontainer /bin/bash
echo "Hello World" > /data/hello.txt
exit
- 查看数据卷
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 命令的参数。
请注意,如果您有多个容器,启动所有容器可能需要一些时间,具体取决于您的系统资源。
- docker version
该命令用于查看Docker版本信息。
- docker info
该命令用于查看Docker系统信息。
- docker run
该命令用于运行容器,例如:
docker run -d --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的容器,使用nginx镜像。
- docker ps
该命令用于列出当前正在运行的容器,例如:
docker ps
该命令将列出所有正在运行的容器。
- docker stop
该命令用于停止容器,例如:
docker stop mycontainer
该命令将停止名为mycontainer的容器。
- docker start
该命令用于启动停止的容器,例如:
docker start mycontainer
该命令将启动名为mycontainer的容器。
- docker restart
该命令用于重启容器,例如:
docker restart mycontainer
该命令将重启名为mycontainer的容器。
- docker rm
该命令用于删除容器,例如:
docker rm mycontainer
该命令将删除名为mycontainer的容器。
- docker rmi
该命令用于删除镜像,例如:
docker rmi nginx
该命令将删除名为nginx的镜像。
- docker pull
该命令用于拉取镜像,例如:
docker pull nginx
该命令将拉取最新版本的nginx镜像。
- docker images
该命令用于列出本地的镜像,例如:
docker images
该命令将列出所有本地的镜像。
- docker exec
该命令用于在运行的容器中执行命令,例如:
docker exec mycontainer cat /etc/nginx/nginx.conf
该命令将在名为mycontainer的容器中执行cat /etc/nginx/nginx.conf命令。
- docker logs
该命令用于查看容器的日志,例如:
docker logs mycontainer
该命令将查看名为mycontainer的容器的日志。
- docker inspect
该命令用于查看容器或镜像的详细信息,例如:
docker inspect mycontainer
该命令将查看名为mycontainer的容器的详细信息。
- docker build
该命令用于构建镜像,例如:
docker build -t myimage .
该命令将在当前目录下构建一个名为myimage的镜像。
- docker commit
该命令用于提交容器为镜像,例如:
docker commit mycontainer myimage
该命令将将名为mycontainer的容器提交为一个名为myimage的镜像。
- docker tag
该命令用于给镜像打标签,例如:
docker tag myimage myregistry/myimage
该命令将为名为myimage的镜像打上myregistry/myimage的标签。
- docker push
该命令用于推送镜像到仓库,例如:
docker push myregistry/myimage
该命令将名为myimage的镜像推送到myregistry仓库。
- docker login
该命令用于登录到Docker Hub或私有仓库,例如:
docker login myregistry
该命令将登录到名为myregistry的私有仓库。
- docker logout
该命令用于注销Docker Hub或私有仓库,例如:
docker logout myregistry
该命令将注销名为myregistry的私有仓库。
- docker network create
该命令用于创建网络,例如:
docker network create mynetwork
该命令将创建一个名为mynetwork的网络。
- docker network connect
该命令用于将容器连接到网络,例如:
docker network connect mynetwork mycontainer
该命令将将名为mycontainer的容器连接到名为mynetwork的网络。
- docker network disconnect
该命令用于将容器从网络中断开,例如:
docker network disconnect mynetwork mycontainer
该命令将将名为mycontainer的容器从名为mynetwork的网络中断开。
- docker network ls
该命令用于列出所有网络,例如:
docker network ls
该命令将列出所有网络。
- docker network inspect
该命令用于查看网络的详细信息,例如:
docker network inspect mynetwork
该命令将查看名为mynetwork的网络的详细信息。
- docker volume create
该命令用于创建数据卷,例如:
docker volume create myvolume
该命令将创建一个名为myvolume的数据卷。
- docker volume ls
该命令用于列出所有数据卷,例如:
docker volume ls
该命令将列出所有数据卷。
- docker volume inspect
该命令用于查看数据卷的详细信息,例如:
docker volume inspect myvolume
该命令将查看名为myvolume的数据卷的详细信息。
- docker volume rm
该命令用于删除数据卷,例如:
docker volume rm myvolume
该命令将删除名为myvolume的数据卷。
- docker cp
该命令用于从容器中复制文件到本地,例如:
docker cp mycontainer:/etc/nginx/nginx.conf .
该命令将从名为mycontainer的容器中复制/etc/nginx/nginx.conf文件到当前目录下。
- docker run -p
该命令用于将容器的端口映射到主机的端口,例如:
docker run -d --name mycontainer -p 8080:80 nginx
该命令将在后台运行一个名为mycontainer的容器,使用nginx镜像,并将容器的80端口映射到主机的8080端口。
- docker run -v
该命令用于将容器的数据卷挂载到主机的目录,例如:
docker run -d --name mycontainer -v /data:/var/lib/mysql mysql
该命令将在后台运行一个名为mycontainer的容器,使用mysql镜像,并将容器的/var/lib/mysql目录挂载到主机的/data目录。
- docker run -e
该命令用于设置容器的环境变量,例如:
docker run -d --name mycontainer -e MYSQL_ROOT_PASSWORD=password mysql
该命令将在后台运行一个名为mycontainer的容器,使用mysql镜像,并设置容器的MYSQL_ROOT_PASSWORD环境变量为password。
- docker run --link
该命令用于将容器链接起来,例如:
docker run -d --name db mysql
docker run -d --name web --link db:db mywebapp
该命令将在后台运行一个名为db的mysql容器和一个名为web的webapp容器,并将db容器链接到web容器。
- docker run --name
该命令用于为容器设置一个名称,例如:
docker run -d --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器。
- docker run --restart
该命令用于设置容器的重启策略,例如:
docker run -d --name mycontainer --restart always nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并设置容器的重启策略为always。
- docker run -it
该命令用于交互式地运行容器,例如:
docker run -it --name mycontainer ubuntu /bin/bash
该命令将在交互模式下运行一个名为mycontainer的ubuntu容器,并打开bash终端。
- docker run -d
该命令用于在后台运行容器,例如:
docker run -d --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器。
- docker run --rm
该命令用于在容器停止后自动删除容器,例如:
docker run --rm --name mycontainer nginx
该命令将在容器停止后自动删除名为mycontainer的nginx容器。
- docker run --privileged
该命令用于给容器授予特权,例如:
docker run --privileged --name mycontainer ubuntu
该命令将在后台运行一个名为mycontainer的ubuntu容器,并授予容器特权。
- docker run --user
该命令用于设置容器的用户,例如:
docker run --user 1000:1000 --name mycontainer ubuntu
该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的用户设置为1000:1000。
- docker run --cpu-shares
该命令用于设置容器的CPU份额,例如:
docker run --cpu-shares 512 --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的CPU份额设置为512。
- docker run --memory
该命令用于设置容器的内存限制,例如:
docker run --memory 512m --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的内存限制设置为512MB。
- docker run --cpuset-cpus
该命令用于设置容器的CPU核心,例如:
docker run --cpuset-cpus 0 --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的CPU核心设置为0。
- docker run --entrypoint
该命令用于设置容器的入口点,例如:
docker run --entrypoint /bin/bash --name mycontainer ubuntu
该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的入口点设置为/bin/bash。
- 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。
- docker run --security-opt
该命令用于设置容器的安全选项,例如:
docker run --security-opt seccomp:unconfined --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并将容器的安全选项设置为seccomp:unconfined。
- docker run --tmpfs
该命令用于设置容器的临时文件系统,例如:
docker run --tmpfs /tmp --name mycontainer ubuntu
该命令将在后台运行一个名为mycontainer的ubuntu容器,并将容器的临时文件系统设置为/tmp。
- docker run --add-host
该命令用于添加主机名到容器的/etc/hosts文件中,例如:
docker run --add-host myhost:192.168.1.100 --name mycontainer nginx
该命令将在后台运行一个名为mycontainer的nginx容器,并将主机名myhost添加到容器的/etc/hosts文件中。
- 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 使用情况。