首页 > 技术文章 > docker

hongzuiliyu 2020-09-13 20:53 原文

docker环境搭建

   方法一:

  1.数据源准备

    curl -fsSL get.docker.com -o get-docker.sh

  2.docker CE 下载及安装

    下载:sh get-docker.sh --mirror Aliyun

    刷新:systemctl daemon-reload

    启动:systemctl restart docker

   方法二:安装指定版本docker  

    yum install -y yum-utils device-mapper-persistent-data lvm2
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    yum install -y --setopt=obsoletes=0 docker-ce-19.03.12-3.el7.x86_64 docker-ce-cli-19.03.12-3.el7.x86_64或者

            yum install -y --setopt=obsoletes=0  docker-ce-17.03.0.ce-1.el7.centos docker-ce-selinux-17.03.0.ce-1.el7.centos

更换docker版本  

  1.rpm -qa | grep docker   列出包含docker字段的软件的信息

       2. yum remove docker-1.13.1-53.git774336d.el7.centos.x86_64
    yum remove docker-client-1.13.1-53.git774336d.el7.centos.x86_64  删除第一步中的包

       3.安装其他版本的docker即可

 

常用命令:

    查看docker版本:docker version

    查看镜像: docker images

    查看运行中容器: docker ps

    查看所有容器: docker ps -a

    

docker容器生命周期管理

  1.拉取镜像:docker pull nginx

  2.创建容器:docker create nginx

  3.启动容器:

    1)查看容器id: docker ps -a

    2)启动:docker start 容器id

  4.登录容器:docker exec -it 容器id /bin/bash

    

     基于操作系统内核,但用户态和文件态发生了变化

  5.退出容器:exit

  6.暂停容器(此时不能登录):docker pause 容器id

  7.解除暂停(暂停解除后可以继续登录):docker unpause 容器id

  8.停止容器:docker stop 容器id

  9.强制停止容器:docker kill 容器id

  10.删除容器(运行状态下不可删除):docker rm 容器id

  11.强制删除容器:docker rm -f 容器id

  12.直接创建一个running状态的容器:docker run -d redis(-d 表示以守护进程的方式启动)

    docker run=docker pull+docker create+docker start

  13.查看容器日志:docker logs 容器id

    跟踪刷新容器日志: docker logs -f 容器id(类似于tail -f查看日志功能)

  14.通过参数限制容器资源:docker run -d -c 4000 -m 200M --memory-swap 400M  --blkio-weight 20 nginx

      -c 指定cpu资源,4000是一个权重相对值,类似于权重

      -m 200M 指定内存资源

      --memory-swap 400M 内存200M,磁盘200M

      --blkio-weight 20 指定磁盘io资源,20是一个权重相对值,不能超过1000

  15.删除镜像:docker rmi 镜像tag

  16.查看私有镜像仓库所有镜像:curl -X GET http://{仓库地址}/v2/_catalog

  17.查看指定镜像所有标签:curl -X GET http://{仓库地址}/v2/{镜像名称}/tags/list

  18.登录docker仓库:docker login -u {用户名} -p {密码}

  19.镜像持久化:docker save -o 【目标文件】【源文件】  示例:docker save -o nginx.tar nginx:latest

  20.加载镜像:docker load -i 【镜像持久化文件】

  21:镜像重命名:

    1)docker tag 【image ID】【新名称】

      2)docker rmi【旧镜像】

  22:查看docker日志:docker logs --since  30m 【container ID】

  23:查看docker引擎的日志(而不是某个容器的日志)  journalctl -u docker --no-pager 

       24:清除docker垃圾(删除无用的镜像,映射,容器等):

      docker system/image/volume  prune  --force  (prune:削减,裁剪)   

 

通过dockerfile进行镜像制作与管理

  1.创建Dockerfile文件:vim Dockerfile    

    

   2.构建镜像:docker build -t mytest .

    -t mytest 指定标签,名称叫mytest

    . 指定要执行的Dockerfile的目录

  3.启动容器:docker run mytest -c date

    RUN CMD ENTRYPOINT 的区别

      RUN 每次都会执行

      ENTRYPOINT 最后一次ENTRYPOINT会作为主命名执行

      CMD 如果外面有-c就不执行,如果没有就执行,没有ENTRYPOINT 时CMD也可以执行

    

 

docker数据持久化

  

   1.bind mounts 狩猎模式

    docker run -v $PWD/data:/data -d redis:3.2 redis-server

    

 

   2.Volumes 靶场模式

      

 

    

 

    1)隐式创建

      docker run -v /data2 -d redis:3.2 redis-server

      

     2)显示创建

      

     

docker网络通信

  

   

 

   

 

   

  

  

docker搭建私有仓库

  1.搭建仓库

  

   docker run -it -d -p 5000:5000 -v /root/registry:/var/lib/registry --restart=always --name registry registry:latest

  

  2.上传镜像

    

     

      将其修改为:ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry 172.19.46.183:5000

     

   3.下载镜像

      

docker微服务落地

1.安装rabbitmq

  run -d --name myrabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:management

2.安装redis

  docker run -d --name myredis -p 6379:6379 redis redis-server

3.安装mysql

  1.docker run -d --name mymysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=imooc mysql

  2.修改mysql8密码验证方式

    1)登录docker 容器:docker exec -it  容器id /bin/bash

    2)  登录mysql:mysql -uroot -p  

    3)修改密码验证方式:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '******' ;

4.运行eureka

  1)打jar包并上传到root主目录

  2)编写Dockerfile

    FROM java:8

    ADD registry-center-1.0-SNAPSHOT.jar registry-center-1.0-SNAPSHOT.jar

    ENTRYPOINT ["java","-jar","registry-center-1.0-SNAPSHOT.jar"]

  3) Dockerfile构建

    docker build -t myregistry .(注意最后的.表示在当前目录寻找Dockerfile)

  4)启动容器

    docker run -d -p 20000:20000 --name myregistry myregistry

5.运行config-server

  1)修改配置文件,否则会默认docker的ip地址,是不可达的。

  

   2)修改Dockerfile文件,把registry-center替换成config-server

    

   3)构建镜像

    docker build -t myconfig .

  4)启动容器

    docker run -d -p 20003:20003 -name myconfig myconfig

  5)访问eureka验证

   

6.运行auth和user,将其注册到eureka中,步骤同config-server

7.运行gateway

8.使用navicat运行sql脚本,创建数据源

9.启动前端工程foodie-shop  

  1)上传foodie-shop

  2)修改js/app.js,指向后端gateway

    

   3)启动nginx,并把foodie-shop作为静态资源

    docker run -d -p 8080:80 --name myfront -v /root/foodie-shop/:/usr/share/nginx/html nginx

 

推荐阅读