什么是Docker?
什么是Docker?
Docker 是基于Go语言实现的开源容器项目。利用操作系统本身已有的机制和特性,可以实现远超传统虚拟机的轻量级虚拟化。它是内核级的虚拟化。期望达到使项目运行环境“一次封装,到处运行的目的”。
利用docker创建的运行环境叫做docker容器,容器是通过docker镜像创建的,docker镜像文件可以放在私有仓库中也可以放在共有仓库中。最大的公有仓库是官方Docker Hub。
Docker怎么用?
安装docker
安装对应版本的docker之后,就可以使用docker了.官方安装
需要说明的是Docker的核心底层技术是LXC(Linux Container),win/mac中安装的都是客户端,还是要借助vm中的linux虚拟机才能工作。
通过阿里云镜像加速器安装
对于10.10.3以下的用户 推荐使用Docker Toolbox
Mac安装文件:[http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/](http://mirrors.aliyun.com/docker-toolbox/mac/docker-toolbox/)
对于10.10.3以上的用户 推荐使用Docker for Mac
Mac安装文件:[http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/](http://mirrors.aliyun.com/docker-toolbox/mac/docker-for-mac/?spm=5176.8351553.0.0.6eaf1991mMotLl)
对于Windows 10以下的用户,推荐使用Docker Toolbox
Windows安装文件:[http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/](http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/)
对于Windows 10以上的用户 推荐使用Docker for Windows
Windows安装文件:[http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/](http://mirrors.aliyun.com/docker-toolbox/windows/docker-for-windows/)
开始使用docker
查看当前版本
docker version
查看本地所有镜像文件
docker images
获取云中ubuntu18的镜像
docker pull ubuntu:18.04
创建一个ubuntu18的容器,并且运行容器。-i 表示标准模式;-t 表示是否分配一个伪终端,默认false; -rm 表示容器退出后是否自动删除,默认为false;
docker run -it -rm ubuntu:18.04
启动一个nginx容器命名为local_nginx,并且映射到80端口。在浏览器中0.0.0.0:80可以访问nginx。-d 表示后台运行,-p 表示端口映射 hostport:containerport;--name 表示容器名字。
docker run -d -p 80:80 --name local_nginx nginx
查看运行的容器
docker ps
其他各种常用命令
docker tag xxx tagname 镜像文件加标签;
docker search xxx 查找官方镜像;
docker rmi xxxID/xxxname 删除镜像文件;
docker rm xxx 删除容器;
docker push xxx;上传镜像;
docker import xxx 导入镜像;
docker stop xxx 终止容器;
docker pause xxx 暂停容器;
docker unpause xxx 恢复容器;
docker kill xxx 强制杀死容器;
docker attach xxxID/xxxname 进入后台运行的容器;
docker container inspect xxx 查看一个容器;
docker top xxx 查看容器内进程;
docker stat xxx 查看容器内cup使用情况;
docker container port test 查看容器端口;
docker commit origin_container_id new_image 执行一些新的操作后添加容器到另外一个镜像/保存版本号
等等
对docker 数据卷的管理
数据卷指容器与主机的共享/映射目录
默认是 /var/lib/docker/volumes,也可指定路径
创建一个容器ubuntu命名为dbdata,放在数据卷dbdata里面
docker run -it -v /dbdata --name dbdata ubuntu
通过镜像training/webapp创建一个后台运行的容器命名为web,并在其中运行python app.py。自动分配端口号,把容器中webapp映射到主机/opt/webapp 位置。
docker run -d -P --name web --mount type=bind,source=/webapp,destination=/opt/webapp training/webapp python app.py
容器互联
创建一个新的容器web,让其和容器namedb互联,namedb是由ubuntu镜像生成的,在里面运行了bash bash.sh,两个容器中安装了ssh,就可以互相登录了
docker run -d -P --name web --link namedb:aliasdb ubuntu bash bash.sh
用dockerfile创建容器
复杂的能运行开发环境的容器通常是用dockerfile生成的。
一个简单的dockerfile
#设置继承镜像
FROM ubuntu:18.04
#安装ssh
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["run.sh"]
在dockerfile 所在目录 build 一个image文件
docker build -t my-lamp-image
通过镜像文件创建一个容器
docker run -p 8080:80 --name my-lamp my-lamp-image
docker machine
docker machine可以高效的管理多个主机集群
docker-machine create --driver xxx args1 args2 instance 创建一个主机
docker-machine ls 查看所有主机
docker-machine ip instance 查看某个主机的ip
docker-machine stop instance 停止某个主机的ip
docker-machine kill instance 杀死某个主机的ip
docker compose
通过模板文件docker-compose.yml部署复杂环境
docker-compose build
docker-compose up
docker-compose down
docker swarm
进入swarm模式集群管理平台
docker swarm init xxx --advertise-addr ip 初始化一个集群
docker swarm join --token xxx ip:port 加入一个集群
docker node ls