帮助启动类命令
启动docker: systemctl start docker
停止docker: systemctl stop docker
重启docker: systemctl restart docker
查看docker状态: systemctl status docker
开机启动: systemctl enable docker
查看docker概要信息: docker info
查看docker总体帮助文档: docker --help
查看docker命令帮助文档: docker 具体命令 --help
镜像命令
1.docker images # 列出本地主机上的镜像
-a :列出本地所有的镜像(含历史映像层)
-q :只显示镜像ID。
2.docker search 某个XXX镜像名字 # 查找镜像 docker search redis
docker search [OPTIONS] 镜像名字
docker search --limit 5 redis # --limit : 只列出N个镜像,默认5个
3.docker pull 某个XXX镜像名字 # 下载镜像 docker pull ubuntu
docker pull 镜像名字[:TAG]
docker pull 镜像名字
没有TAG就是最新版,等价于docker pull 镜像名字:latest
4.docker system df # 查看镜像/容器/数据卷所占的空间
5.docker rmi 某个XXX镜像名字ID # 删除镜像 docker rmi f3b60ab0cb2d
删除单个 docker rmi -f 镜像ID
删除多个 docker rmi -f 镜像名1:TAG 镜像名2:TAG
删除全部 docker rmi -f $(docker images -qa)
6.dangling image # 查看虚悬镜像,<none>
容器命令
创建与启动容器
创建容器命令
docker run [OPTIONS] 镜像名:标签名
创建容器 [OPTIONS] 常用的参数说明:
1)-i 表示交互式运行容器(就是创建容器后,马上会启动容器,并进入容器 ),通常与 -t 同时使用 。
2)-t 启动后会进入其容器命令行, 通常与 -i 同时使用; 加入 -it 两个参数后,容器创建就能登录进去。即分配一个伪终端。
3)--name 为创建的容器指定一个名称 。
4)-d 创建一个守护式容器在后台运行,并返回容器ID;
这样创建容器后不会自动登录容器,如果加 -i 参数,创建后就会运行容器。
5)-v 表示目录映射, 格式为: -p 宿主机目录:容器目录
注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
6)-p 表示端口映射,格式为: -p 宿主机端口:容器端口前台交互式启动
docker run -it redis:6.0.8
后台守护式启动
docker run -d redis:6.0.8
交互式容器
说明: 就是创建容器后,马上会启动容器,并进入容器
创建一个交互式容器并取名为 mycentos , ( /bin/bash 是linux中的命令解析器,会进入到容器里面命令行)
docker run -it --name=mycentos centos:7 /bin/bash
退出容器
1.退出容器
退出并停止当前容器, 注意在容器内部的命令行执行
exit
用 docker ps -a 命令,容器的状态变成 Exited 退出状态
2.退出不停止当前容器
按键盘: Ctrl + p + q ,按一次一行,则多按几次,一般是连两次即可。
启动与停止容器
1.启动已运行过的容器
docker start 容器名称|容器id
如: docker start mycentos
2.启动所有运行过的容器(注意:反单引号` `), docker ps -a -q 是查询所有运行过的容器ID
docker start `docker ps -a -q`
3.停止正在运行的容器(正常停止)
docker stop 容器名称|容器id
如: docker stop mycentos
4.强制停止正在运行的容器(一般不用此,除非卡了)
docker kill 容器名称|容器id
如: docker kill mycentos1
5.停止所有在运行的容器
docker stop `docker ps -a -q`
登录容器
登录已经启动的容器方式:
1.使用 docker exec 进入容器中打开命令行终端
docker exec -it 容器名称|容器id /bin/bash
如: docker exec -it mycentos2 /bin/bash
2.exit 针对通过 docker exec 进入的容器,只退出但不停止容器
[root@0c20b3037f46 /]# exit
查看容器日志
docker logs 容器ID
查看容器内运行的进程
docker top 容器ID
查看容器内部细节
docker inspect 容器ID
拷贝宿主机与容器中的文件
如果我们需要将宿主机文件拷贝到容器内可以使用 docker cp 命令,也可以将文件从容器内拷贝到宿主机
将宿主机文件拷贝到容器内
docker cp 要拷贝的宿主机文件或目录 容器名称:容器文件或目录
1. 在宿主机上创建一个testfile文件并写入内容
cd / #切换到根目录/下
echo 123456 > testfile #创建并写入内容 testfile 文件中
ls #查看是否已创建
cat testfile #查看文件内容
2. 将testfile文件拷贝进 mycentos2 容器中的 /opt 目录下(mycentos2要是UP启动状态)
docker cp testfile mycentos2:/opt
3. 登录 mycentos2 容器,查看/opt目录下是否有 newfile 文件
[root@192 /]# docker exec -it mycentos2 /bin/bash
[root@0c20b3037f46 /]# ls /opt/
testfile
[root@0c20b3037f46 /]# cat /opt/testfile
123456
从容器内文件拷贝到宿主机
docker cp 容器名称:要拷贝的容器文件或目录 宿主机文件或目录
1. 向 mycentos2 容器中的 testfile 文件进行追加内容abc (要登录进容器中)
cd / #切换到根目录/下
echo 123456 > newfile #创建并写入内容 newfile 文件中
ls #查看是否已创建
cat testfile #查看文件内容
2. 需要使用 exit 先退出 docker 容器命令行,回到宿主机
3. 从容器拷贝newfile文件到宿主机的 /opt 目录下(在宿主机中操作)
docker cp mycentos2:/opt/newfile /opt/newfilecopy
注意:文件拷贝 docker cp 命令 均在宿主机中操作
导入和导出容器
export 导出容器的内容留作为一个tar归档文件[对应import命令]
import 从tar包中的内容创建一个新的文件系统再导入为镜像[对应export]
案例
导出 docker export 容器ID > 文件名.tar
例子: docker export 61279fc3cc6a > abcd.tar.gz
导入 cat 文件名.tar | docker import - 镜像用户/镜像名:镜像版本号
例如: cat abcd.tar.gz | docker import - groot/ubuntu:2.1
数据目录挂载
我们可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。使用 -v 选项
docker run -id -v /宿主机绝对路径目录:/容器内目录 --name=容器名 镜像名
需求:
将宿主机的/opt目录与容器内的/opt目录进行映射,当在宿主机 /opt 目录下创建一个文件 test.txt ,这个 test.txt 会
自动同步到容器映射目录 /opt
实现:
1. 创建容器并挂载映射目录(使用 -v 宿主机目录:容器目录 )
创建容器时,将 宿主机目录/opt 挂载 容器目录/opt
docker run -id -v /opt:/opt --name=mycentos3 centos:7
2. 在宿主机/opt 目录下创建一个文件 test.txt ,这个 test.txt 会自动同步到容器映射目录 /opt 目录下
echo 1 > /opt/test.txt
docker exec -it mycentos3 /bin/bash
cat /opt/test.txt
1111
目录挂载只读(Read-only)权限
实现挂载的目录只有 只读(Read-only)权限,命令如下 :
docker run -id -v /宿主机绝对路径目录:/容器内目录:ro --name=容器名 镜像名
实现:
docker run -id -v /dataHost:/dataContainer:ro --name=mycentos4 centos:7
看容器内部细节
查看容器运行内部细节,比如可看容器的IP
docker inspect mycentos2
查看容器IP地址
直接显示IP地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycentos2
删除容器
删除指定的容器:
docker rm 容器名称 | 容器IDdocker根据镜像名称(模糊)查询镜像ID集合
docker images | grep goharbor | awk '{print $3}'
docker根据镜像名称(模糊)删除镜像
docker rmi -f `docker images | grep goharbor | awk '{print $3}'`
镜像批量导出
docker save -o nameImages.tar boot:1 mysql:5.7 redis:6.0.8
注1:在这个示例中,-o 参数指定了导出的 .tar 文件的路径和名称(images.tar),而 image1、image2 和 image3 是要导出的镜像的名称。
注2:image1、image2镜像一定是名称加标签(tag),只用ID在导入的时候会出现没有镜像名称与标签的情况
镜像批量导入
docker load -i nameImages.tar
注:在这个示例中,-i 参数指定了要导入的 .tar 文件的路径(images.tar)。执行这个命令后,images.tar 文件中的所有镜像都会被导入到本地的 Docker 引擎中。