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

一、安装与启动
硬件环境:4C8G物理机
系统环境:
[]3.10.0-957.el7.x86_64[]CentOS Linux release 7.6.1810 (Core)
直接安装
[]可能出现的问题:
问题一,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)
[]将改为
问题二,还是python引用的问题
~]# yum install dockerLoaded plugins: fastestmirror, langpacksDetermining fastest mirrorsbase: mirrors.huaweicloud.comextras: mirrors.bfsu.edu.cnupdates: mirrors.bfsu.edu.cnbase | 3.6 kB 00:00:00extras | 2.9 kB 00:00:00updates | 2.9 kB 00:00:00File "/usr/libexec/urlgrabber-ext-down", line 28except OSError, e:^SyntaxError: invalid syntaxFile "/usr/libexec/urlgrabber-ext-down", line 28except OSError, e:^SyntaxError: invalid syntaxExiting 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 EngineLoaded: 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 agoDocs: http://docs.docker.comMain PID: 27805 (dockerd-current)Tasks: 25CGroup: /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
示例
[]Flag --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;如有侵权,请联系管理员删除。