zoukankan      html  css  js  c++  java
  • Docker简易使用手册

    1. Docker介绍

    Docker 包括三个基本概念:
    • 镜像(Image)
      • Docker的镜像概念类似于虚拟机里的镜像,是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。
      • 例如:一个镜像可以包含一个完整的 ubuntu 操作系统环境,里面仅安装了MySQL或用户需要的其它应用程序。
    • 容器(Container)
      • Docker容器是由Docker镜像创建的运行实例,类似VM虚拟机,支持启动,停止,删除等。
      • 每个容器间是相互隔离的,容器中会运行特定的应用,包含特定应用的代码及所需的依赖文件。
    • 仓库(Repository)
      • Docker的仓库类似Github一样的,用于托管镜像的。

    2. Docker的安装(ubuntu 16.04)

    1. 安装Docker CE
    • 本地安装:
    $ cd docker源码目录
    $ sudo apt-key add gpg
    $ sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb
    
    • 在线安装:
    # 查看支持的docker版本
    $ apt-cache madison docker-ce
    # 安装docker
    $ apt-get install docker-ce -y
    
    2. 检查Docker CE是否安装正确
    $ sudo docker run hello-world
    
    3. 启动与停止
    • 安装完成Docker后,默认已经启动了docker服务。
    # 启动docker
    $ sudo service docker start
    # 重启docker
    $ sudo service docker restart
    # 停止docker
    $ sudo service docker stop
    # 查看状态
    $ sudo service docker status
    
    4. docker基本目录简介
    /etc/docker/            docker的认证目录
    /var/lib/docker/        docker的应用目录
    

    3. Docker镜像操作

    它是一个只读的文件,就类似于我们安装操作系统时候所需要的那个iso光盘镜像。

    这里的镜像就是一个能被docker运行起来的一个程序。

    容器的部署依赖于镜像,但运行也依赖镜像。就像某些软件运行必须放光盘。

    1.镜像列表
    $ sudo docker search ubuntu # 搜索镜像
    $ sudo docker image ls # 查看在运行的镜像
    $ sudo docker image ls -all # 查看全部镜像
    $ sudo docker images # 查看全部镜像
    
    * REPOSITORY:镜像所在的仓库名称 
    * TAG:镜像标签 
    * IMAGEID:镜像ID 
    * CREATED:镜像的创建日期(不是获取该镜像的日期) 
    * SIZE:镜像大小
    
    2.从仓库拉取镜像
    # 从官方仓库中拉取镜像
    $ sudo docker image pull 镜像名称
    $ sudo docker image pull library/镜像名称
    $ sudo docker image pull ubuntu:16.04 
    $ sudo docker image pull library/ubuntu:16.04
    
    # 从私有仓库中拉取镜像
    $ sudo docker image pull 仓库名称/镜像名称
    $ sudo docker image pull itcast/fastdfs
    
    # 从镜像文件中导入镜像
    $ sudo docker load -i 文件路径/备份文件
    $ sudo docker load -i elasticsearch-ik-2.4.6_docker.tar
    $ sudo docker load < nginx.tar
    
    3. 镜像重命名
    $ sudo docker tag [old_image]:[old_version] [new_image]:[new_version]
    $ sudo docker tag nginx:latest sswang-nginx:v1.0
    
    
    4. 删除镜像
    $ sudo docker rmi [image_id/image_name:image_version]
    $ sudo docker rmi 3fa822599e10
    $ sudo docker image rm 镜像名或镜像ID
    $ sudo docker image rm hello-world
    
    

    4. Docker容器操作

    容器就类似于我们运行起来的一个操作系统,而且这个操作系统启动了某些服务。
    这里的容器指的是运行起来的一个Docker镜像。

    1.容器列表

    # 查看正在运行的容器
    $ sudo docker container ls
    # 查看所有的容器
    $ sudo docker container ls --all
    $ sudo docker ps
    
    

    2.创建容器

    $ sudo docker run [option] 镜像名 [向启动容器中传入的命令]
    
    
    常用可选参数说明:
    * --name 为创建的容器命名。
    * -i 表示以《交互模式》运行容器。
    * -t 表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
    * -v 表示目录映射关系,即宿主机目录:容器中目录。
    	 注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。 
    * -d 会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器)。 
    * -p 表示端口映射,即宿主机端口:容器中端口。
    * --network=host 表示将主机的网络环境映射到容器中,使容器的网络与主机相同。
    
    
    # 新建 tracker 容器并将 运行目录 映射到宿主机的 /var/fdfs/tracker目录中。
    $ sudo docker run -dit --name tracker --network=host -v /var/fdfs/tracker:/var/fdfs delron/fastdfs tracker
    
    # 我们将 storage 运行目录映射到宿主机的 /var/fdfs/storage目录中。
    # TRACKER_SERVER=Tracker的ip地址:22122
    sudo docker run -dit --name storage --network=host -e TRACKER_SERVER=192.168.229.134:22122 -v /var/fdfs/storage:/var/fdfs delron/fastdfs storage
    
    

    3.交互式容器

    $ sudo docker run -it --name=ubuntu1 ubuntu /bin/bash
    
    
    在容器中可以随意执行linux命令,就是一个ubuntu的环境。
    当执行 exit/ctrl+D 命令退出时,该容器随之停止。
    
    

    4.守护式容器

    # 开启守护式容器
    $ sudo docker run -dit --name=ubuntu2 ubuntu
    
    
    # 进入到容器内部交互环境
    $ sudo docker exec -it 容器名或容器id 进入后执行的第一个命令
    $ sudo docker exec -it ubuntu2 /bin/bash
    
    
    如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。
    在容器内部执行 exit 命令退出时,该容器后台继续运行。
    
    

    5.停止和启动容器

    # 停止容器
    $ sudo docker container stop 容器名或容器id
    # kill掉容器
    $ sudo docker container kill 容器名或容器id
    # 启动容器
    $ sudo docker container start 容器名或容器id
    
    

    6. 进入和退出已创建的容器

    # 进入容器:
    $ sudo docker exec -it 容器id /bin/bash
    $ sudo docker exec -it d74fff341687 /bin/bash
    
    
    # 退出容器:
    方法一:exit
    方法二:Ctrl + D
    
    

    7.删除容器

    • 正在运行的容器无法直接删除。
    $ sudo docker container rm 容器名或容器id
    
    

    5. Docker镜像资源操作

    制作备份镜像

    # 将容器制作成镜像
    $ sudo docker commit -m '改动信息' -a "作者信息" [container_id] [new_image:tag]
    $ sudo docker commit 现容器名 新镜像名
    
    
    # 镜像打包备份
    $ sudo docker save -o 保存的文件名 镜像名
    
    

    6. 日志、信息

    # 查看容器运行日志
    $ docker logs [容器id]
    $ docker logs 7c5a24a68f96
    
    # 查看容器详细信息
    $ docker inspect [容器id]
    $ docker inspect 930f29ccdf8a
    
    # 查看容器网络信息
    $ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器id]
    
    

    7. 仓库管理

    仓库就类似于我们在网上搜索操作系统光盘的一个镜像站。

    这里的仓库指的是Docker镜像存储的地方。

    Docker的仓库有三大类:

    公有仓库:Docker hub、Docker cloud、等
    私有仓库:registry、harbor等
    本地仓库:在当前主机存储镜像的地方。
    
    

    和仓库相关的命令:

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

    创建仓库流程

    ​ 1、根据registry镜像创建容器

    ​ 2、配置仓库权限

    ​ 3、提交镜像到私有仓库

    ​ 4、测试

    实施方案

    # 下载registry镜像
    $ docker pull registry
    
    # 启动仓库容器
    $ docker run -d -p 5000:5000 registry
    
    # 检查容器效果
    $ curl 127.0.0.1:5000/v2/_catalog
    
    # 配置容器权限
    $ vim /etc/docker/daemon.json
    {"registry-mirrors": ["http://74f21445.m.daocloud.io"], "insecure-registries": ["192.168.8.14:5000"]}
    注意:
    私有仓库的ip地址是宿主机的ip,而且ip两侧有双引号
    
    # 重启docker服务
    $ systemctl restart docker
    $ systemctl status docker
    
    **效果查看**
    # 启动容器
    $ docker start 315b5422c699
    
    # 标记镜像
    $ docker tag ubuntu-mini 192.168.8.14:5000/ubuntu-14.04-mini
    
    # 提交镜像
    $ docker push 192.168.8.14:5000/ubuntu-14.04-mini
    
    # 下载镜像
    $ docker pull 192.168.8.14:5000/ubuntu-14.04-mini
    
    

    8. 数据管理

    数据卷

    就是将宿主机的某个目录,映射到容器中,作为数据存储的目录,我们就可以在宿主机对数据进行存储

    格式:-v 宿主机文件:容器文件

    命令格式:
    docker run -itd --name [容器名字] -v [宿主机目录]:[容器目录] [镜像名称] [命令(可选)]
    docker run -itd --name test1 -v /tmp:/test1 nginx # 启动一个容器,挂载数据卷
    docker run -itd --name [容器名字] -v [宿主机文件]:[容器文件] [镜像名称] [命令(可选)]
    docker run -itd --name test2 -v /tmp/file1.txt:/nihao/nihao.sh nginx # 将文件同步
    docker volume rm # 删除数据卷
    docker volume prune # 删除数据卷
    
    

    数据卷容器

    将宿主机的某个目录,使用容器的方式来表示,然后其他的应用容器将数据保存在这个容器中,达到大批量应用数据同时存储的目的

    **创建一个数据卷容器**
    
    命令格式:
    docker create -v [容器数据卷目录] --name [容器名字] [镜像名称] [命令(可选)]
    
    执行效果:
    docker create -v /data --name v-test nginx
    
    **创建两个容器,同时挂载数据卷容器**
    
    命令格式:
    docker run --volumes-from [数据卷容器id/name] -tid --name [容器名字] [镜像名称] [命令(可选)]
    
    执行效果:
    创建 vc-test1 容器
    docker run --volumes-from 4693558c49e8 -tid --name vc-test1 nginx /bin/bash
    
    创建 vc-test2 容器
    docker run --volumes-from 4693558c49e8 -tid --name vc-test2 nginx /bin/bash
    
    **确认卷容器共享**
    进入vc-test1,操作数据卷容器
    ~# docker exec -it vc-test1 /bin/bash
    root@c408f4f14786:/# ls /data/
    root@c408f4f14786:/# echo 'v-test1' > /data/v-test1.txt
    root@c408f4f14786:/# exit
    
    进入vc-test2,确认数据卷
    ~# docker exec -it vc-test2 /bin/bash
    root@7448eee82ab0:/# ls /data/
    v-test1.txt
    root@7448eee82ab0:/# echo 'v-test2' > /data/v-test2.txt
    root@7448eee82ab0:/# exit
    
    回到vc-test1进行验证
    ~# docker exec -it vc-test1 /bin/bash
    root@c408f4f14786:/# ls /data/
    v-test1.txt  v-test2.txt
    root@c408f4f14786:/# cat /data/v-test2.txt 
    v-test2
    
    回到宿主机查看/data/目录
    ~# ls /data/
    ~# 
    
    
  • 相关阅读:
    MyEclipse中选择一行的快捷键
    myeclipse选中一行的内容,快速移动复制到某一行。
    为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
    webpack-dev-server
    webpack-clean-webpack-plugin
    --save-dev和--save的区别
    extract-text-webpack-plugin 的使用及安装
    this 指向详细解析(箭头函数)
    CSS三:CSS的三种引入方式
    Webpack中的css-loader 和style-loader
  • 原文地址:https://www.cnblogs.com/sablier/p/10989383.html
Copyright © 2011-2022 走看看