hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

Docker 从入门到掉坑

2019-11-18杂谈搜奇网44°c
A+ A-

Docker 引见

简朴的对docker举行引见,能够把它理解为一个运用顺序实行的容器。然则docker本身和虚拟机照样有较为显著的相差的。我大抵归结了一下,能够总结为以下几点:


docker本身也有着许多的长处,关于它的长处,能够总结为以下几项:

 

装置docker

从 2017 年 3 月最先 docker 在本来的基础上分为两个分支版本: Docker CE 和 Docker EE。

Docker CE 即社区免费版,Docker EE 即企业版,强调平安,但需付费运用。

起首我们须要移除旧的docker版本:

$ sudo yum remove docker 
                  docker-client 
                  docker-client-latest 
                  docker-common 
                  docker-latest 
                  docker-latest-logrotate 
                  docker-logrotate 
                  docker-selinux 
                  docker-engine-selinux 
                  docker-engine

 

接着我们须要装置一些必要的体系东西:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

 

接下来我们须要增加软件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

 

更新 yum 缓存:

sudo yum makecache fast

 

考证容器

上边的操纵都是一些预备操纵,假如步骤过程当中没有涌现什么非常的话,后边就能够装置docker了

sudo yum -y install docker-ce

 

装置终了今后就是开启docker背景效劳步骤:

sudo systemctl start docker

 

当我们的docker镜像下载终了今后,默许会有个helloworld的镜像用于测试:

测试运转 hello-world

[root@runoob ~]# docker run hello-world

 

由于当地没有hello-world这个镜像,所以会下载一个hello-world的镜像,并在容器内运转。

关于docker的镜像和容器引见

容器的实质就是历程,差别的容器有着本身自力的root文件体系,收集设置,一个断绝的空间。容器一旦消逝,则内里包括的数据也会发作丧失。容器内里一切的存储信息都应该运用数据卷或许其他情势。数据卷的生存周期自力于容器,容器灭亡,数据卷不会灭亡。因而,运用数据卷后,容器删除或许从新运转今后,数据却不会丧失。

Docker 镜像是一个特别的文件体系,除了供应容器运转时所需的顺序、库、资本、设置等文件外,还包括了一些为运转时预备的一些设置参数(如匿名卷、环境变量、用户等)。镜像不包括任何动态数据,其内容在构建今后也不会被转变。

docker装置nginx

开端装置完了docker今后便最先进入一些实战环节吧

起首我们须要在docker内里pull相干的nginx镜像:

一最先宿主机并没有启动docker容器,须要启动docker效劳

service docker start

 

然后pull镜像下来,而且启动

docker run -d -p 80:80 --restart=always nginx:latest

 

参数解说:-d 背景启动 -p 宿主机的80端口映照容器的80端口。测试一下相干页面,胜利则以下图:

 

接下来我们能够检察一下镜像标签

docker images

 

这个敕令查询出来的只是镜像的id,然则我们没法依据镜像id进入容器中,进入容器须要有容器的id才够:

因而能够经由过程这个敕令来检察容器的id:

docker ps

 

然后进入容器修正信息
进入容器的敕令有许多种,这里引荐能够运用这类范例:

docker exec -it 999318c7d567 /bin/bash

 

经由过程挑选响应的tag-id进入容器,进入到容器内里今后,会发明内里似乎就是一个新的linux操纵体系:

怎样封闭docker容器?

比较简朴,这里不多说,本身操纵就懂了

docker kill 4591552a4185

 

文件拷贝

懂得了基础的docker容器操纵今后,我们来尝尝怎样上传文件到docker容器中,这个须要和宿主机举行文件交流才够。

起首我们须要拿到容器id的全称:

[root@localhost html]# docker ps 
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
0d4173ecf31f        nginx:latest        "nginx -g 'daemon of…"   9 minutes ago       Up 9 minutes        0.0.0.0:80->80/tcp   sleepy_gould

[root@localhost html]# docker inspect -f '{{.Id}}' 0d4173ecf31f
0d4173ecf31f894e234ae9eb3d9eddd1b9d10b7af5c46608679fe11918af9644

 

然后将文件拷贝进入docker容器中:

[root@localhost html]# docker cp /opt/html/user_login.html 0d4173ecf31f894e234ae9eb3d9eddd1b9d10b7af5c46608679fe11918af9644:/root/user_login.html
[root@localhost html]#

 

接下来的操纵就比较简朴了,检察到挪动的页面即可:

root@0d4173ecf31f:/usr/share/nginx/html# ls
50x.html  index.html  user_login.html
root@0d4173ecf31f:/usr/share/nginx/html#

 

接下来的基础都是通例操纵了,进入我们的nginx设置中:

root@0d4173ecf31f:/etc/nginx# vi nginx.conf 
bash: vi: command not found
root@0d4173ecf31f:/etc/nginx#

 

发明没有vi敕令,须要下载装置

在运用docker容器时,有时刻里边没有装置vi,敲vi敕令时提醒说:vi: command not found,这个时刻就须要装置vi,但是当你敲apt-get install vi敕令时,提醒:

Reading package lists... Done  
Building dependency tree         
Reading state information... Done  
E: Unable to locate package vi

 

这时刻须要敲:apt-get update,这个敕令的作用是:同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,如许才获取到最新的软件包。等更新终了今后再敲敕令:apt-get install vi敕令即可。

如今docker有了,nginx镜像也开启了,就能够对nginx的设置做修正了。

docker内里装置redis

起首照样老例子,pull镜像

[root@izwz9ic9ggky8kub9x1ptuz docker]# docker pull redis:4.0

 

拉取镜像完毕今后,内容以下:

[root@izwz9ic9ggky8kub9x1ptuz docker]# docker pull redis:4.0
4.0: Pulling from library/redis
b8f262c62ec6: Pull complete 
93789b5343a5: Pull complete 
49cdbb315637: Pull complete 
e244975d5eb1: Pull complete 
25dca704d939: Pull complete 
db11ecc9cf34: Pull complete 
Digest: sha256:615b872e3af387206b62ffe66c1052f1653ed31b3afcfaa292a9244c92f2007a
Status: Downloaded newer image for redis:4.0
docker.io/library/redis:4.0

 

ok,基础镜像有了,那末就直接开启容器吧

这里我们修正了宿主机的端口号为8879映照容器内里的6379哈。

[root@izwz9ic9ggky8kub9x1ptuz /]# 
docker run -p 8879:6379 
 -v $PWD/data:/data  
 -v $PWD/conf/redis.conf:/etc/redis/redis.conf  
 --privileged=true
 --name myredis 
 -d redis:4.0 redis-server /etc/redis/redis.conf

 

参数诠释

  • -p 8879:8879: 将容器的8879端口映照到主机的6379端口
  • -v $PWD/data:/data : 将主机中当前目次下的data挂载到容器的/data
  • redis-server —appendonly yes : 在容器实行redis-server启动敕令,并翻开redis耐久化设置

启动终了今后,一切都最先一般运转了。

进入容器,最先检测redis是不是一般:

这里发起开启redis的时刻最幸亏宿主机做一份redis设置文件,映照到容器内里,不然进入容器中基础找不到响应的redis设置文件,很痛楚。

docker内里装置MySQL

这部份的内容比较简朴,只须要将镜像拉下来即可:

docker run --name 【容器名】 -e MYSQL_ROOT_PASSWORD=【mysql暗码】 -d -i -p 3309:3306 mysql:5.7.24

 

然后守候一段时间,终究我们的MySQL容器装置好了:


容器的内存资本斲丧状况
由于我购置的是一台小型的效劳器,相干的设置以下所示,所以在给各个运转的容器举行资本分派的时刻须要考虑到每一个docker容器占用的资本状况。

 

现在已搭建了mysql容器,redis容器,另有一个nginx容器,假如再增加一个java运用的话,目测跑java容器须要最少500m摆布的内存大小来支持。

经由过程运用docker stats敕令来看当前效劳器的内存,由于通常的访问量并不高,能够给当前的mysql,redis分派小一些内存资本:

这时刻能够采纳docker的update敕令来对内存大小举行治理分派:

docker update -m 350m  --memory-swap -1  mysqlserver

 

--memory-swap -1 参数是指不让容器和宿主机举行内存交流,假如须要则须要分外调解,
设置下内存的限定今后效果以下:

docker容器启动失利剖析实战

在设置docker新容器的时刻,比方说给mysql设置my.cnf文件的某些属性,须要重启容器才见效。然则有时刻能够由于手误,致使设置涌现非常,容器重启失利,这个时刻该怎么办呢?

这个时刻最简朴粗犷的体式格局就是,将该容器先rm掉,然后从新装置,然则如许的操纵过于暴力化,万一容器内里另有其他主要数据,直接rm操纵不可取。

实在docker实质也是装置在宿主机内里的,所以响应的设置文件在宿主机内里也能找到陈迹,这里记录了之前我掉坑的一些弥补体式格局:

docker inspect [容器称号]

 

经由过程该敕令能够检察到容器的内部设置属性信息:


这时刻我们能够检察到一个叫做MergedDir的目次文件夹,进入该文件夹的上一级目次,

 cd /var/lib/docker/overlay2/f4ab9eff7a18f20f977595af38f5eb273127e0de8845a42fe71fa9b8850a988b

 

接着我们检察该目次下构造,会发明一个叫做diff的文件夹


带着好奇心,一步一步地进入到文件夹的内部,就会找到之前在docker容器中设置的mysql文件了,手动将本来的设置修正返来,容器便重启胜利了。

 

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Docker 从入门到掉坑

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282384.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>