龙空技术网

docker快速上手使用指南

fana 96

前言:

此时各位老铁们对“azure服务器使用教程”大约比较着重,咱们都想要了解一些“azure服务器使用教程”的相关知识。那么小编也在网络上汇集了一些对于“azure服务器使用教程””的相关文章,希望看官们能喜欢,你们快快来学习一下吧!

docker基础知识

什么是Docker:Docker是一个开源的应用容器引擎,是基LXC技术构建的轻量级容器引擎。可以让开发者打包他们的应用和依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

为什么使用docker:

可以保证环境一致性,不同环境之间迁移方便。启动速度快。版本可控,更方便的组件复用。资源利用率比传统虚拟机高。缺点:宿主机资源没有完全做到隔离。

docker开发和运维中的优势:

Docker的使用简单,从开发的角度来看就是三步走:构建,运输,运行。运维的角度来看,那就只有两步:复制,运行。

Docker这种容器技术隔离出了独立的运行空间,不会和其他应用争用系统资源。具有以下几个方面的优势

更快速的交付和部署。更高效的资源利用。更轻松的迁移和扩展。更简单的更新管理。

docker与传统虚拟机比较: 启动速度快,对系统资源需求少,构建简单,迁移方便。

Docker的3大核心概念

镜像image:Docker镜像就是一个只读的模板,例如一个镜像可以包含一个完整的操作系统环境,里面仅安装了Apache或用户需要的其他应用程序。镜像可以用来创建容器,Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,并且用户甚至可以直接从其他人哪里下载一个已经做好的镜像来直接使用容器container:Docker利用容器来运行应用,容器是从镜像创建的运行实例,他可以启动、停止、开始、删除,每个容器都是相互隔离的,保证平台的安全。可以把容器看成一个简易版的linux系统和运行在其中的应用程序。 镜像是只读的,容器在启动的时候会创建一层可写层作为最上层仓库repository:仓库就是集中存放镜像的地方,有时候会把仓库和仓库注册器混成一块,并不严格区分,仓库注册器上往往存放着多个仓库,每个仓库又包含了多个镜像,每个镜像又有不同的tag。仓库分为公开仓库和私有仓库两种,最大的公开仓库是Docker Hub,提供了数量庞大的镜像供用户下载,国内的公开仓库包括Docker Pool等,可以提供大陆用户更稳定、更快的访问安装docker

 #1.安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2  #2.添加阿里yum源 yum-config-manager --add-repo   #3.安装docker yum makecache yum -y install docker-ce  #4.启动docker systemctl enable --now docker  #5.镜像加速 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' {   "registry-mirrors": [";] } EOF sudo systemctl daemon-reload sudo systemctl restart docker

镜像加速器

镜像加速器地址

专属加速器

其它加速

Docker 中国官方镜像

Docker Hub

DaoCloud 镜像站

可登录,系统分配

Docker Hub

Azure 中国镜像

Docker Hub、GCR、Quay

科大镜像站

Docker Hub、GCR、Quay

阿里云

;your_code>.mirror.aliyuncs.com

需登录,系统分配

Docker Hub

七牛云

Docker Hub、GCR、Quay

网易云

Docker Hub

腾讯云

Docker Hub

卸载docker

 #1.查看已安装的包 yum list installed|grep docker  #2.卸载docker yum remove docker-ce  #3.删除docker保留的数据 rm -rf /var/lib/docker
迁移目录

对于已经安装过的docker,要迁移docker的存储目录

 #方式一  #停止docker systemctl stop docker #移动目录 mv /var/lib/docker /app/ #添加软连接 ln -s /app/docker /var/lib/docker #重新启动 systemctl restart docker  #方式二 #改动docker启动配置文件 vim /lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --graph=/data/docker/  #或者修改daemon.json文件 vim /etc/docker/daemon.json {     "live-restore": true,     "graph": [ "/data/docker/" ] }
镜像管理
 #1.搜索镜像 docker search centos  #2.列出所有tag curl -L -s '; | jq '.results[]["name"]' | sed 's/\"//g' | sort -u  ######脚本#### cat <<EOF> docker-show-tags.sh #!/bin/sh for Repo in $* ; do   curl -s -S "; | \     sed -e 's/,/,\n/g' -e 's/\[/\[\n/g' | \     grep '"name"' | \     awk -F\" '{print $4;}' | \     sort -fu | \     sed -e "s/^/${Repo}:/" done  #3.拉取镜像 docker pull mysql:6 #拉取镜像仓库里的所有tag docker pull -a centos  #上传镜像 docker push hub.paas/centos:base #查看镜像 docker images  #批量push docker images | grep "gxfana" | awk '{print "docker push "$1":"$2}' | sh  #4.重新打tag docker tag ubuntu:latest ubuntu:base  #批量修改tag docker images|grep "hub.paas"|sed 's/hub.paas\/.*.\//registry.cn-hangzhou.aliyuncs.com\/gxfana\//g' |awk '{print "docker tag " $3" ",$1":"$2}'|sh  #5.查看镜像详细信息 docker inspect 300e315adb2f #查看镜像各层创建信息,--no-trunc会显示完整的提交记录 docker history 300e315adb2f --no-trunc  #6.删除镜像 docker rmi nginx:latest #加上-f强制删除 Docker rmi $(docker images -a|grep none|awk '{print $3}') #删除没有打tag的镜像 docker rmi $(docker images|grep gcr|awk '{print $1":"$2}') #删除gcr开头的docker镜像  #删除无标示镜像,即id为<None>的镜像 docker rmi $(docker images | grep "^<none>" | awk "{print $3}") #删除所有镜像 docker rmi $(docker images -q)  #批量删除镜像 docker images | awk '{print $3}' | grep -v REPOSITORY | xargs sudo docker rmi  #7.导出镜像 #把运行的容器commit成镜像,然后镜像方式导入导出 docker commit -a "作者信息" -m "说明文字" 运行中的容器名 保存的镜像名  docker save centos:latest > /opt/centos.tar.gz #导出镜像 docker load < /opt/centos.tar.gz  #导入镜像  #不管容器是否处于运行的状态,都可以使用docker export命令将容器保存到压缩文件里 docker export 39ec3c12291d > centos.tar.gz #然后导入容器,导入的容器不是在容器列表里,而是在本地镜像库里 docker import centos.tar.gz  #批量导出 docker save $(docker images|grep paas-svc-k8s|awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') > images.tar.gz  #8.清理未运行的docker镜像 docker system df #查看磁盘使用量 docker system prune #清理占用的空间 docker system prune -a  #清理所有占用的空间  docker volume prune #清理无用的卷 docker volume prune --filter "label!=keep" #仅仅删除label值为keep的存储卷 #清理镜像虚拟机空间 docker volume ls -f dangling=true | awk '{ print $2 }' | xargs docker volume rm  docker container prune #清理所有停止的容器 docker container prune --filter "until=24h" #仅仅删除停止超过24小时的容器  docker image prune #删除悬空的镜像 docker image prune -a #有未被使用的镜像 docker image prune -a --filter "until=24h" #超过24小时 docker image prune -a -f #-a删除所有无用的镜像-f强制删除不提示  #清理指定日期的镜像 docker image prune -a --filter "until=$(date +'%Y-%m-%dT%H:%M:%S' --date='-15 days')"  #删除所有悬空镜像,不删除未使用镜像: docker rmi $(docker images -f "dangling=true" -q)  docker network prune #删除无用的网络
容器管理
 #1.启动容器 docker run --name centos -it centos:latest /bin/bash docker start centos #启动容器 docker stop centos #关闭容器 docker restart centos #重启容器 docker pause centos #暂停容器中所有的进程。 docker unpause centos #恢复容器中所有的进程。  #启动服务 docker run --name nginx \ -v /data:/opt:rw -p 8081:80 \ --restart=always --privileged=true \ -d nginx:latest #参数:更多参考man docker-run -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项; -d: 后台运行容器,并返回容器ID; -i: 以交互模式运行容器,通常与 -t 同时使用; -P: 随机端口映射,容器内部端口随机映射到主机的端口 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用; --name="nginx-lb": 为容器指定一个名称; --dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致; --dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致; -h "mars": 指定容器的hostname; -e username="ritchie": 设置环境变量; --env-file=[]: 从指定文件读入环境变量; --cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行; -m :设置容器使用内存最大值; --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型; --link=[]: 添加链接到另一个容器; --expose=[]: 开放一个端口或一组端口; --volume , -v: 绑定一个卷 --restart 重启策略:always重启,unless-stopped不重启,on-failure在退出容器并且返回值不是0的时候重启  #启动redis docker run --name redis \  -p 6379:6379 -d redis \  --requirepass "123456"  #启动zk docker run --name zookeeper \  -p 2181:2181 -v /etc/localtime:/etc/localtime \  -d wurstmeister/zookeeper   #启动kafka docker run --name kafka \  -p 9092:9092 \  -e KAFKA_BROKER_ID=0 \  -e KAFKA_ZOOKEEPER_CONNECT=192.168.157.20:2181 \  -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.157.20:9092 \  -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 -d wurstmeister/kafka  #启动es: docker run --name elasticsearch \  -p 9200:9200 -p 9300:9300  \  -e "discovery.type=single-node" \  -e ES_JAVA_OPTS="-Xms84m -Xmx512m"  \  -d elasticsearch:7.12.0  #启动mongodb docker run --name mongo \  -p 27017:27017 --restart=always \  -e MONGODB_INITDB_ROOT_USERNAME=super \  -e MONGODB_INITDB_ROOT_PASSWORD=123456 \  -d mongo:5.0.14  #启动mysql docker run --name mysql \ -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql  #启动apache docker run --name apache -p 80:80 \ -v $PWD/www/:/usr/local/apache2/htdocs/ \ -v $PWD/conf/httpd.conf:/usr/local/apache2/conf/httpd.conf \ -v $PWD/logs/:/usr/local/apache2/logs/ -d httpd  #2.列出容器 docker ps  #列出已经启动的容器 docker ps –a  #列出所有容器,包括未启动的 ###输出详情介绍### CONTAINER ID: 容器 ID。 IMAGE: 使用的镜像。 COMMAND: 启动容器时运行的命令。 CREATED: 容器的创建时间。 STATUS: 容器状态。 ###状态有7种### created(已创建) restarting(重启中) running(运行中) removing(迁移中) paused(暂停) exited(停止) dead(死亡)  #显示容器资源的使用情况,包括:CPU、内存、网络 I/O 等 docker stats $(docker ps -a -q) #查看容器详情 docker inspect nginx #查看容器内进程 docker top nginx   #3.删除容器 docker rm nginx  #删除已经停止的容器 docker rm -f nginx  #删除正在运行的容器  #批量删除状态为exited的容器 docker rm $(docker ps -a | grep -i 'exited' | awk {'print $1'})  #4.进入容器 docker exec -it nginx bash docker attach nginx  #这两种区别: - 当多个窗口同是attach到同一个容器的时候,所有窗口都会同步显示;当某个窗口因命令阻塞时,其他窗口也无法执行操作。 - 可以使用docker exec -it 容器id bash进入容器并开启一个新的bash终端。退出容器终端时,不会导致容器的停止。 - 使用docker attach 容器id 进入正在执行容器,不会启动新的终端, 退出容器时,会导致容器的停止。  #5.查看容器日志 docker logs -f nginx #实时显示日志 docker logs -n 5 nginx #最近5行日志 docker logs -t nginx #打印是第一列显示时间信息  #查看指定时间后的日志,只显示最后100行 docker logs -f -t --since="2018-02-08" --tail=100 nginx  #查看某时间之后的日志 docker logs -t --since="2018-02-08T13:23:37" nginx  #查看某时间段日志 docker logs -t --since="2018-02-08T13:23:37" --until "2018-02-09T12:23:37" nginx  #6.拷贝文件 docker cp /fana.txt 96f7f14e99ab:/opt/ #拷贝进去 docker cp 96f7f14e99ab:/www /tmp/ #拷贝出来

标签: #azure服务器使用教程 #centos怎么用adb