zoukankan      html  css  js  c++  java
  • [ Docker ] 基础使用

    1. docker-ce 版本安装

    Docker采用Linux(内核)技术,所以只能运行在Linux上,官方说Linux kernel至少3.8以上,且要是64位内核;

    1.1 新版 docker-ce 安装

    docker-ce 默认文件系统为 overlay2  建议采用 CentOS 7.4 以上版本安装。本次采用 CentOS 7.7 x64

    (1)安装依赖:

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

    (2)下载 yum 源文件

    wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo
    

    (3)把软件仓库地址替换为 TUNA:

    sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo
    

    (4)查看 docker-ce 版本

    [root@localhost ~]# yum list docker-ce --showduplicates | sort -r
    Loading mirror speeds from cached hostfile
    Loaded plugins: fastestmirror
    Installed Packages
    docker-ce.x86_64            3:19.03.2-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:19.03.1-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:19.03.0-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.9-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.8-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.7-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.6-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.5-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.4-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.3-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.2-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.1-3.el7                    docker-ce-stable 
    docker-ce.x86_64            3:18.09.0-3.el7                    docker-ce-stable 
    docker-ce.x86_64            18.06.3.ce-3.el7                   docker-ce-stable 
    docker-ce.x86_64            18.06.2.ce-3.el7                   docker-ce-stable 
    docker-ce.x86_64            18.06.1.ce-3.el7                   docker-ce-stable 
    docker-ce.x86_64            18.06.0.ce-3.el7                   docker-ce-stable 
    docker-ce.x86_64            18.03.1.ce-1.el7.centos            docker-ce-stable 
    docker-ce.x86_64            18.03.1.ce-1.el7.centos            @docker-ce-stable
    …

    yum install docker-ce  # 安装最新版
    yum install docekr-ce-<VERSION> # 安装指定版本

    这里的安装命令:

    [root@192.168.118.14 ~]#yum install docker-ce-18.06.3.ce-3.el7 -y
    

    启动、停止等命令:

    systemctl start|status|stop|enable docker
    

    docker version 查看 docker 版本等信息

    docker info 查看 docker 详细配置信息

    docker-ce 18.06 采用的默认磁盘存储驱动为 overlay2

    为 docker 运行 添加自定义参数:

    [root@192.168.118.14 ~]#cat /etc/docker/daemon.json
    {
        "registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"],
        "hosts": ["tcp://192.168.118.14:2375", "unix:///var/run/docker.sock"],
        "data-root": "/data/docker-data",
        "storage-driver": "overlay2",
        "bip": "10.0.0.1/24",
        "fixed-cidr": "10.0.0.0/24"
    }
    

    daemon.json 配置文件严格遵守 json 语法格式,不可使用单引号,全部为双引号。

    参数说明:

    "registry-mirrors"  设置 docker 下载镜像加速,可配置多个;
     "hosts": 配置 docker daemon 监听方式;
    "data-root":修改docker存储数据的位置,默认目录为 /var/lib/docker
    "storage-driver":设定存储驱动为 overlay2 ,默认驱动为 overlay2
    "bip":设置 docker0 网桥地址为10.0.0.1 此地址也为容器网关地址;
    "fixed-cidr":桥接到 docker0 上的容器地址范围是 10.0.0.0/24
    

    重启 docker 服务

    [root@192.168.118.14 ~]#systemctl restart docker
    

    上面的配置修改可通过 docker info 查看。

    2. Docker 基础命令

     2.1 启动容器

    docker run

    可通过 docker run --help 查看相关参数。

    执行一次的容器:

    启动交互式容器:

    测试一般这样启动容器

    [root@192.168.118.14 ~]#docker run --name t1 --rm -it busybox /bin/sh

    --name:为容器命名
    --rm:容器结束后,删除该容器
    -it:进入交互式模式

    想要退出直接 exit 或者 Ctrl+D

    2.2 查看容器

    docker ps [-a][-l]
    	-a 列出所有创建的容器
    	-l 列出创建的最新的容器
         不加参数,列出docker中正在运行的容器
    

    docker inspect 容器名或者容器ID
    
    docker inspect t1  # 查看容器 t1 的详细信息
    … …
    

    2.3 镜像简单管理

    查找镜像:

    docker search 镜像名

    下载镜像:

    docker pull 镜像名

    docker images 查看本地镜像文件

    2.4 守护式容器

    守护式容器:能够长期运行,没有交互式会话,适合运行应用程序和服务

    在使用容器时,必须有一个工作在前台的守护进程且进程号为 1

    通过 docker inspect ngx_1 查看容器的 ip 地址

    通过宿主机直接访问:

    通过上面 docker ps 查看 docker COMMAND 是一个运行在前台的守护进程,通过 docker exec 命令进入到 容器内查看:

    docker exec  可直接进入容器内部

    nginx master 进程PID 为 1

    通过 docker logs 容器名 查看容器日志:

    nginx master 进程PID 为 1

    通过 docker logs 容器名 查看容器日志:

    通过 docker top 查看容器内进程

    停止守护式容器:docker stop 容器名
    直接杀掉容器:docker kill 容器名
    删除容器:docker rm 容器名

    2.5 容器内的端口映射

    docker [-P|-p]
    
    -P: 将为容器暴露的所有端口进行映射:docker run -P nginx
    -p:指定映射容器的端口:docker run -p 80 nginx
    

    访问宿主机的映射端口:

    docker run --name ngx_1 --rm -P -d nginx:alpine   --> 宿主机的端口将是随机映射

    docker run --name ngx_1 --rm -p 8080:80 -d nginx:alpine --> 11对应的映射,将容器的80端口映射到宿主机的 8080 端口

    可以绑定IP地址:

    docker run --name ngx_1 --rm -p 192.168.118.14:8080:80 -d nginx:alpine

    2.6 导入导出 Docker 镜像

    导出使用 docker save 容器名 > 容器名.tar.gz 
    导入使用 docker load < 容器名.tar.gz 
    

    save: 导出

    load: 导入

    3. 镜像管理

    3.1 基础操作

    查看镜像:

    docker images
    

    TAG 的作用主要有两点:

    1. 为镜像起一个容易理解的名字
    2. 可以通过docker tag 来重新制定镜像的仓库,这样在push时自动提交到仓库
    REPOSITORY:包含仓库信息,如 super.com/centos , 表示 super.com 仓库的 centos 名称镜像
    TAG:同一个名称的镜像可能有多个版本,默认为 latest 版本(最新版),TAG 就标明了版本
    IMAGE ID:镜像唯一 ID
    

    因此可以通过两个方法确定某个唯一的镜像:

    1. REPOSITORY:TAG 如 super.com/centos
    2. IMAGE ID:如 19485c79a9bb

    注意:如果直接使用 “REPOSITORY”,则默认“TAG”为 “latest”,镜像 redis 就标识为 "redis:latest"

    镜像名 "REPOSITORY:TAG" 可以用下面的命令重命名:

    docker tag
    

    注意:旧的镜像和新的镜像 IMAGE ID  是一致的。

    拉取镜像:
    docker pull 镜像名
    
    推送镜像:
    docker push NAME[:TAG]
    

    3.2 私有仓库搭建及测试

    192.168.118.14  私有仓库服务器
    192.168.118.15 客户端

    docker 确实很好用,一条命令,一个私有仓库就搭建完毕。

    docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry
    

    参数说明:

    -d:后台运行
    -v:把宿主机的 /opt/registry目录绑定 到 容器 /var/lib/registry 目录
    -p:映射端口;访问宿主机的 5000端口就访问到 registry 容器的服务
    --name registry 创建容器命名为 registry,可以随意定义
    registry:通过这个镜像启动,如果本地没有,则会从 dockerhub 上下载再次启动
    

    测试镜像仓库的所有镜像:

    curl http://192.168.118.14:5000/v2/_catalog
    

    192.168.118.15

    (1)修改 /etc/docker/daemon.json

    添加:
        "insecure-registries": ["192.168.118.14:5000"]
    重启docker 服务
    [root@192.168.118.15 ~]#systemctl restart docker
    

    (2)为本地的镜像打标签

    docker tag busybox:latest 192.168.118.14:5000/busybox:v0.1-1
    

    (3)将镜像上传到私有仓库

    docker push 192.168.118.14:5000/busybox
    

    测试:

      删除本地的镜像,尝试从 私有仓库拉取镜像

    3.3 镜像制作

    (1)将容器变成镜像

    docker commit <container>[repo:tag]
    -a, --author="" 指定制作镜像的作者
    -m, --message="" 记录构建镜像的信息
    -p, --pause=true docker commit 命令会将正在执行的容器暂停,加上 -p 参数即不暂停运行的容器
    

    优缺点:
    方便快捷,
    不规范,无法自动化

    示例:

    [root@192.168.118.14 ~]#docker run --name t1 -it busybox /bin/sh
    / # echo "<h1>hello busybox server.</h1>" > /tmp/index.html
    / # httpd --help
    BusyBox v1.31.0 (2019-09-04 17:25:45 UTC) multi-call binary.
    
    Usage: httpd [-ifv[v]] [-c CONFFILE] [-p [IP:]PORT] [-u USER[:GRP]] [-r REALM] [-h HOME]
    or httpd -d/-e/-m STRING
    
    Listen for incoming HTTP requests
    
    	-i		Inetd mode
    	-f		Don't daemonize
    	-v[v]		Verbose
    	-p [IP:]PORT	Bind to IP:PORT (default *:80)
    	-u USER[:GRP]	Set uid/gid after binding to port
    	-r REALM	Authentication Realm for Basic Authentication
    	-h HOME		Home directory (default .)
    	-c FILE		Configuration file (default {/etc,HOME}/httpd.conf)
    	-m STRING	MD5 crypt STRING
    	-e STRING	HTML encode STRING
    	-d STRING	URL decode STRING
    / # httpd -f -h /tmp/
    

    开启另一个ssh会话,进行 commit 操作

    4. docker 常见问题

    ssh server 是否应该包含到镜像中?

    用 ssh server 管理容器并不理想,建议不用

    一个容器究竟运行几个程序?

    一个程序比较好,因为docker 只管前台程序是否正常

    程序日志输出的问题?

    通过 volume 或者 syslog 方式

  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/hukey/p/11677392.html
Copyright © 2011-2022 走看看