zoukankan      html  css  js  c++  java
  • 分享自我的私人笔记Docker,光说不练假把式

    镜像

    images_name 表示镜像名
    con_name表示容器名

    #获取镜像
    docker pull images_name 
    #查看已有的docker镜像
    docker images
    #删除镜像
    docker rmi image_name
    #修改镜像名
    docker tag imageid name:tag
    #导出镜像
    docker save -o image_name.tar image_name
    

    提交改变
    将自己修改好的镜像提交到本地

    docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    
    docker commit -a "leifengyang"  -m "首页变化" 341d81f7504f guignginx:v1.0
    #这样启动之后,运行的就是我们修改过的定制镜像
    docker run -d -p 88:80 guignginx:v1.0
    

    image.png

    容器

    con_name表示容器名
    image_name 表示镜像名

    #启动一个容器
    docker run image_name
    
    #查看正在运行的容器
    docker ps
    
    #查看所有的容器
    docker ps -a
    
    #停止/启动/重启 一个容器
    docker stop/start/restart con_name
    
    #删除容器
    docker stop 容器
    docker rm 
    docker rmi
    
    #编辑容器名称
    docker rename 原容器名 新容器名
    
    #看容器的端口映射情况
    docker port con_name
    
    #动态查看容器日志
    docker logs -f con_name
    
    #动态查看最后100行的容器日志
    docker logs -f –tail 100 con_name
    
    #查看容器pid
    docker top con_name
    
    #查看docker容器IP
    docker inspect con_name| grep IPAddress
    
    #进入容器
    docker exec -it con_name  /bin/bash
    

    端口映射:
    用docker安装上mysql,去docker仓库里搜索mysql

    sudo docker pull mysql:5.7
    
    # --name指定容器名字 
    # -v目录挂载 前面的目录是Linux物理服务器的本地目录,后面的是mysql容器内部的目录
    # -p指定端口映射(前面的端口是Linux物理服务器的端口)  
    # -e设置mysql参数 -d后台运行
    sudo docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    
    #这时我们在Linux虚拟机上,可以看到mysql容器的内部数据变化
    #也可以 修改Linux虚拟机的/mydata/mysql/目录文件,自动同步到mysql容器内
    [root@localhost vagrant]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    6a685a33103f        mysql:5.7           "docker-entrypoint.s…"   32 seconds ago      Up 30 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
    docker exec -it mysql bin/bash
    exit;
    
    
    因为有目录映射,所以我们可以直接在镜像外执行
    vi /mydata/mysql/conf/my.conf 
    
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    
    保存(注意评论区该配置不对,不是collection而是collation)
    
    docker restart mysql
    

    网络

    net_name 网络名

    #查看所有网络
    docker network ls
    #创建一个docker网络
    docker network create -d bridge net_name
    #创建一个docker网络
    docker run –network= net_name -itd –name=con_name image_name
    #创建一个docker网络
    docker network connect net_name con_name
    

    文件

    host_path 主机文件路径
    container_path 容器文件路径
    containerID 容器id,用容器名也可以

    #从主机复制到容器
    sudo docker cp host_path containerID:container_path
    #从容器复制到主机
    sudo docker cp containerID:container_path host_path
    

    kubenetes类似
    1.kubectl cp /主机目录/文件路径 podName:/容器路径/xxx.datasource -n namespaces
    这样可以把主机目录文件拷贝到容器内
    2.kubectl cp podName:容器路径/xxx.datasource -n namespaces /主机目录
    这样可以把容器内文件cp到主机目录

    日志

    #刚运行就退出的容器,查看日志
    docker start con_name -ia
    #动态查看容器日志
    docker logs -f con_name
    #动态查看最后100行的容器日志
    docker logs -f –tail=100 con_name
    

    配置

    #查看容器配置
    docker inspect con_name
    

    中间件安装

    mysql

    用docker安装上mysql,去docker仓库里搜索mysql

    sudo docker pull mysql:5.7
    
    # --name指定容器名字 
    # -v目录挂载 前面的目录是Linux物理服务器的本地目录,后面的是mysql容器内部的目录
    # -p指定端口映射(前面的端口是Linux物理服务器的端口)  
    # -e设置mysql参数 -d后台运行
    sudo docker run -p 3306:3306 --name mysql \
    -v /mydata/mysql/log:/var/log/mysql \
    -v /mydata/mysql/data:/var/lib/mysql \
    -v /mydata/mysql/conf:/etc/mysql \
    -e MYSQL_ROOT_PASSWORD=root \
    -d mysql:5.7
    

    这时我们在Linux虚拟机上,可以看到mysql容器的内部数据变化
    也可以 修改Linux虚拟机的/mydata/mysql/目录文件,自动同步到mysql容器内

    [root@localhost vagrant]# docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
    6a685a33103f        mysql:5.7           "docker-entrypoint.s…"   32 seconds ago      Up 30 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql
    
    docker exec -it mysql bin/bash
    exit;
    
    
    因为有目录映射,所以我们可以直接在镜像外执行
    vi /mydata/mysql/conf/my.conf 
    
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    [mysqld]
    init_connect='SET collation_connection = utf8_unicode_ci'
    init_connect='SET NAMES utf8'
    character-set-server=utf8
    collation-server=utf8_unicode_ci
    skip-character-set-client-handshake
    skip-name-resolve
    
    保存(注意评论区该配置不对,不是collection而是collation)
    
    docker restart mysql
    

    Redis

    如果直接挂载的话docker会以为挂载的是一个目录,所以我们先创建一个文件然后再挂载,在虚拟机中。

    # 在虚拟机中,Linux如果不提前创建redis.conf,-v /mydata/redis/conf/redis.conf会把redis.conf当作目录
    mkdir -p /mydata/redis/conf
    touch /mydata/redis/conf/redis.conf
    
    docker pull redis
    
    docker run -p 6379:6379 --name redis \
    -v /mydata/redis/data:/data \
    -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
    -d redis redis-server /etc/redis/redis.conf
    
    # 直接进去redis客户端。
    docker exec -it redis redis-cli
    

    默认是不持久化的。在配置文件中输入appendonly yes,就可以aof持久化了。修改完docker restart redis,docker -it redis redis-cli

    exit
    vim /mydata/redis/conf/redis.conf
    # 插入下面内容,aof持久化
    appendonly yes
    保存
    
    docker restart redis
    

    设置redis容器在docker启动的时候启动

    docker update redis --restart=always
    

    nginx

    docker pull nginx:1.10
    # 随便启动一个nginx实例,只是为了复制出配置,放到docker里作为镜像的统一配置
    docker run -p 80:80 --name nginx -d nginx:1.10
    
    cd /mydata/nginx
    docker container cp nginx:/etc/nginx .
    然后在外部 /mydata/nginx/nginx 有了一堆文件
    mv /mydata/nginx/nginx /mydata/nginx/conf
    # 停掉nginx
    docker stop nginx
    docker rm nginx
    
    # 创建新的nginx
    docker run -p 80:80 --name nginx \
    -v /mydata/nginx/html:/usr/share/nginx/html \
    -v /mydata/nginx/logs:/var/log/nginx \
    -v /mydata/nginx/conf:/etc/nginx \
    -d nginx:1.10
    
    # 注意一下这个路径映射到了/usr/share/nginx/html,我们在nginx配置文件中是写/usr/share/nginx/html,不是写/mydata/nginx/html
    
    docker update nginx --restart=always
    

    测试

    cd /mydata/nginx/html/
    vim index.html
    随便写写
    测试 http://192.168.56.10:80
    

    dockers卸载

    docker 卸载
    使用yum安装docker(安装过程可以参照linux 安装docker),如需卸载docker可以按一下步骤操作:

    1、查看当前docker状态

    image.png

    如果是运行状态则停掉

    systemctl stop docker
    image.png

    2、查看yum安装的docker文件包

    yum list installed |grep docker
    image.png

    如果执行了上一步的删除操作,则这里的rpm就不会显示
    查看docker相关的rpm源文件,rpm -qa |grep docker
    image.png

    3、删除所有安装的docker文件包

    yum -y remove docker.x86_64
    image.png

    其他的docker相关的安装包同样删除操作,删完之后可以再查看下docker rpm源

    rpm -qa |grep docker
    image.png

    4、删除docker的镜像文件,默认在/var/lib/docker目录下

    image.png

    删除上述的docker目录

    rm -rf /var/lib/docker
    image.png

    到此docker卸载就完成了

  • 相关阅读:
    SQL Server 触发器
    T-SQL查询进阶-10分钟理解游标
    有关T-SQL的10个好习惯
    iOS 画虚线以及drawRect的使用总结:
    iOS一个for循环实现,几行 几列 的布局形式
    IOS 符合某类型的子视图批量从父视图中移除
    DESC 和 ASC
    把数组格式数据转换成字符串存入数据库
    Swift :?和 !
    Swift 类构造器的使用
  • 原文地址:https://www.cnblogs.com/codehaogg/p/15695127.html
Copyright © 2011-2022 走看看