12 KiB
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 的容器,使用的镜像为 myimage,80表示容器内部要映射的端口号,主机上要映射到容器内部端口的端口号。,可以执行以下命令
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
使用 vim(vi) 编辑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