docker mysql总是退出_入门Docker看这一篇就够了

本文旨在一文帮助读者入门Docker,文章分为Docker简介、常用功能代码以及Docker实战三部分。通过阅读&实践本文,相信可以帮助你入门Docker,提升生产力。

由于本文主要用于入门,更加复杂和深入的功能难免遗漏,读者可以根据需求再自行研究,同时也欢迎留言交流。

前言

作为数据挖掘的基础,环境搭建至关重要,但是传统的环境搭建会花费大量的时间,甚至还需要掌握诸如Linux等其他技能,十分花费时间。同时,我们训练好的模型往往因为服务器环境不同导致无法正确的进行预测。Docker的出现能够很好的解决上述两个问题,同时还可以对你日常工作其他的方面有更多的帮助。所以作为数据挖掘系列教程的第一篇,就是介绍Docker的入门。

1. Docker简介

1.1. Docker是个啥?Docker能做啥?

Docker其实就是个贼迷你的虚拟机,内核是精简的不能再精简的linux,这样保证他安装和运行需要的资源贼低。同时,由于是linux内核,基本上常用的开源软件都可以十分友好的进行支持。

对于我们日常使用的场景来说,各位在学习或者应用各种工具时,在安装环节难免一番手忙脚乱,各种不同工具需要不同依赖,安来安去导致系统和各种工具游走在崩溃的边缘。如果需要重新安装系统或者把写好的代码提交服务器或者别人的环境运行时,那更是世界末日般的痛苦。

而Docker的出现,对于上述的问题来说,则是迎刃而解。

Docker基于贼精简的Linux内核,可以自行安装配置各种环境和服务(python、java、php等等等等),并打包成“镜像”文件,后续将“镜像”部署到其他任何的电脑和服务器的Docker中运行。

由于大家都是用同一个Docker“镜像”,所以系统内核和各种环境全部一致。这样的话,不管我是mac,你是windows,他是Linux,只要我们都有docker,就再也不会有依赖和环境问题。

由于Docker的“镜像”是运行在一个又一个“容器”中,可以做到与当前系统环境隔离,我们还可以保证现有系统的“纯净”。

除了上述两个特点,各种语言、工具如python、mysql等,还支持直接Docker安装,区别于传统安装流程的配置各种源、安装各种依赖再安装目标工具,Docker仅需从远程“仓库”拉取“镜像”到本地,再将本地“镜像”在“容器”中运行,仅仅两行代码就可以完美的运行目标工具。

1.2. 基本概念&原理

Docker由三个元素组成,即:镜像(Image)、仓库(Repository)和容器(Container)。镜像就是我们封装好环境、服务的整体系统包;仓库分为远程仓库和本地仓库,用于存放我们的镜像了;容器则是运行镜像的地方。

对于镜像、仓库和容器,我们常用的操作如图:

186b36aee130e3fc35d3f7dda0871e52.png

1.3. 常用工作流

对于docker的使用,常见的工作流如下:

  1. 自行准备环境&服务,打包成镜像文件后部署到服务器或拷贝给别人使用 工作流:拉取ubuntu/centos纯净系统镜像文件——>配置自己的环境&服务——>打包成镜像文件压缩包——>拷贝到其他环境运行

  2. 通过docker安装/使用软件 工作流:拉取mysql/python/nginx等软件镜像文件——>设置本地文件夹映射&端口映射,运行镜像文件——>备份容器外文件

1.4. docker安装

本文旨在关注docker的原理及使用,争取一文帮助读者上手docker。所以,关于docker的安装本文不再重复。可以自行搜索你的系统+docker安装,如“mac docker安装”即可~

1.5. 国内源加速

其中请注意安装好docker后务必配置国内源加速,不然获取各种镜像的速度堪比拨号时代。。。。。。。。

配置步骤1 登陆阿里云,搜索“容器镜像服务” 50fe91414d391ea5886e648c1c63d1dd.png

配置步骤2 Ubuntu系统按如下方法配置 3a9f5ca2b825d9c70380ed4b92dc10c1.png Mac系统拷贝上述红框3中的代码按如下步骤添加 3d3a91a527452f12f003aec635a4dfd6.png bc19b6f9d62303c521567a5a2482ee7a.png

2. 常用功能代码

Talk is cheap,show me the code~

下面将会对照着上文的Docker常用操作图,分为仓库相关、容器相关和保存成镜像文件三部分梳理对应的代码

2.1. Part1.仓库相关

d7f52bb38b169a1031a7561ff8038ff9.png

2.1.1. 远程镜像搜索
docker search ubuntu

可以看到会搜索到很多版本,通常我们会选择官方版本使用。 bd0b9bb0ec11034f2abdb671ad8a366f.png

参数说明:

NAME: 镜像仓库源的名称 DESCRIPTION: 镜像的描述 OFFICIAL: 是否 docker 官方发布 stars: 类似 Github 里面的 star,表示点赞、喜欢的意思。AUTOMATED: 自动构建。

2.1.2. 拉取远程镜像到本地

其中冒号后面的18.04是版本号,如果不特殊标注会默认是latest,也就是最新版

docker pull ubuntu:18.04

aefc290904745654f91fd7503a031475.png

2.1.3. 查看本地镜像

通过下面的命令,可以看到本地的所有镜像

docker images

04b1c4093103ff18f8dd8f929ca9de0b.png

2.1.4. 删除本地镜像

通过下面的命令,可以删除本地镜像,请注意标注版本号

docker rmi ubuntu:18.04

36ace59b724de7a23dace17d466f23c5.png

2.1.5. 推送本地镜像至阿里云

通过将本地镜像推送到阿里云,可以方便的将镜像进行分享和部署 步骤1.创建命名空间 8b21e8481e79a323b2feae2c45d805de.png 步骤2.创建镜像仓库 5f64e4a59a67d337e29152f546ca9d14.png 步骤3.设置仓库位置 85ec6217bea1a27b0ada197407a94de4.png 步骤4.查看创建好的仓库 670c9b5e8e59146503f22b31062517ee.png 步骤5.按照说明登陆并推送本地镜像至阿里云 4877847e30fe0622420fd1785494c16b.png

2.1.6. 镜像改名字
docker tag 54a9f21b20af myubuntu:v5

2.2. Part2.容器相关

65b6514e1eface75372c2f0d2a76bf2a.png

2.2.1. 查看所有容器状态
docker ps -a

98e0217337d25874531586b95af309f8.png

参数含义:

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • –format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • –no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

状态(STATUS)有7种:

  • created(已创建)

  • restarting(重启中)

  • running(运行中)

  • removing(迁移中)

  • paused(暂停)

  • exited(停止)

  • dead(死亡)

2.2.2. 本地镜像启动为容器

下面为最常用的镜像启动代码

docker run -it --name ubuntu-python -p 16688:8888 -v /Users:/shared_data ubuntu:18.04 env LANG=C.UTF-8 /bin/bash

341269108a6a32afe5c5d6540da4b7f0.png

上述代码中docker run为固定格式,后面的全部是参数。具体参数含义:

  • -it和/bin/bash通常成对出现,代表交互模式运行容器,通过这对参数我们可以直接进到容器中,在容器内进行各种操作

  • –name ubuntu-python代表将容器命名为ubuntu-python

  • -p 16688:8888代表将容器外端口16688和容器内端口8888进行映射,即通过容器外的16688端口就能访问容器内8888端口的服务

  • -v /Users:/shared_data代表将容器外文件夹/Users映射为容器内的/shared_data文件夹

  • ubuntu:18.04代表我们要启动的“镜像名称:版本”

  • env.UTF-8是将环境设为utf8格式,主要解决映射文件夹带中文显示乱码的问题

注意1:

  • 端口映射及文件夹映射十分重要,可以用于容器内外的服务、文件共享以及服务持久化。

  • 同一段代码可以进行多个文件夹或端口映射,只需要添加多个-p或-v即可

  • 除了-it 比较常用的还有-d,意思是后台运行

2.2.3. 退出容器

直接按键盘的control+d(ctrl+d)或control+p+q(ctrl+p+q) 270b9d807d5cbd3c6dadd2a074449f4f.png

两者的主要区别:使用attach命令进入容器使用control+d退出容器会使容器暂停。

推荐直接记住control+d(ctrl+d)可以退出镜像即可。

2.2.4. 退出容器后再进入容器
docker exec -it fcca62e69d5e /bin/bash

d5aa209e8618eb84da13fa4361b3a0ca.png

fcca62e69d5e为container id,需要自行修改。

如果容器已经暂停,会导致无法进入容器,可以用后面的启动容器代码先将容器启动再运行上述代码进入容器

2.2.5. 停止容器
docker stop fcca62e69d5e

b4a46953347f16a1a885f15fc21890a1.png

其中fcca62e69d5e为container id,需要自行修改。

下面代码可以停止所有容器,十分实用

docker stop $(docker ps -aq)
2.2.6. 删除容器

容器被暂停后并不会被删除,如果需要删除需要执行下面语句

docker rm fcca62e69d5e

其中fcca62e69d5e为container id,需要自行修改。

下面代码可以删除所有的容器,通常配合停止所有容器使用

docker rm $(docker ps -aq)
2.2.7. 启动已有容器

如果容器被暂停,需要重新开启,可以执行以下代码

docker start fcca62e69d5e

26fbb214af0c46b9de8c57be12945ce1.png 可以看到,通过执行上述语句,容器的状态由exited变为了up

2.2.8. 容器保存成镜像

当我们配置好环境或者封装好服务,可以通过把容器打包成镜像方便后续的使用或者分享。下述代码可以将现有的容器保存成镜像。

docker commit -a "yxy" -m "ubuntu test" fcca62e69d5e  ubuntu:v1

cdeea39e931fda4e8f3194ef7cc9b514.png

  • yxy:作者

  • -m后面一串:镜像说明

  • fcca62e69d5e:容器id

  • ubuntu:v1:镜像名&版本

2.3. Part3.保存/读取镜像文件

bb2aedf93c63006b56d41e989e996c20.png

2.3.1. 镜像保存成文件
docker save -o ~/ubuntu_2.tar ubuntu:v1

c71f36d4c21b749075b7cb8c8c4fb62b.png

2.3.2. 文件读进镜像
docker load 

c72435c248e0ac02ee6fa0c8069b173f.png

3. 实践

3.1. Mysql搭建

不管是windows、mac还是liunx,安装mysql都需要下载合适的版本进行安装和配置才可以正常使用mysql。但是随着Docker的出现,我们只需要两行代码就可以完美的在本地环境启动mysql。具体步骤如下:1.拉取mysql

docker pull mysql

f194f70fb1ff5e9405696774136e208d.png

2.启动mysql

docker run -d --privileged=true -v ~/mysql:/var/lib/mysql -p 3306:3306 --name mysql8.0 -e MYSQL_ROOT_PASSWORD=123456  mysql:latest

d6e5ad07740465e99e10c96165054188.png

通过上述代码,成功的启动了mysql,其中有几点注意:

  • 本地的~/mysql将保存数据库的所有数据及配置,方便后续关闭容器后数据保存或迁移

  • 将本地3306及容器内3306进行映射,我们通过连接本地3306端口即可连接mysql

  • -e MYSQL_ROOT_PASSWORD=123456 表示我们设置root用户的密码为123456

本次docker启动mysql仅仅作为示例,更多参数可以访问:https://hub.docker.com/_/mysql

4. 写在最后

如果你旨在数据挖掘进行更深入的学习核研究,熟悉Docker的使用可以大幅提高你的生产力。虽然本文仅仅是入门文章,但是介绍的功能和代码基本可以帮助你应付日常95%的工作。当然,如果你想对docker更加深入的功能进行了解,可以自行参考详细的教程进行了解~

参考资料: runoob Docker教程

欢迎扫码关注我们的公众号~后续还会有更多数据挖掘相关内容分享~

96ca1f7b8820ee5e60c5ffa67b6a160b.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值