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

Docker基本入门

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

Docker概述

Docker是一个用于开辟,托付和运转运用顺序的开放平台。

Docker上风

更疾速的托付和布置

关于开辟职员 - Build Once, Run Anywhere

容器意味着环境断绝和可反复性。开辟职员只需为运用建立一次运转环境,然后打包成容器便可在其他机械上运转。别的,容器环境与地点的 Host 环境是断绝的,就像假造机一样,但更快更简朴。

关于运维职员 - Configure Once, Run Anything

只须要设置好范例的 runtime 环境,效劳器就能够运转任何容器。这使得运维职员的事变变得更高效,一致和可反复。容器消除了开辟、测试、生产环境的不一致性。

更高效的假造化

Docker 容器的运转不须要分外的 hypervisor 支撑,它是内核级的假造化,因而能够完成更高的机能和效力。

更轻松的迁徙和扩大

Docker 容器险些能够在恣意的平台上运转,包含物理机、假造机、公有云、私有云、个人电脑、效劳器等。 这类兼容机能够让用户把一个运用顺序从一个平台直接迁徙到别的一个。

更简朴的治理

运用 Docker,只须要小小的修正,就能够替换以往大批的更新事变。一切的修正都以增量的体式格局被分发和更新,从而完成自动化而且高效的治理。

Docker Engine

Docker Engine是具有以下重要组件的客户端-效劳器运用顺序:
  • 效劳器是一种历久运转的顺序,称为保卫顺序历程( dockerd敕令)。

  • REST API,它指定顺序能够用来与保卫顺序举行通讯并指导其操纵的接口。

  • 敕令行界面(CLI)客户端(docker敕令)。

CLI运用Docker REST API经由过程剧本或直接CLI敕令来掌握Docker保卫顺序或与Docker保卫顺序举行交互。

很多其他Docker运用顺序都运用基本API和CLI。

Docker架构

Docker 运用C/S (客户端/效劳器)体系的架构,Docker 客户端与 Docker 保卫历程通讯,Docker 保卫历程担任构建,运转和分发 Docker 容器。Docker 客户端和保卫历程能够在同一个体系上运转,也能够将 Docker 客户端衔接到长途 Docker 保卫历程。Docker 客户端和保卫历程运用 REST API 经由过程UNIX套接字或收集接口举行通讯。

Docker Damon:dockerd,用来监听 Docker API 的请乞降治理 Docker 对象,比方镜像、容器、收集和 Volume。

Docker Client:docker client 是我们和 Docker 举行交互的最重要的体式格局方法,比方我们能够经由过程 docker run 敕令来运转一个容器,然后我们的这个 client 会把敕令发送给上面的 Dockerd,让他来做真正事变。

Docker三个基本概念

Docker Registry:用来存储 Docker 镜像的堆栈,Docker Hub 是 Docker 官方供应的一个大众堆栈,而且 Docker 默许也是从 Docker Hub 上查找镜像的,固然你也能够很轻易的运转一个私有堆栈,当我们运用 docker pull 或许 docker run 敕令时,就会从我们设置的 Docker 镜像堆栈中去拉取镜像,运用 docker push 敕令时,会将我们构建的镜像推送到对应的镜像堆栈中。

Images:镜像是一个只读模板,带有建立 Docker 容器的申明,一般来说的,镜像会基于别的的一些基本镜像并加上一些分外的自定义功用。比方,你能够构建一个基于 Centos 的镜像,然后在这个基本镜像上面装置一个 Nginx 效劳器,如许就能够组成一个属于我们本身的镜像了。

Containers:容器是一个镜像的可运转的实例,能够运用 Docker REST API 或许 CLI 来操纵容器,容器的本质是历程,但与直接在宿主机实行的历程差别,容器历程运转于属于本身的自力的定名空间。因而容器能够具有本身的 root 文件体系、本身的收集设置、本身的历程空间,以至本身的用户 ID 空间。容器内的历程是运转在一个断绝的环境里,运用起来,就好像是在一个自力于宿主的体系下操纵一样。这类特征使得容器封装的运用比直接在宿主运转越发平安。

底层技术支撑:

Docker用Go编写、Namespaces(做断绝)、CGroups(做资本限定)、UnionFS(镜像和容器的分层) the-underlying-technology Docker 底层架构剖析

装置

直接前去官方文档挑选适宜的平台装置即可,比方我们这里想要在centos体系上装置 Docker,这前去地点https://docs.docker.com/install/linux/docker-ce/centos/依据提醒装置即可。

装置所需的软件包

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

增加软件堆栈,我们这里运用稳定版 Docker,实行下面敕令增加 yum 堆栈地点:

sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

装置 Docker CE

yum install docker-ce

启动 Docker CE

$ sudo systemctl enable docker
$ sudo systemctl start docker

检察版本号

[root@localhost ~]# docker version
Client: Docker Engine - Community
 Version:           19.03.4
 API version:       1.40
 Go version:        go1.12.10
 Git commit:        9013bf583a
 Built:             Fri Oct 18 15:52:22 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          19.03.4
  API version:      1.40 (minimum version 1.12)
  Go version:       go1.12.10
  Git commit:       9013bf583a
  Built:            Fri Oct 18 15:50:54 2019
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.2.10
  GitCommit:        b34a5c8af56e510852c35414db4c1f4fa6172339
 runc:
  Version:          1.0.0-rc8+dev
  GitCommit:        3e425f80a8c931f88e6d94a8c831b9d5aa481657
 docker-init:
  Version:          0.18.0
  GitCommit:        fec3683
[root@localhost ~]#

运转第一个容器

环境停当,立时运转第一个容器,实行敕令:

docker run -d -p 80:80 httpd

第一次须要下载镜像 能够比较慢 这就须要做镜像加快

镜像加快器

国内从 Docker Hub 拉取镜像有时会遇到困难,此时能够设置镜像加快器

关于运用 systemd 的体系,请在 /etc/docker/daemon.json 中写入以下内容(假如文件不存在请新建该文件)

{
  "registry-mirrors": [
    "https://dockerhub.azk8s.cn",
    "https://reg-mirror.qiniu.com"
  ]
}
注重,肯定要保证该文件相符 json 范例,不然 Docker 将不能启动。

以后重新启动效劳

搜检加快器是不是见效

[root@localhost docker]# docker info |grep Registry -A 10
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry Mirrors:
  https://dockerhub.azk8s.cn/
  https://reg-mirror.qiniu.com/
 Live Restore Enabled: false

启动一个容器:

[root@muyudembp ~]# docker run ubuntu:16.04 /bin/echo 'Hello world'
Unable to find image 'ubuntu:16.04' locally
16.04: Pulling from library/ubuntu
e80174c8b43b: Pull complete
d1072db285cc: Pull complete
858453671e67: Pull complete
3d07b1124f98: Pull complete
Digest: sha256:bb5b48c7750a6a8775c74bcb601f7e5399135d0a06de004d000e05fd25c1a71c
Status: Downloaded newer image for ubuntu:16.04
Hello world
[root@muyudembp ~]# docker run ubuntu:16.04 /bin/echo 'Hello world'
Hello world

检察镜像的汗青敕令

[root@muyudembp ~]# docker history ubuntu:16.04
IMAGE               CREATED                  CREATED BY                                      SIZE                COMMENT
5f2bf26e3524        Less than a second ago   /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
<missing>           Less than a second ago   /bin/sh -c mkdir -p /run/systemd && echo 'do…   7B
<missing>           Less than a second ago   /bin/sh -c set -xe   && echo '#!/bin/sh' > /…   745B
<missing>           Less than a second ago   /bin/sh -c rm -rf /var/lib/apt/lists/*          0B
<missing>           Less than a second ago   /bin/sh -c #(nop) ADD file:9511990749b593a6f…   123MB

进入容器

[root@muyudembp ~]# docker run -it ubuntu:16.04  /bin/bash
root@247c977ce6dc:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@247c977ce6dc:/#

启动 封闭容器

[root@muyudembp ~]# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
247c977ce6dc        ubuntu:16.04        "/bin/bash"          7 minutes ago       Up 7 minutes                             youthful_hamilton
6fe5c402d589        httpd               "httpd-foreground"   5 hours ago         Up 5 hours          0.0.0.0:80->80/tcp   sad_dijkstra
[root@muyudembp ~]# docker stop 6fe5c402d589
6fe5c402d589
[root@muyudembp ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
247c977ce6dc        ubuntu:16.04        "/bin/bash"         7 minutes ago       Up 7 minutes                            youthful_hamilton
[root@muyudembp ~]# docker start 6fe5c402d589
6fe5c402d589
[root@muyudembp ~]# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
247c977ce6dc        ubuntu:16.04        "/bin/bash"          7 minutes ago       Up 7 minutes                             youthful_hamilton
6fe5c402d589        httpd               "httpd-foreground"   5 hours ago         Up 1 second         0.0.0.0:80->80/tcp   sad_dijkstra

[root@muyudembp ~]# docker rm 247c977ce6dc
Error response from daemon: You cannot remove a running container 247c977ce6dcc47e043b4d9ef02c95b4d7d21e32009bff425314724315e4bea4. Stop the container before attempting removal or force remove

强迫封闭在运转的容器
[root@muyudembp ~]# docker rm -f 247c977ce6dc
247c977ce6dc
[root@muyudembp ~]# docker ps
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
6fe5c402d589        httpd               "httpd-foreground"   5 hours ago         Up 2 minutes        0.0.0.0:80->80/tcp   sad_dijkstra

镜像相干操纵

[root@muyudembp ~]# docker rmi -f 5f2bf26e3524
Untagged: ubuntu:16.04
Untagged: ubuntu@sha256:bb5b48c7750a6a8775c74bcb601f7e5399135d0a06de004d000e05fd25c1a71c
Deleted: sha256:5f2bf26e35249d8b47f002045c57b2ea9d8ba68704f45f3c209182a7a2a9ece5
[root@muyudembp ~]# docker image ls
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              d3017f59d5e2        17 hours ago        165MB

docker commit定制镜像

镜像是容器的基本,每次实行docker run的时刻都邑指定哪一个镜像作为容器运转的基本。在之前的例子中,我们所运用的都是来自于 Docker Hub 的镜像。直接运用这些镜像是能够满足肯定的需求,而当这些镜像没法直接满足需求时,我们就须要定制这些镜像。

如今让我们用httpd镜像做个示例。

docker run --name webserver -d -p 80:80 httpd

这条敕令会用 httpd 镜像启动一个容器,定名为 webserver,而且映射了 80 端口,如许我们能够用浏览器去接见这个 web 效劳器。

[root@muyudembp ~]# curl localhost
<html><body><h1>It works!</h1></body></html>
[root@muyudembp ~]# docker exec -it 543f2ad89f8e /bin/bash
root@543f2ad89f8e:/usr/local/apache2# echo "<h1>Hello, Docker!</h1>" > /usr/local/apache2/htdocs

退出容器

[root@muyudembp ~]# curl localhost
<h1>Hello, Docker!</h1>


我们能够用下面的敕令将容器保存为镜像:

[root@muyudembp ~]# docker commit \
>     --author "muyu" \
>     --message "修正了默许首页" \
>     webserver \
>     httpd:v2
sha256:229d8c3a7577be285e858f80c1e97dad5ddfb504fbcd5b4f1b3ad4fa40935712
[root@muyudembp ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               v2                  229d8c3a7577        11 seconds ago      165MB
httpd               latest              d3017f59d5e2        17 hours ago        165MB

[root@muyudembp ~]# docker history 229d8c3a7577
IMAGE               CREATED              CREATED BY                                      SIZE                COMMENT
229d8c3a7577        About a minute ago   httpd-foreground                                31B                 修正了默许首页
d3017f59d5e2        17 hours ago         /bin/sh -c #(nop)  CMD ["httpd-foreground"]     0B
<missing>           17 hours ago         /bin/sh -c #(nop)  EXPOSE 80                    0B
<missing>           17 hours ago         /bin/sh -c #(nop) COPY file:c432ff61c4993ecd…   138B
<missing>           17 hours ago         /bin/sh -c #(nop)  STOPSIGNAL WINCH             0B
<missing>           17 hours ago         /bin/sh -c set -eux;   savedAptMark="$(apt-m…   60.7MB
<missing>           2 weeks ago          /bin/sh -c #(nop)  ENV HTTPD_PATCHES=           0B
<missing>           2 weeks ago          /bin/sh -c #(nop)  ENV HTTPD_SHA256=133d4829…   0B
<missing>           2 weeks ago          /bin/sh -c #(nop)  ENV HTTPD_VERSION=2.4.41     0B
<missing>           2 weeks ago          /bin/sh -c set -eux;  apt-get update;  apt-g…   35.4MB
<missing>           2 weeks ago          /bin/sh -c #(nop) WORKDIR /usr/local/apache2    0B
<missing>           2 weeks ago          /bin/sh -c mkdir -p "$HTTPD_PREFIX"  && chow…   0B
<missing>           2 weeks ago          /bin/sh -c #(nop)  ENV PATH=/usr/local/apach…   0B
<missing>           2 weeks ago          /bin/sh -c #(nop)  ENV HTTPD_PREFIX=/usr/loc…   0B
<missing>           2 weeks ago          /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>           2 weeks ago          /bin/sh -c #(nop) ADD file:74b2987cacab5a6b0…   69.2MB

[root@muyudembp ~]# docker run --name webserver2 -d -p 81:80 httpd:v2
693745577ac0d47dc88680dff44afa3749ac88c39ad55deea1802c191bcb9542
[root@muyudembp ~]# curl localhost:81
<h1>Hello, Docker!</h1>

至此,我们第一次完成了定制镜像,运用的是docker commit敕令,手动操纵给旧的镜像增加了新的一层,构成新的镜像,对镜像多层存储应当有了更直观的觉得。

然则定制镜像不发起这么做 定制镜像应当运用Dockerfile来完成

敕令整顿:

容器操纵:

docker create # 建立一个容器然则不启动它
docker run # 建立并启动一个容器
docker stop # 住手容器运转,发送信号SIGTERM
docker start # 启动一个住手状况的容器
docker restart # 重启一个容器
docker rm # 删除一个容器
docker kill # 发送信号给容器,默许SIGKILL
docker attach # 衔接(进入)到一个正在运转的容器
docker wait # 壅塞一个容器,直到容器住手运转

猎取容器信息:

docker ps # 显现状况为运转(Up)的容器
docker ps -a # 显现一切容器,包含运转中(Up)的和退出的(Exited)
docker inspect # 深切容器内部猎取容器一切信息
docker logs # 检察容器的日记(stdout/stderr)
docker events # 获得docker效劳器的及时的事宜
docker port # 显现容器的端口映射
docker top # 显现容器的历程信息
docker diff # 显现容器文件体系的前后变化
docker system df # 检察镜像、容器、数据卷所占用的空间。

导出容器:

docker cp # 从容器里向外拷贝文件或目次
docker export # 将容器全部文件体系导出为一个tar包,不带layers、tag等信息

实行:

docker exec # 在容器里实行一个敕令,能够实行bash进入交互式

镜像操纵:

docker images # 显现当地一切的镜像列表
docker import # 从一个tar包建立一个镜像,每每和export连系运用
docker build # 运用Dockerfile建立镜像(引荐)
docker commit # 从容器建立镜像
docker rmi # 删除一个镜像
docker load # 从一个tar包建立一个镜像,和save合营运用
docker save # 将一个镜像保存为一个tar包,带layers和tag信息
docker history # 显现生成一个镜像的汗青敕令
docker tag # 为镜像起一个别号

镜像堆栈(registry)操纵:

docker login # 登录到一个registry
docker search # 从registry堆栈搜刮镜像
docker pull # 从堆栈下载镜像到当地
docker push # 将一个镜像push到registry堆栈中
  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
Docker基本入门

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

本文来源:搜奇网

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

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

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

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>