Docker基本操作

Docker

Docker是一个开源项目,最初是dotCloud公司内部的一个业余项目,是google公司推出的go语言的项目。目前代码在github上面维护。其实Docker就是一个虚拟机,就是将计算机虚拟化,和VM有很多的共同之处,但是也有很多的差别,直接使用宿主机的资源,不分资源区块。如果没有服务器,可以去https://labs.play-with-docker.com这个网站上去操作练习。

Docker的优点

实现轻量级的操作系统虚拟化,Docker的基础是Linux容器(LXC)等技术

启动速度快,占用体积小,一个centos7的系统,只需要几十个m的文件,并不需要完整的系统镜像,但是要基于服务器原本的操作系统。在操作系统之上通过lxc技术,实现虚拟化出操作系统。

要注意docker 是一个软件,通过这个软件虚拟化出操作系统

重点

解决了项目部署和软件版本的统一问题

Docker通信

docker 客户端跟服务端通信,是通过http协议,resful规范

镜像和容器

比喻

镜像是类,然后容器是对象,一个类可以声明多个对象

基于镜像运行容器

详细说明

一台服务器,首先要安装docker软件,我们要虚拟化的操作系统,需要在注册中心下载,这个就是我们需要的镜像,如果我们把镜像运行起来,这个就是容器,我们的程序就是运行在容器上面的。

Docker安装

centos

最好选择7.x以上的版本

1.更新yum
sudo yum update

2.安装需要的软件包
sudo yum install -y yum-utils device-mapper-persistent-data lvm2

3.设置yum源为阿里云
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

4.安装docker
#docker-ce社区版,docker-ee企业版
sudo yum install docker-ce
#is this ok?
yes

5.查看是否安装完成
#docker软件安装完成,服务端和客户端都安装完成,
docker -v #查看客户端版本,服务端并没有启动

Docker基本操作

运行

# 7.x用这个命令启动
systemctl start docker

#停止docker服务端
systemctl stop docker 

重启docker:
systemctl restart docker

查看docker状态:
systemctl status docker

开机启动:
systemctl enable docker

查看docker概要信息
docker info

查看docker帮助文档
docker --help

镜像

更换镜像源为ustc的镜像

ustc是老牌的linux镜像服务提供者了,还在遥远的ubuntu 5.04版本的时候就在用。ustc的docker镜像加速器速度很快。ustc docker
mirror的优势之一就是不需要注册,是真正的公共服务。
https://lug.ustc.edu.cn/wiki/mirrors/help/docker

编辑该文件:
vi /etc/docker/daemon.json 
在该文件中输入如下内容:
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

先启动服务端

# 会去https://hub.docker.com/查找
# 直接去该地址查找即可
docker search centos

#安装命令在tag直接复制
docker pull centos:centos7

#查看所有服务器的镜像
docker images
docker images -q只显示id号

#删除镜像
#容器没有删除,镜像删除不掉
docker rmi id号   id号可以缩写

容器

一个镜像可以跑多个容器每一个容器就是一个操作系统

#查看容器
docker ps:查看正在运行的容器
docker ps –a:查看所有容器(包括停止和运行的)

#创建启动容器,并且进入容器
docker run -it --name=mycentos centos:centos7 /bin/bash
#退出容器,容器也就停止了
exit  

#不进入容器 内部(常用)
docker run -di --name=mycentos centos:centos7     
#进入到容器内容
docker exec -it mycentos  /bin/bash    
#退出,容器不停止
exit


docker stop id号或者名字    容器停止

docker start id号或者名字   启动容器

端口映射

#宿主机和容器端口映射(外部宿主机的端口不能冲突)
docker run -it --name=mycentos -p 80:80 -v 宿主机目录:容器目录 centos:7 /bin/bash     
一旦退出容器,容器也就停止了

文件拷贝

#从宿主机拷贝文件到容器内部
docker cp 1.txt mycentos2:/home   

#从容器往外拷贝,不需要进入容器内部
docker cp mycentos2:/home/1.txt /home/1.txt  

目录挂载

#前面的是宿主机的目录,后面是容器的目录
#容器删掉之后,目录还在,类似容器使用宿主机的共享文件夹
docker run -di -v /home/zx:/home --name=mycentos3 centos:centos7

#如果映射三个路径,应该怎么写?-v 路径:路径 -v 路径:路径 -v 路径:路径

容器详细信息

#查看容器详情:
docker inspect 容器名字/id    
NetworkSettings下的IPAddress是容器的ip地址

查看容器ip   
docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称(容器ID)

服务部署

mysql

拉取:docker pull mysql:5.6

#设置了root密码,同时启动了服务,还做了端口映射
启动:docker run -di --name=mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

远程连接宿主机的3306端口,即可连接到容器的mysql服务

redis

#不加tag ,拉最新的版本,也就是lasted版本
docker  pull reids     

#启动redis
docker run -di --name=myredis -p 6379:6379 redis  

迁移备份(容器转镜像)

#docker commit 容器名字 要打包成的镜像名字
docker commit mycentos zx

#基于打包好的镜像,再跑起容器来,那么容器内部原来装的软件,都会有
docker run -di --name=lqz_centos7_1 lqz_centos7:latest

镜像备份(打包)

用于服务器的迁移,从一台机器到另一台机器,就只需要将压缩包拿走

docker  save -o zx.tar zx

镜像恢复

docker load -i zx.tar

私有仓库

私有仓库的功能就是存放自己的镜像,实际上就是一个web应用,首先去自己的私有仓库下载镜像,再去网上找镜像

启动

#拉私有仓库镜像
docker pull registry   

#启动镜像形成容器
docker run -di --name=registry -p 5000:5000 registry   

#打开宿主机浏览器 输入地址http://101.133.225.166:5000/v2/_catalog    
#没有上传镜像,是空的 {"repositories":[]}

配置

vi /etc/docker/daemon.json
#插入
{"insecure-registries":["101.133.225.166:5000"]} 

#重启docker 服务
systemctl restart docker

#重启registry的容器
docker restart registry

上传

#打标签
docker tag zx

#上传标记的镜像
docker push zx

本地删除镜像后,可以从私有仓库拉下来
docker pull zx

参考链接

https://www.cnblogs.com/xiaoyuanqujing/articles/11840212.html

原文地址:https://www.cnblogs.com/zx125/p/12715745.html