ITPub博客

首页 > 云计算 > > Docker总结

Docker总结

作者:浪花小雨滴 时间:2020-05-09 11:56:45 0 删除 编辑

谨以此文,纪念匆匆忙忙学习docker之路。

第1章 初识docker

  • 容器与docker的对比

第2章 Docker的核心概念与安装

  • 镜像
  • 容器
  • 仓库

安装可以用yum安装,如果安装不成功,可能是本地时间设置不正确导致。

第3章 镜像

//拉取镜像
docker pull NAME[:TAG]

//查看镜像信息
docker images
docker inspect NAME[:TAG]  //查看docker详细信息
docker history NAME[:TAG]  //查看镜像各层历史

//搜寻
docker search --filter=is-official=true nginx

//删除和清理
docker rmi IMAGE_ID
docker image prune  //清洗临时镜像文件

//创建镜像:3种方式
docker commit -a 'author' -m 'message' CONTAINER_ID  Image_Name  //通过容器创建
cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04   //导入方式
docker build -f docker-file Image_Name //通过docker-file进行创建

//存出和载入镜像
docker save -o ubuntu_18.04.tar ubuntu:18.04   //存出镜像 
docker load -i ubuntu_18.04.tar   //导入镜像

//上传镜像
docker push NAME:TAG

镜像由一层一层的文件系统组成,称为:UnionFS

  • 最底层:bootfs,包含加载器和内核。
  • 其次:rootfs,包含linux下不同版本的基本命令、工具和程序库。底层使用宿主机的内核,这也是为什么centos这样的镜像非常小的原因。

优点:共享资源。很多资源都是相同的,对于unionFS,docker只需要下载一份。

第4章 容器

//创建容器
docker create -it ubuntu:latest

//创建&&运行容器; i交互,t:伪终端
docker run -it ubuntu:latest /bin/echo 'hello world'

//守护进程
docker run -d ubuntu:latest

//查看容器
docker ps

//终止容器
docker stop CONTAINER_ID  //先发送SIGTERM信号,10s后发送SIGKILL信号
docker kill CONTAINER_ID  //直接发送SIGKILL信号杀死容器

//启动/重启容器
docker start CONTAINER_ID
docker restart CONTAINER_ID

//进入容器
docker exec -it CONTAINER_ID

//删除容器
docker rm CONTAINER_ID

//导出容器
docker export CONTAINER_ID > export_docker.tar
//导入容器
cat export_docker.tar | docker import - test/ubuntu:v1.0  //生成的是镜像

第5章 仓库

docker hub //官方

docker pool //国内专业docker社区

注册本地仓库
docker run -d -p 5000:5000 registry  //创建本地仓库

第6章 数据管理

//创建一个数据卷
docker run -d -v /dbdata  --name dbdata ubuntu

//挂载主机目录作为数据卷
docker run -d -v ~/tmp:/var CONTAINER_ID   //挂载一个数据卷 

//多容器挂载数据卷容器,共享数据
docker run -d --volumes-from dbdata --name db1 ubuntu
docker run -d --volumes-from dbdata --name db2 ubuntu

//数据卷容器备份
docker run --volumes-from dbdata -v ${pwd}:/backup --name worker ubuntu
tar cvf /backup/backup.tar /dbdata

//恢复则相反

第7章 网络基础配置

//映射端口
docker run -d -P redis  //主机的49000~49900任意一个端口映射到容器内部
docker run -d -p 6379:6379 redis  //指定端口

//建立链接
docker run -d --name db mysql   //先创建一个mysql容器,等待被链接
docker run -d --name Web --link db:db ubuntu

第8章 使用Dockerfile创建镜像

  • Dockerfile的四部分:
    • 基础镜像信息
    • 维护者信息
    • 镜像操作指令
    • 容器启动时执行指令

创建镜像 (最重要的肯定是Dockerfile基本语法了)

docker build Dockerfile   

关键字:

  • FROM : 基础镜像
  • MAINTAINER :镜像维护者的信息
  • RUN :容器构建时需要运行的命令
  • EXPOSE :容器对外暴露的端口
  • WORKDIR :创建容器后,终端的落脚点
  • ENV :构建镜像中设置的环境变量
  • ADD :添加文件&&解压缩
  • COPY :复制文件
  • VOLUME :容器数据卷
  • CMD :启动容器时运行的命令,后面的覆盖前面的,最多运行一个
  • ENTRYPOINT :容器启动时运行的命令,和CMD的唯一区别在于不会覆盖
  • ONBUILD :构建时执行父镜像的命令

启动redis

docker run -p 6379:6379 --name redis 
-v /home/wangyunlong.1995/redis/data:/data 
-v /home/wangyunlong.1995/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf 
-d dcf9ec9265e0 
redis-server /usr/local/etc/redis/redis.conf 
--appendonly yes

启动mysql

docker run -p 3306:3306 --name mysql 
-v /home/wangyunlong.1995/mysql/conf:/etc/mysql/conf.d  
-v /home/wangyunlong.1995/mysql/logs:/logs 
-v /home/wangyunlong.1995/mysql/data:/var/lib/mysql 
-e MYSQL_ROOT_PASSWORD 123456 
-d d435eee2caa5

备份数据

docker exec 870e134ef76b 
sh -c 
'exec mysqldump --all-databases -uroot -p"123456"' > 
/home/wangyunlong.1995/mysql01.sql


第9章 操作系统

//busybox   包含了很多工具的一个工具包,常见的linux指令都有。
docker pull busybox

//Debian和Ubuntu都是当前流行的 Debian系 服务器操作系统
docker search -s 10 ubuntu

//Centos和Fedora都是基于 Rethat 的Linux发行版。

第10章 支持SSH服务的镜像

  • 使用commit方式
//安装openssh-server
apt-get install openssh-server

//启动
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &

//修改SSH服务的安全登录配置
sed -ri 's/session  required ...' /etc/pam.d/sshd

//添加公钥
mkdir root/.ssh
vi /root/.ssh/authorized_keys

//再来个启动脚本run.sh即可

//退出commit
docker commit CONTAINER_ID sshd:ubuntu
  • 使用Dockerfile方式
//自己看吧

第11章 Web服务器与应用

创建LAMP镜像并运行(Linux + Apache + MySQL + PHP)

第12章 数据库应用

默认情况下,容器内的MySQL提供了root账户和admin账户,其中root账户无需密码,但只允许本地访问。

本章介绍了MySQL与MongoDB的使用,具体看书吧。

第13章 编程语言

各种语言,自己看书吧。

第14章 使用私有仓库

docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry


第15章 构建docker集群

方式一:

通过端口映射方法实现利用外部网络进行构建

方式二:

通过Ambassador容器解决跨主机的集群构建问题。

第16章 在公有云上使用docker


第17章 docker实践之道



第18章 docker核心技术







指令

docker images  //查看所有镜像
docker inspect image_id  //查看每层信息
docker history image_id  //查看镜像历史

docker ps  //查看正在运行的容器

docker run [-d] [-it] image_id  //启动容器;-d:守护进程启动
docker run [-d] [-it] repo:tag  // -it:交互方式

docker run -it elasticsearch:latest /bin/bash   //指定docker启动bash
docker exec -it container_id /bin/bash

docker run -d -p 8200:9200 -p 8300:9300 elasticsearch  //暴露端口

-v ‘pwd’:/var/lib/postgres/data   //docker容器挂载参数

//容器相关操作
docker restart container_id
docker stop container_id
docker kill container_id
docker commit container_id   //打包成镜像

//镜像相关操作
man docker pull

docker search redis  //从dockerhub上搜索redis镜像
docker pull redis    //拉取
docker push redis    //上传
docker save      //导出镜像到文件
docker load      //从文件中加载

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31537575/viewspace-3157076/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2018-05-16

  • 博文量
    4259
  • 访问量
    40431