相关文章
以上文章链接出自于个人博客Potato Blog,欢迎访问!!!!本文原地址参考docker基本命令
docker辅助命令
查看docker的信息
docker version
查看更详细的信息
docker info
帮助命令
docker --help
Images 镜像命令
列出本地所有镜像
docker images
docker images -a #列出所有镜像(包含中间映像层)
docker images -q #只显示镜像id
列出指定名称的所有镜像
docker images 镜像名 #列出是该 镜像名 的所有镜像
docker images 镜像名 -a #列出是该 镜像名 的所有镜像(包含中间映像层)
docker images 镜像名 -q #列出是该 镜像名 的所有镜像的id
搜索镜像
docker search 镜像名
从仓库下载镜像
docker pull 镜像名[:TAG|@DIGEST]
删除镜像
docker image rm 镜像名|镜像id #正常删除(运行过的镜像只能使用强制删除)
docker image rm -f 镜像名|镜像id #强制删除
缩写:
docker rmi 镜像名|镜像id
docker rmi -f 镜像名|镜像id
批量删除镜像
docker image rm 镜像名1|镜像id1 镜像名2|镜像id2 ..... #正常删除 每个镜像之间由空格(运行过的镜像只能使用强制删除)
docker image rm -f 镜像名1|镜像id1 镜像名2|镜像id2 ..... #强制删除 每个镜像之间由空格
docker image rm -f $(docker ps -aq) #删除所有的镜像
docker image rm -f $(docker images python -q) #列出所有的python镜像的id,并将其批量删除
Contrainer 容器命令
列出所有的容器
docker ps -a #查看所有的容器
docker ps -aq #查看所有的容器id
列出所有正在运行的容器
docker ps
运行容器
docker run [OPTIONS] 镜像名 #镜像名新建并启动容器
--name #别名为容器起一个名字
-d #启动守护式容器(在后台启动容器)
-p #映射端口号(宿主机):原始端口号(容器) 指定端口号启动
--restart always #docker容器总是启动
例:docker run -it --name mypython -p 8000:8000 python
docker run -d --name mypython python
docker run -d --name mypython --restart=always python
删除容器
docker rm -f 容器id|容器名 #强制删除容器
docker rm -f $(docker ps -aq) #删除所有容器
开启|停止|关闭|重启|暂停容器
docker start 容器名字|容器id #开启容器
docker stop 容器名字|容器id #正常停止容器运行
docker start 容器名字|容器id #立即停止容器运行
docker kill 容器名字|容器id #杀死容器
docker restart 容器名字|容器id #重启容器
docker pause 容器名字|容器id #暂停容器
docker unpause 容器名字|容器id #恢复容器
查看查看容器内部细节
docker inspect 容器名字|容器id #查看容器内部细节
查看容器内进程
docker top 容器名字|容器id #查看容器内的进程
查看容器的运行日志
docker logs [OPTIONS] 容器名字|容器id #查看容器日志
-t #把宿主机的时间加到日志前
-f #实时的日志打印
--tail 数字 #显示最后多少条
例子:
docker logs -t -f mypython
docker logs -t -f --tail 10 mypython
设置容器自启动
docker update --restart=always 容器名字|容器id
no #默认策略,在容器退出时不重启容器
on-failure #在容器非正常退出时(退出状态非0),才会重启容器
on-failure:3 #在容器非正常退出时重启容器,最多重启3次
always #在容器退出时总是重启容器
unless-stopped #在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
Contrainer容器 进阶 命令
进入容器内部
docker exec [options] 容器名字|容器id 容器内命令 #进入容器执行命令
-i #以交互模式运行容器,通常与-t一起使用
-t #分配一个伪终端
/bin/bash #shell窗口
例子:docker exec -it 容器名字|容器id /bin/bash
退出容器
exit #退出容器
数据挂载
数据卷
用来实现容器中数据和宿主机中数据进行映射的(同步的)。
注:数据卷使用必须在容器首次启动时设置
1.使用绝对路径创建数据卷
这种方式会将容器路径的原始内容全部清空,始终以宿主机路径为主。
docker run -v 宿主机的路径:容器内的路径 镜像名
docker run -v 宿主机的路径:容器内的路径:ro(只读) 镜像名
如果想要使用数据卷可以在容器启动时写如下命令
docker run 【-itd --name 容器名 -p 8000:8000】-v 宿主机的路径:容器内的路径 镜像名 此【】中的可以选择
注意
- 宿主机路径必须是绝对路径
- 宿主机目录会覆盖容器内目录内容,
- 不指定ro(只读),宿主机改变会影响容器改变,且容器改变也会影响宿主机改变
- 如果在设置数据卷时指定ro(只读)。代表日后容器内路径是只读的,宿主机改变会影响容器改变,但容器改变不会影响宿主机改变
2.使用别名方式设置数据卷
docker run -v 别名(英文):容器内路径 镜像名|镜像id
注意
- 别名(英文)代表docker数据卷中别名,这个别名如果存在docker直接使用aa,不存在自动创建
- 使用docker别名创建的是docker帮助管理
- 使用别名方式保留容器路径原始内容,前提别名对应路径不能存在内容
- 使用别名创建的数据卷 可以使用
find / -name 别名
查看数据卷的位置 一般是在/var/lib/docker/volumes/
目录下,也可以使用docker inspect volume 数据卷名
PS:运行 docker inspect 容器id 命令 检查json串里有没有以下内容,如果有则证明卷挂载成功。
“Mounts”: [
{
“Type”: “bind”,
“Source”: “/hostDataValueme”,
“Destination”: “/containerDataValueme”,
“Mode”: “”,
“RW”: true,
“Propagation”: “rprivate”
}
]
3.创建一个数据卷别名
docker volume create 数据卷别名
4.查看所有数据卷
docker volume ls
5.查看数据卷详细信息
docker inspect volume 数据卷名称
6.删除数据卷
docker volume rm 数据卷名称
容器与宿主机互相传文件
容器 ---> 宿主机 docker cp 容器名字|容器id:容器内资源路径 宿主机目录路径
宿主机 ---> 容器 docker cp 宿主机目录路径 容器名字|容器id:容器内资源路径
docker网络
查看所有网络
docker network ls
创建网络
docker network create 网络名称
删除网络
docker network rm 网络名称
docker network prune #删除所有的网络
将多个容器加入到指定网络中
将多个容器加入到指定网络中有以下两种方法
方法一:启动容器时明确指定容器使用那个网络
docker run --network 网络名称 [options] 镜像名称|镜像id
例子:
docker run -d -p 8000:8000 --name mypython01 --network mynetwork01 python:3.9.12
docker run -d -p 8001:8000 --name mypython02 --network mynetwork01 python:3.9.12
此时容器mypython01 和 mypython02 就在一个网络中了
方法二:启动之后容器加入到某个网络中
docker network connect 网络名 容器名字|容器id
查看网络细节
docker network inspect 网络名称
容器打包成镜像
容器是可读可写的,基于这个特性我们就可以对容器进行自己深度定制,将修改后的容器打包成一个新的镜像,日后基于这个镜像运行成容器存在原始定制特性
docker commit -a="作者" -m="描述信息" 要打包的容器ID|容器名 打包后的镜像名称:Tag(版本)
镜像备份与恢复
打包镜像(镜像备份)
docker save 镜像名:tag -o 路径/名称.tar
载入镜像(镜像恢复)
docker load -i 路径/名称.tar
docker容器内系统
查看docker容器内的系统
cat /etc/issue
docker更换镜像源
Ubuntu 16.04+、Debian 8+、CentOS 7+
目前主流 Linux 发行版均已使用 systemd 进行服务管理,这里介绍如何在使用 systemd 的 Linux 发行版中配置镜像加速器。
请首先执行以下命令,查看是否在 docker.service 文件中配置过镜像地址。
systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行 $ systemctl cat docker 查看 ExecStart= 出现的位置,修改对应的文件内容去掉 --registry-mirror 参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json 中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
注意,一定要保证该文件符合 json 规范,否则 Docker 将不能启动。
之后重新启动服务。
systemctl daemon-reload
systemctl restart docker