docker容器操作
3.1 查询容器
相关命令如下所示:
命令:docker ps
格式:docker ps [options] # 可以添加一些参数选项,如果不添加表示查询本地所有正在运行的容器
示例: docker ps # 查看本地正在运行的容器
列介绍:
1、container id: 容器名称
2、image: 镜像名称
3、command: 容器启动时所执行的命令
4、created: 创建时间
5、status: 容器状态
6、ports: 端口映射情况
7、names: 容器的名称
常见参数选项:
-a,--all # 查询所有的镜像,包含未运行的容器
-q,--quiet # 查询容器的id
示例1:docker ps -a # 查询所有的容器包含未运行的容器
示例2:docker ps -q # 查询容器的id
3.2 创建容器
3.2.1 容器创建入门
容器分类:
1、交互型容器:具有和用户交互的输入和输出终端,容器创建后自动进入容器中,退出容器后,容器自动关闭。
2、守护型容器:没有和用户交互终端,需要使用docker exec进入容器,退出后,容器不会关闭。
命令介绍:
命令: docker run
格式: docker run [OPTIONS] 镜像的名称:镜像标签/镜像id [COMMAND] [ARG...]
类型参数选项:
-d,--detach # 以后台的模式执行命令
-t, --tty # 分配一个虚拟终端,通常和-i参数一起使用
-i,--interactive # 把交互界面一直保留,通常和-t参数一起使用
示例1:docker run -it redis:7.0.10 # 创建一个交互型容器
示例2:docker run -d redis:7.0.10 # 创建一个交互型容器,容器在启动的时候打开一个shell窗口,并且让这个窗口一直保留
交互型容器创建好了以后,直接进入到容器的内部了。
守护型容器创建好了以后,容器就是以后台的方式进行运行。
3.2.2 常见参数选项
--name
--name参数可以给创建的容器设置名称。如果没有加该参数,那么此时docker会为容器随机分配一个名字。
使用方式如下所示:
docker run -d --name redis01 redis:7.0.10
-p
注意:docker容器内部所运行的进程是无法被外部机器(windows)直接访问的, 如果外部机器向访问容器内的进程,那么在创建容器的时候就需要在
linux宿主机上开一个端口号,并且需要建立这个端口号和容器内进程端口号之间的映射关系,这样外部机器就可以通过宿主机的端口号访问到容器内
的进程了。
要实现端口映射关系的指定就需要使用-p参数。
使用方式如下所示:
docker run -d --name redis01 -p 6379:6379 redis:7.0.10
3.3 容器服务管理
容器管理的相关命令如下所示:
docker stop 容器名称/容器id # 关闭容器
docker start 容器名称/容器id # 启动容器
docker restart 容器名称/容器id # 重启容器
3.4 删除容器
删除容器的常见命令如下所示:
命令: docker rm
格式:docker rm 容器名称/容器的id # 删除容器
示例:docker rm angry_lamport # 删除angry_lamport容器
注意:上述的命令只能删除已经关闭的容器,如果想删除正在运行的容器,可以通过添加-f参数进行实现。
删除所有的容器
docker rm $(docker ps -aq)
3.5 进入容器
思考问题:检查容器是否可以和linux宿主机之间进行通讯,怎么实现?
实现思路:进入到容器内部通过ping命令检测
进入容器命令如下所示:
命令:docker exec
格式:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
常见的参数选项:
-t, --tty # 分配一个虚拟终端,通常和-i参数一起使用
-i,--interactive # 把交互界面一直保留,通常和-t参数一起使用
示例1:docker exec -it redis01 /bin/bash # 进入到容器中同时打开一个shell窗口
docker exec命令也可以在容器中执行一个命令:
docker exec redis01 echo atguigu
3.6 其他命令
如下所示:
docker logs -f 容器名称/容器的id # 查询容器内进程日志,-f参数表示实时监控日志信息
docker inspect 容器名称/容器的id # 查看容器的详情信息
docker cp # 完成容器和宿主机之间的文件copy
示例1: docker logs -f redis01 # 实时查看redis01这个容器中的日志信息
示例2: docker inspect redis01 # 查看容器的详情信息,主要就是:目录映射情况、端口映射情况、ip地址
示例3: docker cp a.txt redis01:/root # 把宿主机中a.txt文件拷贝到redis01的root目录中
示例4: docker cp redis01:/root/a.txt . # 把容器中的root目录下的a.txt文件拷贝到宿主机中当前目录中
3.7 备份与迁移
对某一个容器修改完毕以后,我们可以把最新的容器部署到其他的环境中。
涉及的docker命令:
docker commit 容器名称/容器的id 镜像名称 # 把docker容器保存成一个镜像
docker save -o 镜像tar文件名称 镜像名称/镜像id # 把镜像保存为tar文件
docker load -i 镜像名称 # 把tar文件恢复成为一个镜像
示例代码:
docker commit redis01 myredis # 将redis01容器保存为一个镜像
docker save -o myredis.tar myredis # 将myredis镜像保存为一个tar文件
docker rmi myredis # 删除之前的myredis镜像
docker load -i myredis.tar # 将myredis.tar恢复成一个镜像