Docker总结

Docker总结

学习docker首先要学习docker的三大基本概念:仓库,镜像和容器

所谓 仓库就是就类型于maven仓库,git仓库,是专门存放东西的地方,docker中的仓库和maven和git仓库不同,maven仓库主要用来存放依赖架包的,git仓库主要用来存放代码的,而今天讲的docker的仓库主要是用来存放镜像的.

何为镜像?所谓镜像就是一个用来创建容器的工具,一个镜像可以创建多个容器,可以从官网仓库(docker hub)或者其他私服仓库拉取先要的镜像,或者通过dockerfile来构建属于自己的镜像

何为容器?容器是由镜像创建了,他可以被启动,停止,运行,删除,每个容器之间都是互相隔离的,保证安全,也可以把容器当做一个小型虚拟机(或者一个简单的linux环境)

知道了以上的三大概念,那么下面就需要了解如何使用?

首先需要安装Docker

​ 安装比较简单,我们可以基于centos7 (必须3.10以上)进行安装,也可以基于其他版本安装,安装完以后可以使用命令docker version检验docker是否启动成功

其次安装完docker以后就需要创建容器

​ docker run -i -t --name ="自定义的容器的名字" 镜像的名字 /bin/bash

​ -i:默认是false ,允许你对容器内的标椎输入进行交互

​ -t:默认是false,在新容器内指定一个伪终端

​ /bin/bash 表示启动这个容器

​ 使用exit表示退出守护式容器

查看容器:docker ps -a -l

​ -a表示查看多有的容器

​ -l表示查看最近创建的容器

查看容器的详细信息,比如可以看到ip信息 docker inspect 容器的名字

重启已经停止的容器:docker Satart 容器名

删除已停止的容器:docker rm 容器名

什么是守护者容器

大多是容器都是在创建好之后就关闭了.在真实的案例中,我们需要长期运行的容器提供服务.这就是docker的守护式容器.

以守护形式运行容器:docker run -i -t 镜像名 /bin/bash

退出不关闭容器:先ctrl+p,然后ctrl+Q

进入到运行中的容器中:docker attach 容器名

启动守护式容器:docker run --name 容器名字 -d 镜像名 /bin/bash

​ ` -d表示不需要进入文件夹中,就可以启动文件

查看容器日志:docker logs -f -t --tail="all" 容器名

​ -f 默认为false 一致跟踪日志的变化,并返回结果

​ -t默认是false 在返回的结果上加上时间戳

​ --tail="all" 返回最后几行的日志数据

查看容器内的进程 docker top 容器名

在运行的容器中启动新的进程:docker exec -d -i -t 容器名 /bin/bash

停止守护式容器:

​ docker stop 容器名:发送一个信号给容器,等待容器的关闭

​ docker kill 容器名 :直接停止容器

如何使用docker进行部署网站

设置容器的端口映射

​ 创建的容器就类似一个虚拟机,需要暴露接口给外面,因此需要进行容器的端口映射

​ docker run -p 80 -i -t centos /bin/bash

​ docker run -p 8080:80 -i -t centos /bin/bash

​ docker run -p 0.0.0.0:80 -i -t centos /bin/bash

​ docker run -p 0.0.0.0:8080:80 -i -t centos /bin/bash

​ -p 80 :就表示为容器暴露80的端口,任意路径和端口都可以映射80端口

​ -p 8080:80:表示为容器暴露80端口,任意的路径的8080端口才可以映射80端口

​ -p 0.0.0.0:80表示用指定的ip映射80端口,需要用指定的ip才可以访问

如何部署Nginx

1.创建一个容器.并映射容器的80端口

docker run -p 80 --name="容器的名字" -it centos /bin/bash

​ -it :就相当于-i -t

2.执行安装命令:

    yum install -y epel-release
    yum install -y nginx

3.运行nginx的命令.启动nginx服务 /usr/sbin/nginx

4.ctrl+p ctrl +q退出容器

5.在浏览器上进行访问http://虚拟机ip:32769/index.html

如果重启容器后会发现用原来的端口映射已经访问不到了,当重新启动容器会重新给我们进行端口的映射.

Docker的镜像和仓库

查看所有镜像 docker images

查看镜像信息docker inspect 镜像名字或id

删除镜像 docker rmi 镜像名 -f

​ -f 表示强制删除

删除对应仓库中所有镜像 docker rmi $(docker images -q centos)

如何获取和推送镜像

查找镜像有两种方式:1.docker hub 2.docker search 镜像名字 term

拉取镜像:docker pull 镜像名:版本号

拉取速度慢,可以使用镜像加速器进行加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://175i7vum.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

推送镜像: docker push 镜像名(按照阿里云中给出的步骤进行拉取)比如:

    1.注册hub的账号.
    2.登陆hub的账号.docker login
    3.使用push命令推送到hub中

构建镜像

两种方式进行构建

第一种:docker commit 通过容器进行构建(不常用)

第二种:docker build 通过Dockerfile文件构建(比较常用)

第一种方式

使用commit构建镜像

1.创建一个容器并安装nginx服务

2.提交镜像

docker commit -a 'dongdd' -m 'nginx' web01 dong/web01

其中dondd是作者的名字,'nginx'表示提交的信息,web01是基于的容器名字,dong/web01是创建的仓库名或者镜像名字

3.根据刚才创建的镜像创建并启动容器

docker run -d --name nginx_web01 -p 80 dong/web01 /usr/sbin/nginx -g "daemon off;"

其中nginx_web01表示创建的容器的名字,dong/web01表示的自定义的镜像,

将镜像推送到Registry

docker login --username=it_dong registry.cn-hangzhou.aliyuncs.com

docker tag bd4bec9af65d registry.cn-hangzhou.aliyuncs.com/dong_dd/web-nginx:1.0

docker push registry.cn-hangzhou.aliyuncs.com/dong_dd/web-nginx:1.0

拉取镜像
docker pull registry.cn-hangzhou.aliyuncs.com/dong_dd/web-nginx:[镜像版本号]
第二种方式:
使用dockerFile构建镜像

DockerFile的指令:

使用CMD指令解决默认命令

​ FROM centos
​ MAINTAINER dongdd "1058440699@qq.com"
​ RUN yum install -y epel-release
​ RUN yum install -y nginx
​ EXPOSE 80

docker build -t="dong/web01" /root/dockerfile/df1

docker run -d -p 80 dong/web02

所谓dockerfile构建镜像,其实就是要必须有一个Dockerfile 的文件,这个文件中写的一行一行的命令,然后通过docker build xxxx进行构建镜像,然后根据构建好的镜像创建容器的过程

使用Dockerfile文件构建镜像必须要写好Dockerfile文件中的指令:

​ FROM指令:表示是基于哪一个镜像的,必须要写

​ MAINTAINER:表示作者的信息 后面包含作者名和邮箱

​ RUN:表示指定当前镜像中运行的命令,每个RUN命令都会在当前镜像的上层创建一个新的镜像来运行指令.

​ EXPOSE:表示指定运行该镜像的容器使用的端口,

    我们使用EXPOSE只是告诉Docker运行该镜像的容器会使用80端口,出于安全的考虑,docker并不会打开该端口.
而是需要我们在使用该镜像运行容器的时候指定端口的映射.

CMD:表示默认的命令指令,后面添加相应的指令,然后在启动容器的时候可以不用写这些指令了,因为已经默认执行了,但是如果在启动容器的时候运行其他指令,这时候哪个默认指令则会被覆盖

ENTRYPOINT:表示默认的命令指令,和CMD类似,但是这个命令不会被覆盖

ADD:将文件和目录复制到使用dockerfile构建的镜像中

COPY:和ADD类似,比如可以使用copy替换默认首页的情况,只需要在COPY后面添加自己定义的文件路径. 后面在跟上其他文件路径,运行的时候就会执行自定义的路径

ONBUILD:镜像触发器:表示当一个镜像被其他镜像作为基础镜像时执行时,会在构建过程中插入指令,ONBUILD后面跟着的指令只会在当前镜像被作为基础镜像时才会被执行,如果没有作为基础镜像时,是不会执行这条命令的,把这个镜像作为基础镜像构建其他镜像时,就会执行这条指令,也就是说,构建的时候执行这个指令,这样做的好处是如果构建多个镜像都需要同样的指令,可以把这个指令放到基础镜像中,然后大家执行的时候都会执行,这样可以减少重复操作

容器之间的互联

1.需要构建基础镜像

Dockerfile文件配置如下:

FROM 基础镜像名
MAINTAINER 作者名 "邮箱"
RUN yum install -y iputils
RUN yum install -y net-tools
CMD /bin/bash
EXPOSE 80

2.使用docker build构建镜像,然后基于这个镜像创建容器,当基于同一个镜像创建多个容器时会发现他们之间是ping通的(就是可以互联),通过ping 其他容器的ip地址就可以看到了

3.但是会发现当重启容器以后,他们的ip会改变,因此如果两个容器使用ip进行连接,一旦重启以后,可能就连不上了,如何解决呢?

4.在创建容器的时候要加上 --link=要互联的容器名:这个要互联容器的别名 例如:

docker run -it --name=web01 --link=web02:zk dong/web 这样创建的容器之间的连接是通过别名进行连接的,而不是通过ip连接.因此当ip改变了以后,别名还是以前的别名,还是可以进行连接

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343