docker入门第一章 web

第一章 什么是docker 容器

1.1docker容器发展史

2010年几个年轻人成立了一个做PAAS平台的公司dotCloud.起初公司发展的不错,不但拿到过一些融资,还获得了美国著名孵化器YCombinator的支持,后来微软谷歌亚马逊这样的大厂商也纷纷加入PAAS平台,竞争十分激烈,dotCloud举步维艰.

2013年可能是公司发展的不是很好,工程师又不想自己的努力付之东流,于是他们决定将他们的核心技术开源.这项技术就是docker.当时docker的功能就是将linux容器中的应用代码打包,可以轻松的在服务器之间进行迁移.

无心插柳柳成荫,docker技术风靡全球,于是dotCloud公司改名为docker Inc,并全面投入到docker的开发之中.

2014.6 Docker发布了第一个版本 Docker1.0

2014.7 获得C轮融资 $4000W

2015.4 获得D轮融资 $9500W

至今已经发布到docker

1.2 docker容器是什么

docker容器是标准化的软件单元
将软件打包到标准化单元中,以进行开发,运输和部署
通俗的将,docker容器相当于笔筒,代码,数据库相当于笔,橡皮,笔筒里既可以放笔,也可以放橡皮。可以把hello word放在docker中,可以把网站放入docker中,可以把任何想得到的程序放在docker中。

第二章 了解docker

2.1docker思想

2.1.1集装箱

没有集装箱之前运输货物,东西零散容易丢失,有了集装箱之后货物不容易丢失,我们可以把货物想象成程序,目前我们要把程序部署到一台新的机器上,可能会启动不起来,比如少一些配置文件什么的或者少了什么数据,有了docker的集装箱可以保证我们的程序不管运行在哪不会缺东西.
在这里插入图片描述

2.1.2标准化

  1. 运输方式
    docker运输东西有一个超级码头,任何地方需要货物都由鲸鱼先送到超级码头,然后再由鲸鱼从超级码头把货物送到目的地去.对应的技术来说,比如我们要把台式机的应用部署到笔记本上,我们可能选择用QQ发过去或者用U盘拷过去,docker就标准化了这个过程,我们只需在台式机上执行一个docker命令,把鲸鱼派过来,把程序送到超级码头去,再在笔记本上执行一个docker命令,然后由鲸鱼把程序从超级码头送到笔记本上去.
  2. 存储方式
    当我们把程序存储到笔记本上时,我们需要一个目录,且我们要记住这个目录,因为下次我们可能还要修改,有了docker之后我们就不用记住了程序在哪里了,我们使用的时候只需要一条命令就行了.
  3. API接口
    docker提供了一系列rest api的接口,包含了对docker也就是对我们的应用的一个启动停止查看删除等等,如当我们要启动tomcat时我们要执行startup命令,当我们要停止时要执行shutdown命令,如果不是tomcat,我们可能还需要一些别的命令.有了docker我们记docker的命令就可以对其进行操作.

第三章 走近docker

镜像就是上面说的集装箱,仓库就是超级码头,容器就是我们运行程序的地方.docker运行程序的过程就是去仓库把镜像拉到本地,然后用一条命令把镜像运行起来变成容器.

build:构建,就是构建镜像.

ship:运输,运输镜像,从仓库和主机运输.

run:运行的镜像就是一个容器.

build,ship,run和镜像,仓库,容器是一一对应的.

3.1 docker 镜像

在这里插入图片描述

  • docker 镜像代表了容器的文件系统里的内容,是容器的基础,镜像一般是通过 Dockerfile 生成的
  • docker 的镜像是分层的,所有的镜像(除了基础镜像)都是在之前镜像的基础上加上自己这层的内容生成的
  • 每一层镜像的元数据都是存在 json 文件中的,除了静态的文件系统之外,还会包含动态的数据

在这里插入图片描述

这张图完整的记录了docker images整个命令

docker images :列出 docker host 机器上的镜像,可以使用 -f 进行过滤
docker build:从 Dockerfile 中构建出一个镜像
docker history:列出某个镜像的历史
docker import:从 tarball 中创建一个新的文件系统镜像
docker pull:从 docker registry 拉去镜像
docker push:把本地镜像推送到 registry
docker rmi: 删除镜像
docker save:把镜像保存为 tar 文件
docker search:在 docker hub 上搜索镜像
docker tag:为镜像打上 tag 标记

第四章 centos 下docker 安装(aliyun抢占实例)

  1. 如果原本安装docker先卸载
yum remove docker \
           docker-client \
           docker-client-latest \
           docker-common \
           docker-latest \
           docker-latest-logrotate \
           docker-logrotate \
           docker-engine
  1. 安装依赖设置yum仓库
    安装依赖库
yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2

设置仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  1. 安装docker
yum list docker-ce --showduplicates | sort -r # 查看可安装的版本
[root@iZ0jl3altxdbnjd3v45sqjZ ~]# yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror
已安装的软件包
可安装的软件包
Loading mirror speeds from cached hostfile
docker-ce.x86_64            3:20.10.6-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.6-3.el7                    @docker-ce-stable
docker-ce.x86_64            3:20.10.5-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.4-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.3-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.2-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.1-3.el7                    docker-ce-stable
docker-ce.x86_64            3:20.10.0-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.9-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.8-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.7-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.6-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.5-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.4-3.el7                    docker-ce-stable

指定安装版本
yum -y install docker-ce-18.03.1.ce

[root@iZ0jl3altxdbnjd3v45sqjZ ~]# yum install docker-ce docker-ce-cli containerd.io 安装命令

[root@iZ0jl3altxdbnjd3v45sqjZ ~]# docker version # 查看版本,是否安装成功
Client: Docker Engine - Community
 Version:           20.10.6
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        370c289
 Built:             Fri Apr  9 22:45:33 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
  1. 启动并加入开机启动
systemctl start docker
systemctl enable docker

第五章 docker 部署自己的应用

5.1 Dockerfile目录

这里的例子已django为python框架的一个django-admin工程
我们需要建立一个dockerfile告诉docker需要做什么,这里我建立了Dockerfile,并将我们的web文件放到了和它同一个目录下.

(venv) ➜  myblog git:(master) ✗ ll
total 24
-rw-r--r--   1 chenbaojun  staff     0B  5 17 17:53 Dockerfile
-rw-r--r--   1 chenbaojun  staff    10B  5 13 10:49 README.md
drwxr-xr-x   3 chenbaojun  staff    96B  5 13 14:45 __pycache__
-rwxr-xr-x   1 chenbaojun  staff   538B  5 13 09:15 manage.py
drwxr-xr-x  10 chenbaojun  staff   320B  5 13 10:40 my_blog
drwxr-xr-x   7 chenbaojun  staff   224B  5 13 10:39 myblog
-rw-r--r--   1 chenbaojun  staff    18B  5 17 11:33 requirements.txt
drwxr-xr-x   6 chenbaojun  staff   192B  5 13 14:44 venv

5.2 Dockerfile详解

FROM kubesphere/python-36-centos7:v2.1.0
RUN mkdir code
COPY . code
WORKDIR code
RUN pip install --trusted-host mirrors.aliyun.com -r requirements.txt

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

首先是基础镜像from 此镜像为安装了python3.6的centos镜像
创建code目录
将代码拷贝到code目录
pip安装依赖报
执行启动命令

5.3 构建容器

在Dockerfile目录下执行

docker build -t myblog .

之后执行docker image 
myblog git:(master) ✗ docker images
REPOSITORY                                              TAG                 IMAGE ID            CREATED              SIZE
myblog                                                  latest              aea0730068a2        About a minute ago   770MB
就能看到刚刚构建的myblog容器了

5.4 容器镜像外网访问

从Dockerfile可以看出外网暴露的容器端口是8080,但是我们需要将这个端口暴露出来,方便访问,所以运行命令

docker run -d -p 8000:8000 myblog

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-P: 随机端口映射,容器内部端口随机映射到主机的端口

-p: 指定端口映射,格式为:主机(宿主)端口:容器端口

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

--volume , -v: 绑定一个卷

运行之后我们直接可以在浏览器访问了
在这里插入图片描述

第六章 阿里云部署docker应用步骤步骤

  1. 安装git ,代码已代码库管理所以需要git

yum install -y git

2 . 执行上面的docker build 命令,构建容器

如果发现

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

需要执行

service docker status

找到问题,之后重启

service docker restart

步骤和以上一样

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值