0. 扫盲
1. 各种软件用什么语言写的
- zabbix(监控软件):php
- ansible(批量管理主机,执行命令,无angent):python
- openstack(云计算,管理虚拟机):python
- jekins(ci/di):自动化部署,java
- salstack(批量管理主机,执行命令,有angent):python
- 普罗米修斯(Prometheus,监控):go写的
- docker:go
- k8s:go2. 什么是虚拟化?
- 虚拟化:打破实体结构间的不可切割的障碍
- vmware,kvm,openstack,docker,k8s的区别
- 云服务器:vmware,kvm虚拟化出来的
- 阿里云,腾讯云,opensatck,阿里飞天,用来管理虚拟化出来的操作系统
- docker:进程级别的隔离,装在虚拟机,云服务器上,一个云服务上开业跑出成几百个docker容器,成百上千的服务器上,就会有个上万个容器
- k8s:不同机器的上万个容器如何管理
3. 什么是Docker?
- Go语言实现,开源出来,很多人用
- docker-ce(免费),docker-ee(收费)
- 通过go语言对lxc技术的一个封装
- 上手快,简单
- Docker是一个客户端-服务器(C/S)架构程序(mysql,redis都是cs架构),整套RESTful API
- docker非常重要的概念:镜像(image)与容器(container)有了镜像---》镜像运行起来是容器(真正的执行单位)
- 镜像是从哪里来的?
- 镜像就是一堆文件
- 从远程仓库获取(拉取)3 容器与虚拟机比较
- docker不需要虚拟硬件和操作系统,轻量级,占用体积小,启动快一. docker安装
1. ubuntu(18.04)下安装docker
a. 更新ubuntu的apt源索引
sudo apt-get updateb. 安装包允许apt通过HTTPS使用仓库
sudo dpkg --configure -asudo apt-get install apt-transport-https ca-certificates curl software-properties-commonc. 添加Docker官方GPG key【这个是国外服务器地址,所以网路不好的时候,会失败!在网路好的情况下,多执行几次就没问题了】
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -d. 设置Docker稳定版仓库
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"e. 添加仓库后,更新apt源索引
sudo apt-get updatef. 前面的准备工作完成以后,接下来安装最新版Docker CE(社区版)
sudo apt-get install docker-ceg. 检查Docker CE是否安装正确
sudo docker run hello-worldh. 出现了helo from Docker则表示上面的安装成功!

i. 卸载
sudo apt-get remove docker docker-engine docker.io containerd runc2. centos(版本必须7以上,这里使用7.5)安装docker
a. 更新yum
yum updateb. 安装需要的软件包, yum-util
yum install -y yum-utils device-mapper-persistent-data lvm2c. 执行(向你的yum源,增加一条记录)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repod. 安装
yum install docker-cee. 验证安装(查看版本)
docker -v f. 卸载
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine二. docker启动/停止/重启
启动docker服务
systemctl start docker
停止docker服务,
systemctl stop docker
重启docker服务
systemctl restart docker
开机启动
systemctl enable docker
查看概要信息
docker info(你可能写了一个管理docker的运维平台)三. 换源以及官网(适用于ubuntu/centos7.5的docker)
1. 配置加速(之前去https://hub.docker.com/)。
阿里云,清华,做了一个备份,配置好以后,再拉镜像会去国内地址拉取
第一步:
vim /etc/docker/daemon.json
第二步:
# 换一个
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
# 换多个
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn,
"https://kfwkfulq.mirror.aliyuncs.com",
"https://2lqq34jg.mirror.aliyuncs.com",
"https://pee6w651.mirror.aliyuncs.com",
"https://registry.cn-hangzhou.aliyuncs.com", # 阿里云源
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com"
]
}第三步 重启docker
systemctl daemon-reload
systemctl restart docker2. 官网
docker官网
https://hub.docker.com/
四. 镜像操作
1. 查看镜像
a. 格式
docker image ls
b. 简写
docker images2. 拉取镜像
a. 格式
docker image pull redisb. 简写
docker pull redisc. 拉取指定的版本(默认拉的最新版) 格式:docker pull 镜像名称:版本
docker pull python:3.63. 删除镜像(如果该镜像创建了容器,必须先删除容器)
a. 格式
docker image rm 镜像名称/镜像IDb. 简写
docker rmi 镜像名称/镜像ID4. 镜像打包/解压(会打包成一个tar压缩文件)
打包
docker save -o <文件名.tar.gz> <镜像名> 或者 <文件名.tar> <镜像名>
案例
docker save -o redis.tar redis
docker save -o mydjango.tar mydjango
解压
docker load -i <文件名.tar.gz> 或者 <文件名.tar>案例
docker load -i mydjango.tar五. 容器操作[container]
1. 创建容器
必须先有镜像,才能运行创建容器,需要指定使用的镜像名,并且设置创建容器以后,执行对应的第一条命令。
创建并运行容器
docker run <参数选项> <镜像名称>案例(几条常用的):
# 基于nginx镜像创建一个容器并运行---访问80端口即可看到nginx的页面
docker run -di --name=nginx -p 80:80 nginx
docker run -di --name=mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
docker run -di --name=redis -p 6377:6379 redis:latest参数介绍:
-创建并启动(run)
-i:表示运行容器
-t:表示容器启动后会进入其命令行。加入这两个参数后,容器创建就能登录进去。即分配一个伪终端。
-d:在run后面加上-d参数,则会创建一个守护式容器在后台运行(这样创建容器后不会自动登录容器,如果只加-i -t两个参数,创建后就会自动进去容器)。
--name :为创建的容器命名。如果不写,会自动分配一个名字(英文人名)
-v:表示目录映射关系(前者是宿主机目录,后者是容器目录,映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。
-p:表示端口映射,前者是宿主机端口,后者是容器内的映射端口。可以使用多个-p做多个端口映射命令介绍:
/bin/bash 一直等待,容器不停止
exec真正的作用是在容器内执行命令2. 进入容器的几种方式(并不是真进入)
第一种:docker exec -it 容器id /bin/bash
第二种:ssh连接(容器内部装ssh服务端)案例
docker exec -it 14166 /bin/bash
3. 退出容器
exit4. 删除容器
docker container rm <容器名称/容器ID>5. 高级操作
10 文件拷贝(都是站在容器外cp,因为容器内没有docker)
-从宿主机拷贝到容器内部
格式:
docker cp 文件 容器id:容器内路径
案例:
docker cp test.txt 1416:/home
-从容器内部拷贝到宿主机
格式:
docker cp 容器id:容器内路径/文件 容器外路径
案例:
docker cp 14166:/home/test.txt /home/
11 目录挂载(外部与内部双向绑定,外改内改,内改外改)
# 一旦挂载,以后宿主机目录内修改,同样影响容器内部
格式:
docker run -di --name=xxx -v 宿主机路径:容器内路径 镜像
案例:
docker run -di --name=t1 -v /home/ymq:/home/ centos
12 端口映射
格式:
docker run -di -p 宿主机端口:容器端口 镜像
案例:
docker run -di -p 6377:6379 redis:latest
6. 其他操作
3 查看机器上正在运行的容器
docker ps
4 查看宿主机上所有的容器(包括停止的)
docker ps -a
5 停止容器
docker stop 容器名字/id号
6 启动容器
docker start 容器id/名字
13 查看容器详细信息
docker inspect f81
# 查看ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)
14. 杀死容器
docker container kill <容器名称/容器ID>
7.容器保存为镜像
docker commit 容器名字 镜像名字
docker commit 19b mydjango
版权声明:本文为qq_52385631原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。