docke基础学习笔记

1. 什么是docker

       Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

2. 为什么使用docker

       快速的交付和部署

       更高效的资源利用

       轻松的迁移和扩展

       简单的更新和管理

3. docker与传统虚拟机技术特性比较


4. docker镜像

        docker镜像类似于虚拟机镜像,可以将他理解为一个面向docker引擎的只读模板,包含了文件系统。例如,一个镜像可以包含一个完整的ubuntu操作系统环境,可以把他称为ubuntu镜像。镜像也可以安装Apache应用程序,可以把它称为一个apache镜像。

5. docker容器

        docker容器类似于一个轻量级的沙箱,docker利用容器来运行和隔离应用。

        容器是从镜像了创建运行实例,可以将其启动、开始等操作,这些都是相互隔离、互不可见的。

        镜像自身是只读的。容器从镜像启动的时候,docker会在镜像的最上层创建一个可写层,镜像本身不变。

6. docker仓库

       docker仓库类似与代码仓库,是docker集中存放镜像文件的场所。

7. 安装docker

 1)  安装Docker的先决条件

  • 运行64位CPU构架的计算机(目前只能是x86_64和amd64),请注意,Docker目前不支持32位CPU。
  • 运行Linux 3.8或更高版本内核。一些老版本的2.6.x或其后的内核也能够运行Docker,但运行结果会有很大的不同。而且,如果你需要就老版本内核寻求帮助时,通常大家会建议你升级到更高版本的内核。
  • 内核必须支持一种适合的存储驱动(storage driver),
    例如: Device Manage;AUFS;vfs;btrfs;ZFS
    默认存储驱动通常是Device Mapper或AUFS
  • 内核必须支持并开启cgroup和命名空间(namespace)功能。

  • 安装linux-iamge-extra-*的kernel包。这个包允许你使用aufs存储驱动。

  • ~$ sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

  • 检查Ubuntu内核版本

    ~$ uname -a

  • 检查Device Mapper

    ~$ ls -l /sys/class/misc/device-mapper

2)安装Docker
  • 添加Docker的APT仓库

    ~$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-trusty main > /etc/apt/sources.list.d/docker.list"
    
  • 检测curl命令是否安装

    ~$ whereis curl
    curl: /usr/bin/curl /usr/share/man/man1/curl.1.gz
    
  • 增加Docker仓库的新GPG密钥

    ~$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    
  • 更新APT软件包索引

    ~$ sudo apt-get update
    
  • 安装Docker

    ~$ sudo lsb_release --codename | cut -f2       
    xenial
    ~$ sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-xenial main > /etc/apt/sources.list.d/docker.list"
    ~$ cat /etc/apt/sources.list.d/docker.list
    deb https://apt.dockerproject.org/repo ubuntu-xenial main
    ~$ sudo apt-get update 
    ~$ sudo apt-get install docker-engine
    
  • 查看docker是否安装成功

    ~$ sudo docker info
3)使用脚本安装  
sudo apt-get -y install curl
curl https://get.docker.com/ | sudo sh

8. 镜像常用操作

1)获取镜像
docker pull ubuntu  默认下载最新版本

docker pull ubuntu:14.04    指定版本下载

docker pull dl.dockerpool.com:500/ubuntu    从指定地址下载

docker run -t -i ubuntu /bin/bash

2)查看镜像

docker images  列出所有镜像

docker tag dl.dockerpool.com:500/ubuntu  tag/ubuntu 为镜像添加新的标签

docker inspect tag/ubuntu   返回镜像详细json格式的信息

3)查找镜像

docker search mysql  查找mysql镜像

4)删除镜像

docker rmi tag/ubuntu  删除镜像

docker rmi tag/ubuntu  强制删除创建过容器的镜像

5)创建镜像

docker commit -m “test” -a “zhuge” 容器id  test

6)模板导入

sudo cat ubuntu-14.04.tar.gz | docker import - ubuntu14.04

7) 存入和载入镜像

docker save -o ubuntu14.04.tar ubuntu14.04   存入

docker load -- input ubuntu14.04.tar                载出

8)上传镜像

docker push tag/ubuntu    第一次使用会要求输入用户名和密码

9. 容器常用操作

1)创建容器

docker create -it ubuntu.14.04

2)创建并启动

docker run -it ubuntu:14.04 /bin/bash

检查本地是否有指定镜像,没有的话从仓库下载

利用镜像创建并启动一个容器

分配一个文件系统,在只读的镜像层外面挂在一层可读可写层

桥接一个虚拟网桥接口到容器中

配置容器ip执行用户指定的应用程序

执行完后容器终止

docker run -d ubuntu:14.04 /bin/bash  创建后台运行容器

3) 终止容器

docker stop 容器id

docker kill 信号

docker ps -a -q 查看所有停止的容器

4)进入容器

docker attach 容器id 
docker exec 

5)删除容器

docker rm 容器id
-f  强制删除
-l  删除链接
-v 删除数据卷

6)导出容器

docker export 容器id test_for_run.tar

7)导入容器

docker import  test_for_run.tar

10. 安装私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。
1)下载
sudo docker pull registry
2)运行registry
$ sudo docker run -d -p 5000:5000 --name myregistry registry
这将使用官方的 registry 镜像来启动本地的私有仓库。 用户可以通过指定参数来配置私有仓库位置,例如配置镜像存储到 Amazon S3 服务。
$ sudo docker run \
     -e SETTINGS_FLAVOR=s3 \
     -e AWS_BUCKET=acme-docker \
     -e STORAGE_PATH=/registry \
     -e AWS_KEY=AKIAHSHB43HS3J92MXZ \
     -e AWS_SECRET=xdDowwlK7TJajV1Y7EoOZrmuPEJlHYcNP2k4j49T \
     -e SEARCH_BACKEND=sqlalchemy \
     -p 5000:5000 \
     registry
此外,还可以指定本地路径(如 /home/user/registry-conf )下的配置文件
$ sudo docker run -d -p 5000:5000 -v /home/user/registry-conf:/registry-conf -e DOCKER_REGISTRY_CONFIG=/registry-conf/config.yml registry
默认情况下,仓库会被创建在容器的 /tmp/registry 下。可以通过 -v 参数来将镜像文件存放在本地的指定路径。 例如下面的例子将上传的镜像放到 /opt/data/registry 目录
$ sudo docker run -d -p 5000:5000 --name myregistry -v /opt/data/registry:/tmp/registry registry 
3) 标记镜像
$ sudo docker tag ba58 192.168.7.26:5000/test
root ~ # docker images
REPOSITORY                        TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ubuntu                            14.04               ba5877dc9bec        6 weeks ago         192.7 MB
192.168.7.26:5000/test            latest              ba5877dc9bec        6 weeks ago         192.7 MB
4)上传镜像
sudo docker push 192.168.7.26:5000/test
5)使用curl查看仓库镜像
$ curl http://192.168.7.26:5000/v1/search 

11. 数据卷

1)数据卷文件

docker run -d --name web -v / webapp trarning/webapp python app.py   在容器内创建一个数据卷

docker run -d --name web -v / src/webapp:/opt/webapp training/webapp python app.py   挂在一个主机目录作为数据卷

docker run -d -p --name -v / src/webapp:/opt/webapp:ro training/webapp pythpn app.py   创建一个只读的数据卷  rw:读写权限

2)数据卷容器

docker run -it -v /dbdata --name dbdata ubuntu:14.04  创建一个数据卷容器,其中创建一个数据卷挂载到 /dbdata

docker run -it --volumes-from dbdata --name db1 ubuntu   使用volumes-from来挂载dbdata容器中的数据卷

3)备份

docker run --volumes-from dbdata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar /dbdata  将/dbdata下内容备份为容器内的/backup/backup.tar

4)恢复
docker run -v /dbdata --name dbdata2 ubuntu /bin/bash   创建一个新的带有数据卷的容器dbdata2
docker run --volumes-from dbdata2 -v $(pwd):/backup busybox tar xvf /back/back.tar 解压恢复数据到数据卷

12. 网络基础配置

1)端口映射

docker run -d -p training/webapp python app.py  -p随机分配一个端口映射到expose端口,随机分配49000-49900之间的端口

docker ps -l显示最近创建的容器

docker logs 容器id  查看容器应用日志

docker run -d -p 5000:5000 training/webapp  python python.py   映射具体端口,可以同时指定多个-p

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py  映射指定地址的端口号

docker port 容器id   查看容器端口

docker inspect 容器id  查看容器详细信息

2)容器互联

docker run -d --name db training/postgres   创建一个新的数据库容器

docker rm -f web 删除之前创建的web容器

docker run -d -p --name web --link db:db training/webapp python app.py   创建一个name:alias容器




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值