Note/环境/基本命令/Docker基本命令.md
2024-01-12 16:35:29 +08:00

12 KiB
Raw Blame History

Docker 的基本命令

1、简单运用

1获取 Docker 镜像

docker pull [IMAGE_NAME:TAG]

通过该命令,可以从 Docker Hub 或其他镜像源获取指定名称和标签的 Docker 镜像。例如,执行以下命令可以获取 Docker 官方的 Nginx 镜像

docker pull nginx:latest

2运行 Docker 容器

docker run [OPTIONS] IMAGE_NAME [COMMAND] [ARG...]

该命令用于在 Docker 中运行一个容器。其中IMAGE_NAME 是要使用的 Docker 镜像名称,而 OPTIONS 则为可选的参数,常用的参数包括

  • -d以守护进程方式运行容器。
  • -p将主机端口映射到容器端口。
  • --name为容器指定一个名称。
  • -v挂载主机目录到容器中。
  • --restart设置容器退出时的重启策略等。

COMMAND 和 ARG... 则为可选的命令和参数。例如,运行一个名为 myapp 的容器,使用的镜像为 myimage80表示容器内部要映射的端口号主机上要映射到容器内部端口的端口号。可以执行以下命令

docker run -d -p 80:90 --name myapp myimage

3查看当前所有正在运行的容器

docker ps

该命令用于列出当前所有正在运行的 Docker 容器,包括容器 ID、名称、所使用的镜像、状态等基本信息。

如果要查看所有容器,包括已经停止的容器,可以添加 -a 选项

docker ps -a

4查看本地镜像列表

docker images

该命令用于列出本地已经保存的 Docker 镜像列表,包括镜像名称、标签、镜像 ID、大小等基本信息。

如果要查看某个特定镜像的详细信息,可以执行以下命令

docker images [IMAGE_NAME]

其中IMAGE_NAME 为要查看信息的镜像名称。

5停止运行中的容器

docker stop [CONTAINER_ID/CONTAINER_NAME]

该命令用于停止指定 ID 或名称的 Docker 容器。例如,停止容器 ID 为 1234567890ab 的容器,可以执行以下命令

docker stop 1234567890ab

如果需要停止多个容器,可以依次添加多个容器的 ID 或名称,例如

docker stop container1 container2 ...

6强制终止运行中的容器

docker kill [CONTAINER_ID/CONTAINER_NAME]

该命令用于强制终止运行中的容器。与 docker stop 命令不同,docker kill 命令会直接杀死容器进程,不会给容器发送停止信号。例如,强制终止名为 myapp 的容器,可以执行以下命令

docker kill myapp

7删除已经停止的容器

docker rm [CONTAINER_ID/CONTAINER_NAME]

该命令用于删除指定 ID 或名称的停止状态 Docker 容器。例如,删除名称为 myapp 的容器,可以执行以下命令

docker rm myapp

如果需要批量删除已停止的容器,可以依次添加多个容器的 ID 或名称,例如

docker rm container1 container2 ...

8删除不再使用的镜像

docker rmi [IMAGE_ID/IMAGE_NAME]

该命令用于删除本地不再需要使用的 Docker 镜像。其中IMAGE_ID/IMAGE_NAME 为要删除的镜像的 ID 或名称。例如,删除镜像 ID 为 0123456789ab 的 Docker 镜像,可以执行以下命令

docker rmi 0123456789ab

如果需要删除某个名称的所有镜像,也可以通过名称来删除镜像,例如

docker rmi myimage

如果要删除本地所有不再使用的镜像,可以执行以下命令

docker rmi $(docker images -f "dangling=true" -q)

9进入正在运行的容器

docker exec -it [CONTAINER_ID/CONTAINER_NAME] /bin/bash

该命令用于进入正在运行的 Docker 容器中。其中,-it 选项表示以交互式终端方式进入容器,/bin/bash 则是指定进入容器后要执行的命令。

例如,进入容器 ID 为 0123456789ab 的容器,可以执行以下命令

docker exec -it 0123456789ab /bin/bash

10查看容器日志

docker logs [CONTAINER_ID/CONTAINER_NAME]

该命令用于查看指定 ID 或名称的 Docker 容器的日志输出。例如,查看名称为 myapp 的容器的日志输出,可以执行以下命令

docker logs myapp

2、详细命令

1、镜像管理

1查看镜像

docker image is
docker images

2检索镜像

docker search [image]

例子

docker search negix

3拉取镜像

docker pull [image]

4上传镜像

docker push [image]

例子

docker push yovinchen/docker-test:latest

5保存镜像

docker save [image] -o FILE/
docker save [image] >FILE

例子

docker save yovinchen/docker-test:latest >docker-test.tar

6导入镜像

docker load -i FILE

例子

docker load -i hello-docker.tar

7查看历史镜像

docker history [image]

8删除镜像

docker rmi [image]
docker image rm [imaeg]

9删除不再使用的镜像

docker image prune

10将文件系统导入为镜像

docker import [URL/FILE]

11从容器创建镜像

docker commit [container][image]

2、网络管理

1列出可⽤⽹络

docker network ls

2查看⽹络详细信息

docker network inspect [network]

3创建⼀个新的⽹络

docker network create [network]

4删除⼀个⽹络

docker network rm [network]

5将容器连接到⽹络

docker network connect [network] [container]

6将容器从⽹络断开

docker network disconnect [network] [container]

3、插件管理

1列出插件

docker plugin ls

2安装插件

docker plugin install [plugin]

3启⽤插件

docker plugin enable [plugin]

4禁⽤插件

docker plugin disable [plugin]

5卸载插件

docker plugin rm [plugin]

4、容器管理

1创建容器仅创建不运行

docker create [image]

2创建并运行容器

docker run [image]

3启动容器

docker start [container]

4停止容器

docker stop [container]

5重启容器

docker restart [container]

6列出正在运行的容器

docker ps
docker container ls

7列出所有容器

docker ps -a
docker container ls -a

8以交互模式进入容器

docker exec -it [container] bash
docker attach [container]

9导出容器快照到文件

docker export [container] -o FILE
docker export [container] > FILE

10导入容器快照

docker import FILE

11查看容器日志

docker logs [container]

12删除容器

docker rm [container]
docker container rm [container]

13查看容器端口映射

docker port [container]

14显示容器内进程

docker top [container]

15复制本地文件到容器内指定路径

docker cp [FILE] [container]:[PATH]

16显示容器内的变化

docker diff [container]

17显示容器资源使用情况

docker stats [container]

5、数据卷管理

1创建一个数据卷

docker volume create [volume]

2查看数据卷列表

docker volume ls

3查看数据卷详细信息

docker volume inspect [volume]

4删除数据卷

docker volume rm [volume]

5删除所有未使用的数据卷

docker volume prune

6、日常操作

1查看Docker系统信息

docker info

2查看Docker版本

docker version

3查看Docker帮助文档

docker --help

4查看Docker命令帮助

docker [command] --help

5登录DockerHub

docker login

6退出DockerHub

docker logout

7、容器运行

语法格式

docker run [options] image [command] [arg...]

1创建运行并命名容器

shell复制代码docker run --name [name] [image]

2创建一个容器并后台运行

shell复制代码docker run -d [image]

3创建一个容器并指定端口映射

shell复制代码docker run -p [hostPort]:[containerPort] [image]

4创建一个容器并随机分配端口映射

shell复制代码docker run -P [image]

5创建一个容器并指定环境变量

shell复制代码docker run -e [key=value] [image]

6创建一个容器并指定工作目录

shell复制代码docker run -w [PATH] [image]

7创建一个容器并指定容器名称

shell复制代码docker run --name [name] [image]

8创建一个容器并在容器中执行命令交互模式

shell复制代码docker run [image] [command]

9创建一个容器并指定容器名称、后台运行、端口映射、环境变量、工作目录

shell复制代码docker run -d -p [hostPort]:[containerPort] -e [key=value] -w [PATH] --name [name] [image]

10使用镜像nginx:latest来启动一个容器并在容器内执行交互式bash shell

shell复制代码docker run -it nginx:latest /bin/bash

11创建一个MySQL容器后台模式启动将主机的80端口映射到容器的80端口将主机的/data目录映射到容器的/data目录

shell复制代码docker run -it -p 3316:3306 -v /data:/data -d mysql:latest

8、常用Dockerfile指令

1指定基础镜像必须为Dockerfile的第⼀条指令

FROM [base_image]

2⽤于将⽂件复制到镜像中源可以使URL或者本地⽂件也可以⼀个压缩⽂件⾃动解压

ADD [--chown=<user>:<group>] [源路径] [⽬标路径]

3⽤于将⽂件拷⻉到镜像中源只能是本地⽂件

COPY [--chown=<user>:<group>] [源路径] [⽬标路径]

4⽤于指定⼯作⽬录可以使⽤多个WORKDIR指令如果使⽤相对路径则是相对于上⼀条WORKDIR指令所指定的⽬录

WORKDIR [PATH]

5⽤于设置环境变量

ENV <key> <value>
ENV <key1>=<value1> <key2>=<value2> ...

6⽤于指定默认的容器主进程每个Dockerfile中只能有⼀条CMD指令如果有多条则只有最后⼀条会⽣效

CMD <命令>
CMD ["可执⾏⽂件", "参数1", "参数2" ...]

7⽤于定义匿名卷持久化⽬录

VOLUME <路径>
VOLUME ["路径1", "路径2"...]

8声明镜像创建者

MAINTAINER user_name

Docker 开放2375端口

开启端口命令 --permanent永久生效没有此参数重启后失效

firewall-cmd --zone=public --add-port=2375/tcp --permanent

重新载入

firewall-cmd --reload

使用 vimvi 编辑docker服务配置文件

vim /lib/systemd/system/docker.service

找到如下配置行

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock

将其注释掉或者直接删除,替换成下面的配置行.然后保存退出

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

重新加载docker配置并重启服务

systemctl daemon-reload && systemctl restart docker

然后直接在命令行客户端输入如下命令IP地址改为自己的

curl http://IP地址:2375/version

或者在浏览器直接访问IP地址改为自己的

http://IP地址:2375/version