Docker使用
帮助命令
docker version # 查看当前docker的本本信息
docker info # 显示docker的系统信息 包括docker的镜像信息和容器信息
docker 命令 --help #查看命令的用法
列出本地主机上的镜像
# 列出本地主机上的镜像
[root@kuangshen ~]# docker images
# 可选项
-a: 列出本地所有镜像
-q: 只显示镜像id
--digests: 显示镜像的摘要信息
搜索镜像
# 搜索镜像
[root@kuangshen ~]# docker search mysql
# docker search 某个镜像的名称 对应DockerHub仓库中的镜像
# 可选项
--filter=stars=50 : 列出收藏数不小于指定值的镜像。
下载(拉取)镜像
# 下载镜像
[root@kuangshen ~]# docker pull mysql
Using default tag: latest # 不写tag,默认是latest
latest: Pulling from library/mysql
54fec2fa59d0: Already exists # 分层下载
bcc6c6145912: Already exists
951c3d959c9d: Already exists 05de4d0e206e:
删除镜像
#删除镜像
docker rmi [-f] 镜像(REPOSITORY | IMAGE ID)
docker run [OPTIONS] IMAGE [COMMAND][ARG...]
# 常用参数说明
--name="Name" # 给容器指定一个名字 -
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
-P # 随机端口映射(大写)
-p # 指定端口映射(小写),hostPort:containerPort (常用)
# 使用centos进行用交互模式启动容器,在容器内执行/bin/bash命令!
[root@kuangshen ~]# docker run -it centos /bin/bash
[root@dc8f24dd06d0 /]# ls # 注意地址,已经切换到容器内部了!
[root@dc8f24dd06d0 /]# exit # 使用 exit 退出容器
列出所有运行的容器
docker ps [OPTIONS] # 列出所有运行的容器
docker ps |grep mysql
# 常用参数说明
-a # 列出当前所有正在运行的容器 + 历史运行过的容器
-l # 显示最近创建的容器
-n=? # 显示最近n个创建的容器
-q # 静默模式,只显示容器编号。
启动容器
#启动一个容器
[root@localhost ~] docker run -it --name=centos01 centos:latest
[root@e133dc9cf70c /] ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
docker run -p 8089:8089 --name xiaotongdemo -d xiaotongdemo:v0.1
# 参数说明
-P:指定端口映射。格式为,主机端口:容器端口
-d:后台运行容器,返回容器id
启动、停止、重启容器
#启动一个容器
[root@localhost ~]# docker run -it --name=centos01 centos:latest
[root@e133dc9cf70c /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var
退出容器(ctrl+P+Q)
# 退出容器
exit # 容器停止退出
ctrl+P+Q # 容器不停止退出(推荐使用这种)
进入正在运行的容器
#进入正在运行的容器
-d # 后台方式运行容器,并返回容器的id!
-i # 以交互模式运行容器,通过和 -t 一起使用
-t # 给容器重新分配一个终端,通常和 -i 一起使用
# 命令1
docker exec -it 容器id bashShell
docker exec -it c8530dbbe3b4 /bin/bash
# 命令2
docker attach 容器id
docker exec -it c8530dbbe3b4 /bin/bash
# 区别
# exec
#进入容器后开启一个新的终端在新的终端里面操作 (常用)
# exit退出容器终端时,容器不会停止
# attach 会在原来的终端操作
# exit退出容器终端时,容器会停止
scp 当前路径的文件 -- 目标主机:/要复制到的路径
scp ./test.txt root@目标主机id:/目标主机路径
将当前目录下的startup.sh拷贝到目标主机157上的/home/目录下
scp startup.sh root@192.168.1.157:/home/
检查容器的元数据
docker inspect 容器id|容器名
docker inspect 53f33a5e7838
查看容器中的进程信息
# docker top 容器名|容器id
[root@localhost ~] docker top centos02
UID PID PPID C STIME TTY TIME CMD
root 15327 15310 0 09:12 pts/0 00:00:00 /bin/bash
[root@localhost ~]#
查看日志
docker logs [-tf] 容器id --tail number
-t # 带时间戳
-f # 实时日志
-- tail number #指定显示日志的数量(常用)
dokcer logs 53f33a5e7838 --tail 100
容器与宿主机互拷贝
docker cp 容器id:容器内路径 目的主机路径 # 复制容器中的文件到宿主机
# docker cp 主机文件路径 容器id:容器内目的文件路径
docker cp $pwd 容器id:容器内路径 # 复制宿主机的文件到容器内
Ubuntu的which、whereis、locate和find命令
-
which 只能寻找可执行文件 ,并在PATH变量里面寻找。
-
whereis 从linux文件数据库(/var/lib/slocate/slocate.db)寻找,所以有可能找到刚刚删除,或者没有发现新建的文件。全部匹配
-
locate 同上,不过文件名是部分匹配。
-
find 是直接在硬盘上搜寻,功能强大,但耗硬盘,一般不要用。
工作中结合K8S
ssh root@192.XX.XX.XX # CDC任务对应的K8S服务是127的这个服务
kubectl get po # 获取所有的节点信息
root@ubuntu:~ kubectl get po|grep flink
flink-jobmanager-7f49559f87-p9xr4 1/1 Running 0 108d
flink-jobmanager-batch-566b47b95d-svpdb # 自己组态的开发任务(处理批) 1/1 Running 0 10d
flink-jobmanager-stream-b78479b54-xhbfs # steam 整库迁移的 1/1 Running 0 10d
flink-taskmanager-786ddf65c-dhl4v 1/1 Running 0 108d
flink-taskmanager-batch-6db9857897-vhjzf 1/1 Running 0 10d
flink-taskmanager-stream-969787d4d-tjqdj 1/1 Running 1 10d
# 把jobmanager-stream端口暴露出去,然后在flink上查看问题
kubectl port-forward --address 0.0.0.0 pod/flink-jobmanager-stream-b78479b54-xhbfs 9000:8081
root@ubuntu:~ kubectl get po # 获取所有节点信息
NAME
dam-etl-64d4bc88f5-pjvbc
dam-frontend-64f4b485d8-6rf25
dam-resource-6899c977d7-clk6q # 数据源
etl-frontend-5f99ddb7b-c5fcw
etl-menus-6bfd576944-52shc
flink-jobmanager-7f49559f87-p9xr4
flink-jobmanager-batch-566b47b95d-svpdb # 自己组态的开发任务,处理批
flink-jobmanager-stream-b78479b54-xhbfs # 整库迁移
flink-taskmanager-786ddf65c-dhl4v
flink-taskmanager-batch-6db9857897-vhjzf
flink-taskmanager-stream-969787d4d-tjqdj