zoukankan      html  css  js  c++  java
  • Docker使用

    ###首先我们先要对docker有一个了解:Docker是一个开源的容器引擎,它基于LXC容器技术,使用Go语言开发。
    源代码托管在Github上,并遵从Apache2.0协议。
    Docker采用C/S架构,其可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。
    简单来说:Docker就是一种快速解决生产问题的一种技术手段。我们也可以将他理解为实现虚拟技术的一种

    [docker官网](http://www.docker.com)

    [github docker源码](https://github.com/docker/docker)

    1.在Ubuntu中安装docker

    添加Docker官方GPG key

      sudo apt-key add gpg

    安装Docker稳定版

    sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

    检查Docker是否安装正确

    sudo docker run hello-world

    如果出现下面的结果,证明安装成功

    为了避免每次命令都输入sudo,可以设置用户权限,注意执行后须注销重新登录

    sudo usermod -a -G docker $USER


    2.docker的启动与停止
    # 启动docker
    sudo service docker start
    
    # 停止docker
    sudo service docker stop
    
    # 重启docker
    sudo service docker restart


    3.docker镜像操作

    要想获取某个镜像,我们可以使用pull命令,从仓库中拉取镜像到本地,如

    docker image pull library/hello-world

    删除镜像

    docker image rm 镜像名或镜像id
    

    docker image rm hello-world

    查看镜像历史

    docker history 镜像名:版本

    查看镜像

    docker images

    镜像 重命名
    命令格式:
    docker tag [old_image]:[old_version] [new_image]:[new_version]
    命令演示:
    docker tag nginx:latest sswang-nginx:v1.0

    4.docker容器操作

    创建容器

    docker run [option] 镜像名 [向启动容器中传入的命令]

    常用的选项如下

    交互式容器

    例如,创建一个交互式容器,并命名为myubuntu

    docker run -it --name=myubuntu ubuntu /bin/bash

    守护式容器

    创建一个守护式容器:如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。在容器内部exit退出时,容器也不会停止。

    docker run -dit --name=myubuntu2 ubuntu

    进入已运行的容器

    docker exec -it 容器名或容器id 进入后执行的第一个命令
    

    docker exec -it myubuntu2 /bin/bash

    查看容器

    # 列出本机正在运行的容器
    docker container ls
    
    # 列出本机所有容器,包括已经终止运行的
    docker container ls --all

    删除容器

    docker container rm 容器名或容器id

    停止与启动容器

    # 停止一个已经在运行的容器
    docker container stop 容器名或容器id
    
    # 启动一个已经停止的容器
    docker container start 容器名或容器id
    
    # kill掉一个已经在运行的容器
    docker container kill 容器名或容器id

    删除容器

    docker container rm 容器名或容器id

    5. 将容器保存为镜像

    我们可以通过如下命令将容器保存为镜像

    docker commit 容器名 镜像名

    6. 镜像备份与迁移

    我们可以通过save命令将镜像打包成文件,拷贝给别人使用

    docker save -o 保存的文件名 镜像名
    

    docker save -o ./ubuntu.tar ubuntu
    

    在拿到镜像文件后,可以通过load方法,将镜像加载到本地

    docker load -i ./ubuntu.tar

    #7.仓库管理

    ##1)仓库类型:

    &nbsp公有仓库:Docker hub、Docker cloud等

    &nbsp私有仓库:registry、harbor等

    &nbsp本地仓库:在当前主机存储镜像的地方

    ##2)仓库相关命令:

    ```

    docker login [仓库名称]
    docker pull [镜像名称]
    docker push [镜像名称]
    docker search [镜像名称]

    ```

    ##3).私有仓库的部署

    ###实施步骤:

    ###1>下载registry镜像

    ###docker pull registry
    ###2>启动仓库容器
    ###docker run -d -p 5000:5000 registry

    ###3>检查容器效果
    ###curl 127.0.0.1:5000/v2/_catalog

    ###4>配置容器权限

    ```
    sudo vim /etc/docker/daemon.json
    {"registry-mirrors": ["http://74f21445.m.daocloud.io"], "insecure-registries": ["192.168.8.14:
    5000"]}

    ```
    ###注意:私有仓库的ip地址是宿主机的ip,而且ip两侧有双引号
    ###5>重启docker服务

    ###systemctl restart docker
    ###systemctl status docker

    ###6>启动容器

    ###docker start registry 容器的 id
    ###7>标记镜像
    ###docker tag hello-author1 192.168.8.14:5000/hello-author1
    ###8>提交镜像
    ###docker push 192.168.8.14:5000/hello-author1
    ###9>下载镜像
    ###docker pull 192.168.8.14:5000/hello-author1

     #8.数据管理

    ###docker的镜像是只读的,虽然依据镜像创建的容器可以进行操作,但是我们不能将数据保存到容器中,因为容器会

    ###随时关闭和开启,容器一旦破坏,那所有的数据也会消失,解决办法就是将宿主机的磁盘与容器的磁盘进行映射,即通过数据卷和数据卷容器

    ###下面我们只对数据卷进行演示,对于数据卷的管理我们从两个方面来说

    ###1.目录

    ```

    #命令格式:
    docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]
    #命令演示:
    #创建测试文件
    echo "hello" > /tmp/hello.txt
    #启动一个容器,挂载数据卷
    docker run -itd --name test1 -v /tmp:/test1 nginx
    #测试效果
    docker exec -it a53c61c77 /bin/bash
    root@a53c61c77bde:/# cat /test1/hello.txt
    hello

    ```

    ###2.文件

    ```
    #命令格式:
    docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称] [命令(可选)]
    #注意:容器里面的文件虽然可以改名,但类型必须和宿主机文件一致
    #命令演示:
    #创建测试文件
    echo "hello1" > /tmp/hello1.txt
    #启动一个容器,挂载数据卷
    #内部架构文档
    15
    docker run -itd --name test2 -v /tmp/hello1.txt:/nihao/nihao.sh nginx
    #测试效果
    docker exec -it 84c37743 /bin/bash
    root@84c37743d339:/# cat /nihao/nihao.sh
    hello1

    ```

    ##数据卷的删除操作

    ```

    docker volume rm
    docker volume prune

    ```

    #9.网络管理

    ##常见的docker的网络模式:

    ###bridge模式:相当于Ubuntu的NAT模式,与宿主机共用一个ip地址,并没有真实的ip,只有一个虚拟的IP地址,默认的是这种网络模式

    ###host模式:容器和宿主机共享一个ip,推荐使用这种网络模式

    ##切换网络模式的命令:

    ```

    docker run --network=host ......

    ```

    ###注:还有其他的几种网络模式,这里我们只介绍这常用的两种

    人生没有白走的路,每一步都算数 恐惧是万恶之源
  • 相关阅读:
    Windows 8实例教程系列 开篇
    qt 开发发布于 windeploy.exe
    qt qoci 测试验证
    vmware vmx 版本不兼容
    qt oracle
    vc qt dll
    QOCIDriver unable to create environment
    qoci 编译完 放置位置 具体根据情况
    calling 'lastError' with incomplete return type 'QSqlError' qsqlquer
    Hbase 操作工具类
  • 原文地址:https://www.cnblogs.com/niusha/p/10296626.html
Copyright © 2011-2022 走看看