37_docker

作者: lww文 | 来源:发表于2020-06-22 15:09 被阅读0次

    docker命令

    https://www.cnblogs.com/DeepInThought/p/10896790.html

    :安装::

    官方建议在Ubuntu中安装 因为docker是在ubuntu中发布的 我用的是centos 建议在centos 7.x版本以上

    1:安装的前提是先下载虚拟机VMware Workstation Pro 

    2:下载好centos 7.x 点击CentOS7.vmx 关联到VMware Workstation Pro 

    (因为我自己弄得CentOS7已经包含下面这些了 所以一下步骤我没弄)

    ===============以参考以下三个链接

    https://www.cnblogs.com/cs294639693/p/10164258.html

    https://blog.csdn.net/ZT0518/article/details/88050663

    https://blog.csdn.net/hylaking/article/details/87978819

    https://www.cnblogs.com/tylerzhou/p/10969072.html(我参考这个成功了)

    https://www.runoob.com/docker/centos-docker-install.html(第二次安装)

    sudo yum install docker-ce-17.12.0.ce

    ==========================

    1;yum update

    2:卸载旧版本docker

    yum -y remove docker docker-common docker-selinux docker-engine

    3;设置yum源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoyum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#阿里云yum源

    4:查看所有仓库中所有docker版本,并选择特定版本安装

    yum install -y docker-ce #由于repo中默认只开启stable仓库,故这里安装的是最新稳定版17.12.0yum install -y <FQPN> # 例如:sudo yum install docker-ce-17.12.0.ce

    5:启动docker并加入开机自动启动

    systemctl start docker

    systemctl enable docker

    6:配置阿里云镜像加速

    mkdir -p /etc/docker

    vi  /etc/docker/daemon.json

    添加以下内容

    {"registry-mirrors":

    ["https://5f2jam6c.mirror.aliyuncs.com", "http://hub-mirror.c.163.com"]

    }

    7:重新加载配置文件

    systemctl reload docker

    8:重启docker

    systemctl restart docker

    如果启动报错可以参考:http://www.pianshen.com/article/6992279516/

    ()

    3设置ustc镜像

    4:Docker启动和停止

    开启:systemctl  start  docker

    =========

    启动docker容器时报错:

    iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 5000 -j DNAT --to-destination 172.18.0.4:5000 ! -i br-ff45d935188b: iptables: No chain/target/match by that name. (exit status 1)

    解决方案:重启docker

    systemctl restart docker

    ————————————————

    版权声明:本文为CSDN博主「冰山上的来客_胡杨」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/weixin_42273374/article/details/82223640

    =========

    停止:systemctl  stop  docker

    重启::systemctl  restart docker

    启动状态: systemctl  status  docker

    开机自己启动:  systemctl enalbe  docker

    =====常用命令;

    1镜像相关:

    查看镜像:     

    搜索镜像

    拉取镜像; docker pull  镜像名称  例如:  docker pull  centos:7

    删除镜像:docker rmi 镜像id

    删除所有镜像:docker rmi  `docker iamges -q`   这个2个引号是  Esc键 下面的引号

    查看运行容器:docker ps

    看所有容器:  docker ps -a

    查看最后一次 运行的容器:   docker ps -l

    ========创建与启动容器:



    =============应用部署

    docker search 镜像名称  eg:docker search mysql  

    1:mysql部署

    1.1拉取mysq镜像

    docker pull centos/mysql-57-centos7

    1.2创建容器

    docker run -di --name=tensquare_mysql -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 centos/mysql-57-centos7    

     docker run –name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7.23

    docker run -di --name=mysqltest -p 33306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql   

    33306:是宿主机端口

    :3306 容器端口

    -p 代表端口映射

    -e 代表 添加环境变量   MYSQL_ROOT_PASSWORD 是root用户登录密码

    1.2.1: 创建成功之后可以使用sqlyog测试一下

    1.3:进去mysql容器  (我运行成功 所以我使用了远程连接  sqlyog)

    如果 连接不上就关闭防火墙

    docker exec -it tensquare_mysql /bin/bash

    1.4:登录mysql

    mysql -u root -p

    ============tomcat部署

    1:l拉取镜像

    docker pull tomcat:7

    2:创建容器

      -p :端口映射

    -v  目录挂载

    docker run -di --name=mytomcat -p 9000:8080 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7-jre7

    : 后面的路径是容器内的路径

    测试:  上传一个war包(我使用的是FileZilla-3.7.3 这个工具上传的)

    1:先给webapps 目录下上传一个war包

    2:在浏览器中输入:http://192.168.206.131:9000/你war包的访问路径

    ==============nginx部署

    1:拉取

    docker pull  nginx

    2:创建容器

    docker run -di --name=mynginx -p 80:80 nginx

    3:测试

    浏览器 输入http://192.168.206.131/ 可以看到nginx 欢迎页面

    查看nginx 默认配置默认的文件

    1:进入容器   docker exec -it mynginx /bin/bash

    2:将文件夹上传到远程服务器 (就是你的虚拟机中) 我上传到usr目录下了

    3: 将你上传文件夹  放入到 nginx的  /usr/share/nginx/

    4;在浏览器中输入 http://192.168.206.131/a.html

    ========redis部署

    1拉取

    docker pull  redis

    2:创建容器

    docker run -di  --name=myredis -p 6379:6379 redis

    测试:通过redis 客户端 连接    redis-cli -h  远程地址  el: redis-cli -h  192.168.xxx.xxx

    ===========迁移与备份

    1:将容器 保存为对象

    docker  commit  mynginux  mynginux_1

    查看 是否成功 docker images:

    基于新创建的镜像在创建一个容器

    docker run -di --name=mynginx2  -p 81:80  mynginux_1

    测试:  浏览器输入  http://192.168.206.131:81

    2:镜像备份

    -o 后面是文件名称   mynginux.tar  

    docker save  -o mynginux.tar  mynginux_1

    测试:输入 dir  可以 看到 当前文件多了一个   mynginux.tar  

    3:镜像恢复与迁移

    先删除mynginux_1镜像 然后执行命令 进项恢复  如果mynginux_1的  容器  mynginx2正在运行 需要关闭

    停止容器:   docker  stop  mynginx2

    删除容器 :  docker rm  mynginx2

    删除镜像:  docker rmi  mynginux_1

    看看是否删除成功: docker images

    镜像恢复

    i:输入的文件

    docker load  -i  mynginux.tar 

    看看是否 成功:  docker images

    ===========DockerFile 常用命令

    DockerFile 是由一系列命令和参数构成的脚本 这些命令应用于基础镜像并最终创建一个新的 镜像

    1:对于开发人员可以 提供一个完全一致的的开发环境

    2:对于测试人员可以直接拿开发时所构建的镜像或者通过dockerfile文件构建一个新的镜像开始工作

    3:对于运维人员 部署时可以实现应用的无缝移植

    常用命令:

    使用脚本创建镜像

    案例 构件jdk8

    步骤:

    1:创建目录

    mkdir -p /usr/local/dockerjks8

    2:上传jkd   

    可以使用我之前说的FileZilla-3.7.3 这个工具   也可以使用sftp命令  Alt+p

    3:移动到刚才创建 的目录 

    mv  jdk-8u171-linux-x64.tar.gz /usr/local/dockerjks8

    4进入该目录 构件DockerFile    依次输入命令

    vi  Dockerfile

    FROM centos:7

    MAINTAINER:lww

    WORKDIR /usr

    RUN   mkdir  /usr.local/java

    ADD  jdk-8u171-linux-x64.tar.gz /usr.local/java/

    ENV  JAVA_HOME /usr/java/jdk1.8.0_171-amd64

    ENV JRE_HOME usr/java/jdk1.8.0_171-amd64/jre

    ENV  CLASSPATH  $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH

    ENV  PATH $JAVA_HOME/bin:$JRE_HOME/bin:$PATH

    PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

    xie写完之后保存:  先按Esc 然后输入:wq

    4:构件  

    -t:镜像名称

    . 指定文件夹  这里的. 代表当前目录

    docker build -t='jdk1.8' .

    查看是否构件成功: docker images  会发现多了一个 jdk1.8的镜像

    ===========私有仓库搭建

    企业内部所使用的 仓库  

     私有仓库的创建与配置

    1:拉取私有仓库对象

    docker pull registry

    2:启动私有仓库容器

    docker  run  -di --name=myregistry -p 5000:5000 registry

    测试  浏览器输入:  http://192.168.206.131:5000/v2/_catalog 

    或者在命令行中:curl http://192.168.206.131:5000/v2/_catalog 

    看到 {"repositories":[]} 表示私有仓库创建成功 并且内容为空

    我的在浏览器没出现 {"repositories":[]}   但是让我下载daemon.json   下载完成 打开展示的也是{"repositories":[]} 

    3: 修改deamon.josn

    vi /etc/docker/daemon.json

    添加以下内容

    {“insecure-registries”:["192.168.206.131:5000"]}

    {

        "graph": "/mnt/docker-data",

        "storage-driver": "overlay",

        “insecure-registries”:"192.168.227.128:5000"

    }

    此操作用于让docker信任私有仓库地址

    为了让配置生效 重启docker

    =====私有仓库上传镜像

    :1:打标签  比如给jdk1.8 打标签     192.168.206.131:5000 私服地址

    docker  tag jdk1.8 192.168.206.131:5000/jdk1.8

    查看 docker images  会发现多了一个  192.168.206.131:5000/jdk1.8

    2:上传

    docker push  192.168.206.131:5000/jdk1.8

    ============错误

    [root@mastersysconfig]# docker push 192.168.1.100:5000/registry:2.4.1Thepush refers to a repository [192.168.1.100:5000/registry]Gethttps://192.168.1.100:5000/v1/_ping:https:server gaveHTTPresponse toHTTPSclient

    解决:

    在”/etc/docker/“目录下,创建”daemon.json“文件。在文件中写入:

    { "insecure-registries":["你自己虚拟机的ip:5000"]}

    重启docker。 systemctl restart docker

    ==============

    3;测试 

     http://192.168.206.131:5000/v2/_catalog 

    会出现  {"repositories":["jdk1.8"]}

    我们现在可以将本地的 jdk和打标签的jdk 删除 然后从私有库中下载

    docker rmi  jdk1.8

    docker rmi  192.168.227.128:5000/jdk1.8

    查看是否删除:docker images

    docker pull 192.168.227.128/jdk1.8

    相关文章

      网友评论

          本文标题:37_docker

          本文链接:https://www.haomeiwen.com/subject/xocgyctx.html