ITPub博客

首页 > 数据库 > 数据库开发技术 > docker安装与常用命令

docker安装与常用命令

原创 数据库开发技术 作者:yxkong 时间:2021-07-09 09:09:12 0 删除 编辑

一、安装与启动

硬件环境:4C8G物理机

系统环境:

[root@dev216 ~]# uname -r3.10.0-957.el7.x86_64[root@dev215 ~]# cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)

直接安装

[root@dev216 ~]# yum install docker

可能出现的问题:

问题一,yum中的python与系统中的不匹配

-bash: /usr/bin/yum: /usr/bin/python2.7.5: bad interpreter: No such file or directory

这是因为有人动了环境里的python,查看python

[root@dev216 ~]# whereis pythonpython: /usr/bin/python /usr/bin/python2.7 /usr/bin/python.bak /usr/lib/python2.7 /usr/lib64/python2.7 /etc/python /usr/include/python2.7 /usr/share/man/man1/python.1.gz

修改yum中的python引用(或者直接备份python,将python2.7改为python)

[root@dev216 ~]# vim /usr/bin/yum将 #!/usr/bin/python改为#!/usr/bin/python2.7

问题二,还是python引用的问题

[root@dev216 ~]# yum install dockerLoaded plugins: fastestmirror, langpacksDetermining fastest mirrors * base: mirrors.huaweicloud.com * extras: mirrors.bfsu.edu.cn * updates: mirrors.bfsu.edu.cnbase                                                                                               | 3.6 kB  00:00:00     extras                                                                                             | 2.9 kB  00:00:00     updates                                                                                            | 2.9 kB  00:00:00       File "/usr/libexec/urlgrabber-ext-down", line 28    except OSError, e:                  ^SyntaxError: invalid syntax  File "/usr/libexec/urlgrabber-ext-down", line 28    except OSError, e:                  ^SyntaxError: invalid syntax

Exiting on user cancel

修改/usr/libexec/urlgrabber-ext-down

vim /usr/libexec/urlgrabber-ext-down将 #!/usr/bin/python改为#!/usr/bin/python2.7


启动docker

systemctl start docker.service


二、docker操作

启动与状态(centos7)

#启动、停止、重启systemctl start/stop/restart docker# 查看docker的运行状态,active(运行)inactive(死亡)[root@dev216 ~]# systemctl status docker● docker.service - Docker Application Container Engine   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)   Active: active (running) since Thu 2021-07-08 16:27:31 CST; 1min 29s ago     Docs: http://docs.docker.com Main PID: 27805 (dockerd-current)    Tasks: 25   CGroup: /system.slice/docker.service           ├─27805 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default...           └─27813 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --...
Jul 08 16:27:30 dev216 dockerd-current[27805]: time="2021-07-08T16:27:30.088468818+08:00" level=info msg="libconta...7813"Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.157415965+08:00" level=info msg="Graph mi...onds"Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.158454396+08:00" level=info msg="Loading ...art."Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.166785370+08:00" level=info msg="Firewall...alse"Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.246307425+08:00" level=info msg="Default ...ress"Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.275860687+08:00" level=info msg="Loading ...one."Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.293321663+08:00" level=info msg="Daemon h...tion"Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.293354473+08:00" level=info msg="Docker d....13.1Jul 08 16:27:31 dev216 dockerd-current[27805]: time="2021-07-08T16:27:31.298513884+08:00" level=info msg="API list...sock"Jul 08 16:27:31 dev216 systemd[1]: Started Docker Application Container Engine.Hint: Some lines were ellipsized, use -l to show in full.


docker信息

# 查看docker容器help,可以快速了解有哪些命令docker --help# 查看docker容器版本,包含客户端、服务端的版本信息docker version# 查看docker容器信息,包含version和操作系统,硬件配置等docker info# 设置debug 模式docker debug # 设置日志级别,默认info级别,包含"debug", "info", "warn", "error", "fatal"docker --log-level info

三、镜像操作

镜像远程操作

# 登录账户docker login# 镜像搜索 ,可选参数:#  --filter 或 -f 过滤条件 -f=stars=50只显示starts>50的镜像#  --no-trunc 显示镜像的完整描述#  --limit int 一页显示几条,默认25条# --automated 过滤automated=ok的,提示已过期,让用filter,使用却不行docker search [-f=stars=50 --no-trunc] mysql# 镜像拉取,-a 可选,表示全tag拉取,latest表示要拉取的镜像tagdocker pull [-a] mysql:latest# 将镜像推送到远程仓库,将tag为yxkong的mysql镜像推送到远程仓库docker push mysql:yxkong

示例

[root@dev216 ~]# docker search -f=stars=50 --automated  pythonFlag --automated has been deprecated, use --filter=automated=true insteadINDEX       NAME                                       DESCRIPTION                                     STARS     OFFICIAL   AUTOMATEDdocker.io   docker.io/kaggle/python                    Docker image for Python scripts run on Kaggle   155                  [OK]docker.io   docker.io/nikolaik/python-nodejs           Python with Node.js                             77                   [OK]docker.io   docker.io/joyzoursky/python-chromedriver   Python with Chromedriver, for running auto...   58                   [OK]

镜像本地操作

# 列出本地images,-a(显示所有) -f(过滤) -q(只显示镜像id)# 不加mysql显示所有,加mysql只显示mysql的docker images mysql# 显示指定镜像的提交记录, -H 默认为true;-q(只显示镜像id)docker history mysql# 删除本地镜像 -f 强制删除,后面可以删除一个或多个docker rmi redis mysql# 删除本地全部镜像docker rmi -f $(docker images -q)# 镜像打包成tar,将redis 4.2tag的镜像打包成redis4.2.tardcoker save -o redis4.2.tar redis:4.2# 从tar包载入镜像docker load -i redis4.2.tar# 给某个镜像打tagdocker tag# 构建镜像 指定dockerfile构建指定tag的镜像docker build -f /docker/dockerfile/yxk_mysql -t yxk_mysql:yxkong


四、容器操作

容器启动

# 包含两步,将镜像放入容器,再启动容器docker run -it --name yxk_redis redisdocker run [OPTIONS] IMAGE [COMMAND] [ARG...]options -i 以交交互的模式运行容器 通常和-t一起使用-t 为容器分配一个终端,通常和-i一起使用-d 后台运行容器(类似于nohup)并返回一个容器id-a 指定标准输入输出内容类型STDIN/STDOUT/STDERR,默认[]-P 随机端口映射,容器内部端口随机映射到主机端口-p 指定端口映射,格式为 主机:主机端口:容器端口--name 为容器指定一个名称--dns 指定容器使用的dns,默认和宿主一样-h 指定容器的hostname--cpuset="0-2"  or --cpuset="0,1,2": 绑定容器到指定CPU运行;-e 设置环境变量--env-file=[]: 从指定文件读入环境变量;-m 设置容器的最大内存--expose=[]: 开放一个端口或一组端口;--volume , -v: 绑定一个卷
# 只是启动容器或重启容器docker start/restart yxk_redis


容器查看

##top支持 ps 命令参数,格式:docker top [OPTIONS] CONTAINER [ps OPTIONS]##列出yxk_redis容器中运行进程,不加容器名就所有docker top yxk_redis##查看所有运行容器的进程信息for i in  `docker ps |grep Up|awk '{print $1}'`;do echo \ &&docker top $i; done
##查看redis容器日志,默认参数docker logs yxk_redis##查看redis容器日志,参数:-f 跟踪日志输出;-t 显示时间戳;--tail 仅列出最新N条容器日志;docker logs -f -t --tail=20 yxk_redis##查看容器redis从2021年07月08日后的最新10条日志。docker logs --since="2021-07-08" --tail=10 yxk_redis# 查看当前运行的容器,# 参数:-a 查看全部容器(包含正在运行和历史运行过的)#  -q 查看正在运行容器的id -s 查看运行容器总文件大小# -l 显示最近创建容器 -n 3 显示最近创建的3个容器 --no-trunc 不中断输出docker ps -qs yxk_redis# 获取镜像yxk_redis的元信息docker inspect yxk_redis# 获取正在运行的容器yxk_redis的 IPdocker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' yxk_redis

容器的进出

# 使用run方式在创建时进入docker run -it centos /bin/bash# 关闭容器并退出exit# 仅退出容器,不关闭快捷键:Ctrl + P + Q# 直接进入centos 容器启动命令的终端,不会启动新进程,多个attach连接共享容器屏幕,参数:--sig-proxy=false  确保CTRL-D或CTRL-C不会关闭容器docker attach --sig-proxy=false centos # 在 centos 容器中打开新的交互模式终端,可以启动新进程,参数:-i  即使没有附加也保持STDIN 打开;-t  分配一个伪终端docker exec -i -t  centos /bin/bash# 以交互模式在容器中执行命令,结果返回到当前终端屏幕docker exec -i -t centos ls -l /tmp# 以分离模式在容器中执行命令,程序后台运行,结果不会反馈到当前终端docker exec -d centos  touch cache.txt 

容器的操作与删除

# 停止一个运行中的容器docker stop yxk_redis# 杀掉一个运行中的容器docker kill yxk_redis# 删除一个已停止的容器docker rm yxk_redis# 删除一个运行中的容器docker rm -f yxk_redis# 删除多个容器docker rm -f $(docker ps -a -q)docker ps -a -q | xargs docker rm# -l 移除容器间的网络连接,连接名为 dbdocker rm -l db # -v 删除容器,并删除容器挂载的数据卷docker rm -v yxk_redis

容器与主机间的数据交互

# 将yxk_redis容器中的文件copy至本地路径docker cp yxk_redis:/[container_path] [local_path]# 将主机文件copy至yxk_redis容器docker cp [local_path] rabbitmq:/[container_path]/# 将主机文件copy至yxk_redis容器,目录重命名为[container_path](注意与非重命名copy的区别)docker cp [local_path] yxk_redis:/[container_path]


所有的docker命令都可以通过以下方式获取详细说明

docker 命令   --help 会有各种参数d的详细shuo'm 


原文作者:5ycode;如有侵权,请联系管理员删除。

下一篇: linux的cgroups详解
请登录后发表评论 登录
全部评论

注册时间:2021-03-26

  • 博文量
    124
  • 访问量
    71516