Docker入门

一直对docker很感兴趣,今天按照官网的Guides学习一个。

安装

我的机器是腾讯云1元学生主机,centos,香港节点,还能当梯子,美滋滋。安装就不多说了,按官网来就行了,直接Get Started。

Get Started

part 1

这一节讲起源,主要是docker和传统虚拟机的区别,我的理解是传统虚拟机完整的模拟出一个操作系统,每个虚拟机都有一个系统,通过一个hypervisor来管理。而docker利用Linux namespace,cgroup等技术,共享一个内核。

part 2

这一节讲容器(Containers)。

Dockerfile

dockerfile定义了一个容器里有什么东西,直接复制官网的就好。
然后写一个python文件,一个依赖文件。

docker build -t friendlyhello .

docker build创建一个镜像 -t选项用来命名。

docker run -p 4000:80 friendlyhello

这样一个容器就跑起来了,本地4000端口对应容器80端口。

常用命令
docker build -t friendlyname .  # 根据Dockerfile创建镜像
docker run -p 4000:80 friendlyname  #运行"friendlyname"端口映射4000到80
docker run -d -p 4000:80 friendlyname   #后台运行
docker container ls         # 列出所有容器
docker container ls -a      # 列出所有容器,包括不在运行的
docker container stop <hash>      #终止某个容器 
docker container kill <hash>      # 强制停止某个容器
docker container rm <hash>        # 删除某个容器
docker container rm $(docker container ls -a -q) #删除所有容器
docker image ls -a      # 列出所有镜像
docker image rm <image id>     # 删除某个镜像
docker image rm $(docker image ls -a -q)  # 删除所有镜像
docker login             # 登录docker账号
docker tag <image> username/repository:tag #给要上传的镜像打标签
docker push username/repository:tag      # 上传镜像到仓库
docker run username/repository:tag       # 运行仓库的镜像

part 3

这一节讲服务(Services)。
首先要装一个Docker Compose,这个是用来跑多个容器的,通过写一个YAML文件来配置一个多容器的服务。一个服务只跑一个镜像,可以有多个容器。复制它的docker-compose.yml文件。

docker stack deploy -c docker-compose.yml getstartedlab

这样就运行了一个服务,由5个容器组成,自动负载均衡。
这一节还有几个名词
stack:stack是一组可以一起管理的相互关联的服务。
task:服务中运行的单个容器叫task。

常用命令
docker stack ls                 # 列出stack
docker stack deploy -c <composefile> <appname>  # 运行Composefile
docker service ls                 # 列出正在运行的services 
docker service ps <service>       # 列出stack中的task
docker inspect <task or container>  # 查看container信息
docker container ls -q         # 列出container的id
docker stack rm <appname>      # 销毁stack
docker swarm leave --force      # 离开swarm集群

part 4

这一节介绍swarm集群,swarm是一组运行docker的机器,机器可以使虚拟机或物理机。
docker-machine:docker-machine命令可以创建虚拟机并安装docker。
这个命令需要virtualbox,由于云主机已经是虚拟化的东西了,这个命令跑不起来。
docker swarm init创建集群并成为管理节点,docker swarm join 加入集群。

docker-machine create --driver virtualbox myvm1 # 创建一个虚拟机(Mac, Win7, Linux)
docker-machine env myvm1       #查看节点的基本信息 
docker-machine ssh myvm1 "docker node ls"  #列出swarm节点 
docker-machine ssh myvm1 "docker node inspect <node ID>"        # 查看某个节点
docker-machine ssh myvm1 "docker swarm join-token -q worker"   # 查看token
docker-machine ssh myvm1   # ssh到虚拟机
docker node ls             # 列出swarm节点 
docker-machine ssh myvm2 "docker swarm leave"  # worker节点离开swarm集群
docker-machine ssh myvm1 "docker swarm leave -f" # master节点离开集群,
docker-machine ls # 列出虚拟机
docker-machine start myvm1    # 启动虚拟机
docker-machine env myvm1      # 查看环境变量
eval $(docker-machine env myvm1)         # 连接虚拟机shell
docker stack deploy -c <file> <app>  # 部署app
docker-machine ssh myvm1 "docker stack deploy -c <file> <app>"   #ssh部署
eval $(docker-machine env -u)     # 断开虚拟机的shell
docker-machine stop $(docker-machine ls -q)               # 停止所有虚拟机
docker-machine rm $(docker-machine ls -q) # 删除所有虚拟机
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值