一、启动类命令
tip:docker命令在root权限下执行。
1、启动docker:systemctl start docker
2、停止docker:systemctl stop docker
3、重启docker:systemctl restart docker
4、查看docker状态:systemctl status docker
5、查看docker概要信息:docker info
6、查看docker总体帮助文档:docker --help
7、查看具体命令的帮助文档:docker 具体命令 --help
8、开机启动:systemctl enable docker
二、镜像命令
1、列出本地主机上的镜像:docker images //options:-a:列出本地所有镜像(含历史映像层);-q:只
显示镜像ID;
tips:
(1)在列出镜像后若干表头的含义:
-----------------------------------------------------------------------------
| REPOSITORY | TAG | IMAGE ID | CREATED | VIRTUAL SIZE |
-----------------------------------------------------------------------------
| 镜像仓库源 | 镜像标签版本号 | 镜像ID | 镜像创建时间 | 镜像大小 |
-----------------------------------------------------------------------------
对于同一仓库源可以有一个镜像的多个版本,所以使用REPOSITORY:TAG来定义不同的镜像,如果不指定默认使用最新版本。
(2)虚悬镜像:REPOSITORY和TAG都是<none>的镜像。
2、搜索某个镜像是否在远程仓库:docker search [options] xxx //options:--limit N :只列出N个镜像
3、下载镜像:docker pull xxx [:TAG] //TAG不写默认最新
4、查看镜像/容器/数据卷所占的空间(在本地鲸鱼后背上):docker system df
5、删除镜像:
(1)删除单个:docker rmi [-f] 镜像的REPOSITORY或ID;
(2)删除多个:docker rmi [-f] 镜像名1:TAG 镜像名2:TAG
(3)删除全部:docker rmi [-f] $(docker images -qa)
tip:-f为在该镜像被某容器使用时强制删除。
三、容器命令
1、新建并启动容器:docker run [OPTIONS] 镜像名 [COMMAND] [ARG...]
常用的一些OPTIONS:
(1)--name="自定义的容器名":为容器自定义一个名字,如果没定义的话系统会随机取一个
(2)-d:后台运行程序并返回容器的ID(即启动守护式容器,后台运行)
(3)-i:以交互模式运行容器,一般和-t同时使用
(4)-t:为容器分配一个伪终端(不会生成新窗口,但是可以看见用户名的变化,接下来就相当于在容器中的
终端使用命令行了,退出终端用exit),一般和-i同时使用(-it一起用相当于启动了一个交互式容器,前
台有伪终端等待交互)。tip:有的容器只能在前台启动,如果后台启动的话会自杀,eg:ubuntu
(5)-P(大写):随机端口映射
(6)-p(小写):指定端口映射
2、列出所有当前正在运行的容器:docker ps [OPTIONS]
常用的一些OPTIONS:
(1)-a:列出所有当前正在运行的容器+历史上运行过的
(2)-l:显示最近创建的容器
(3)-n:显示最近创建的n个容器
(4)-q:静默模式,只显示容器的编号
3、退出容器:
(1)exit:run启动容器,exit退出,容器停止
(2)ctrl+p+q:run启动容器,ctrl+p+q退出,容器不停止
4、启动已经停止的运行的容器:docker start 容器ID或容器名
5、重启容器:docker restart 容器ID或容器名
6、停止容器:docker stop 容器ID或容器名
7、强制停止容器:docker kill 容器ID或容器名
8、删除已经停止的容器:docker rm 容器ID
tips:(1)如果要强制删除某个正在运行的容器需要在rm后边加-f
(2)一次删除多个容器:docker rm -f $(docker ps -a -q) 或 docker ps -a -q | xargs docker rm
9、查看容器日志:docker logs 容器ID
10、查看容器内运行的进程:docker top 容器ID
11、查看容器的内部细节:docker inspect 容器ID
12、进入正在运行的容器并用命令行交互:
(1)docker exec -it 容器ID /bin/bash (在容器中打开新的终端且可以启动新的进程。用exit退出不会导致容器停止)
(2)docker attach 容器ID (直接进入容器启动命令的那个终端,不会启动新的进程。用exit退出会导致容器停止)
13、从容器内拷贝文件到主机上:docker cp 容器ID:容器内路径 目的主机路径(可以用pwd看一下)
14、导入、导出容器:
(1)导出容器的内容作为一个tar归档文件:docker export 容器ID > 文件名.tar
(2)从tar包中的内容创建一个新的文件系统再导入为镜像:cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
四、制作镜像命令
Docker中的镜像分层,支持通过扩展现有的镜像创建新的镜像。新镜像是从base镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层(联合文件系统)。
1、提交容器副本使之成为一个新的镜像:docker commit -m="描述信息" -a="作者" 容器ID 要创建的镜像名:[TAG]
五、容器数据卷
Docker的容器数据卷相当于挂载在容器上的一个文件系统,它在宿主机文件和容器中文件之间进行实时的、双向的文件更新以便完成数据的持久化。它还具有继承和共享的性质。
1、容器数据卷和宿主机的互通互联:docker run -it --privileged=true -v /宿主机目录绝对路径:/容器内目录路径:[读写权限] [--name 自定义容器名] 镜像名
tips:1、宿主机目录和容器内目录系统会自动创建,不用提前创建好。
2、[读写权限]是指在容器中可对文件进行何种操作(只是用来限制在容器中对文件的操作,宿主机对文件的操作不受限制),有两种。rw:可读可写(默认);ro:只读
3、最好还是自定义一个容器名,后面继承也方便
2、查看数据卷是否挂载成功:docker inspect 容器ID :在这个json文件中查看Mounts属性
3、容器数据卷继承:docker run -it --privileged=true --volumes-from 父类容器名 [--name 自定义容器名] 镜像名
tip:数据卷的继承实际上是路径的继承,也就是子继承了父挂载时的路径,子和父是两个独立的容器。父容器挂了之后不会影响子容器的正常工作。(省的再写一遍路径了)
六、Docker网络
1、帮助:docker network --help
2、查看已经创建的网络对象:docker network ls [OPTIONS]
常用的一些OPTIONS:
(1) --filter :过滤条件(如docker network ls -f 'driver=bridge')
(2) --format :格式化打印结果
(3) --no-trunc :不略缩显示
(4) --quiet :只显示网络对象的ID
3、创建网络:docker network create [OPTIONS] NETWORK_NAME
常用的一些OPTIONS:
(1) --driver :指定网络的驱动(默认是bridge)
(2) --subnet :指定子网网段(如192.168.0.0/16)
(3) --gateway :子网的网关(如192.168.0.6)
(4) --ip-range :执行容器的ip范围
4、删除一个或多个网络:docker network rm NETWORK 或 [NETWORK...]
5、查看网络详细信息:docker network inspect [--format] NETWORK
6、网络连接:docker network connect NETWORK CONTAINER
7、网络断开:docker network disconnect [--force] NETWORK CONTAINER
8、查看网卡信息(需进入到容器内):ip link show 或 ip a
9、配置虚拟网卡:
(1)设置网卡IP地址:ifconfig eth1 x.x.x.x/x
(2)禁用/启用虚拟网卡:ifconfig eth1 down/up
未完待续。。。。。。
Tip:解决虚拟机每次重新打开都没法上网的问题
第一步:win+R
第二步:启动下面两个(如果没启动的话)