zoukankan      html  css  js  c++  java
  • bayaim——docker.txt

    #菜鸟教程地址
    https://www.runoob.com/docker/docker-tutorial.html
    #docker官方地址仓库
    https://hub.docker.com/


    ------docker 安装------------
    1.更新内核
    yum update
    2.下载安装脚本
    curl -fsSL https://get.docker.com -o get-docker.sh
    3.执行安装
    sh get-docker.sh

    yum install -y docker-io

    yum install -y docker-ce (默认版本是ce的稳定版本)

    使用yum安装Docker
    $ sudo yum install docker-ce docker-ce-cli containerd.io


    按安装: https://www.jianshu.com/p/9c96ea8e6f41


    --------------------------------------


    4.常见操作命令

    systemctl status docker //查看docker服务的状态
    systemctl start docker //启动docker服务
    systemctl stop docker //停止docker服务
    systemctl restart docker //重启dokcer服务

    docker --help
    docker COMMAND --help
    docker version //docker版本信息
    docker search httpd //查找镜像
    docker pull 镜像名称:镜像版本号 //从docker官方镜像仓库下载镜像
    docker pull mysql
    docker pull mysql:5.7.27
    docker images //查看本地镜像
    docker images |grep mysql
    docker ps //查看运行的容器
    docker ps -a //查看所有的容器
    docker ps -l 命令获得最后一个容器的id,docker ps -a查看所有的容器。

    查看指定时间后的日志,只显示最后100行:
    $ docker logs -f -t --since="2019-07-08" --tail=100 CONTAINER_ID
    查看最近30分钟的日志:
    $ docker logs --since 30m CONTAINER_ID
    查看某时间之后的日志:
    $ docker logs -t --since="2018-02-08T13:23:37" CONTAINER_ID


    -----------------------------------------------------------------------------
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...] //创建一个新容器并且运行该容器
    常见OPTIONS说明:
    -a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;
    -d: 后台运行容器,并返回容器ID;
    -i: 以交互模式运行容器,通常与 -t 同时使用;
    -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: 绑定一个卷


    //例如运行一个mysql

    docker run --name nginx -d -p 81:80 --privileged=true --restart=always -m 2048M --memory-swap -1 -v /usr/nginx/logs:/var/log/nginx nginx:latest
    //mysql

    docker stop mysql
    docker rm mysql


    docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true mysql:5.7


    docker run --name mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root --privileged=true --restart=always -m 2048M --memory-swap -1 -v /data/mysql/data:/var/lib/mysql -v /tmp/my.cnf:/etc/mysql/conf.d/mysql.cnf -v /tmp/mysql-init:/docker-entrypoint-initdb.d/ mysql:5.7

    docker run --publish-all --name p57 -it -e MYSQL_ALLOW_EMPTY_PASSWORD=1 percona:5.7
    --innodb_buffer_pool_size=4GB
    --innodb_log_file_size=1G
    --skip-log-bin
    --innodb_flush_log_at_trx_commit=0
    --innodb_flush_method=nosync
    --innodb_io_capacity=2000
    --innodb_io_capacity_max=3000
    --max_allowed_packet=1G
    time (mysql --max_allowed_packet=1G imdb1 < imdb.sql )
    # real 59m34.252s


    docker ps
    docker start mysql
    docker ps
    docker logs -f --tail=100 mysql

    ------------------
    检验:

    查看端口:
    lsof -i :3306
    netstat -lnt|grep 330
    ps -ef | grep 3306
    mysql -uroot -proot -h10.20.100.21 -P3306

    select Host,User from mysql.user;
    select count(*) from processlist;
    show full processlist
    show variables like 'sql_mode%';
    查看隔离级别:
    show variables like '%iso%';
    show variables like '%auto%';
    ------------------------------------------------------------------------
    docker run -i -t centos /bin/bash 在容器里启动一个/bin/bash shell环境,可以登录进入操作,其中-t 表示打开一个终端的意思,-i表示可以交互输入。
    docker run -d -i -t centos /bin/bash 在后台启动
    docker run -d centos:v1 /bin/bash ,-d表示在后台启动,以daemon方式启动。
    docker run -d -p 80:80 -p 8022:22 centos:latest /usr/bin/sshd -D
    docker run -d --name mynginx nginx
    docker run -d --name mynginx nginx:1.17


    检查端口:
    netstat -nutlp | grep 65000
    检查服务是否有:
    docker service ls|more

    docker service ls| wc -l


    检查镜像是否有:
    docker images
    docker images | wc -l

    确认私服地址及docker0网段信息
    docker info
    route -n

    检查overlay网络
    docker network ls

     

    docker start 容器名称 //启动容器
    docker stop 容器名称 //停止运行的容器
    docker restart 容器名称 //重启容器
    docker rm 容器名称 //删除容器 --必须停止容器才能删除容器
    docker inspect 容器名称 //查看容器详细
    docker logs -f --tail=100 容器名称 //查看容器日志并指定日志行数为100
    docker rmi 镜像名称:镜像版本号 //删除镜像 --必须删除容器才能删除镜像

    docker exec -it 容器名称 /bin/bash //进入容器内部

    //进入容器内部(方法一)
    docker exec -it base_mongodb.1.u3y220s9k7riwtpd882qxmszi /bin/bash
    //进入容器内部(方法二)
    docker exec -it 0634a9046337 /bin/bash

     

    ---------删除所有正在运行和已停止的容器

    docker stop $(docker ps -a -q)
    docker rm $(docker ps -a -q)

    ---------#显示所有的容器,过滤出Exited状态的容器,取出这些容器的ID,

    sudo docker ps -a|grep Exited|awk '{print $1}'

    --------#删除所有未运行的容器(已经运行的删除不了,未运行的就一起被删除了)

    sudo docker rm $(sudo docker ps -a -q)


    我们可以通过运行exit命令或者使用CTRL+D来退出容器。

    ---------------------------------------------------------------------------------------
    配置docker源

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    安装docker的依赖包

    yum install -y yum-utils lvm2 device-mapper-persistent-data

    1.配置docker源
    yum install -y epel-release

    2.安装docker
    yum install -y docker-io
    3.重启
    systemctl enable docker.service ### 开机启动

     


    离线安装包
    1. 先安装如下rpm依赖文件
    audit-libs-python-2.8.4-4.el7.x86_64.rpm
    checkpolicy-2.5-8.el7.x86_64.rpm
    libcgroup-0.41-20.el7.x86_64.rpm
    libseccomp-2.3.1-3.el7.x86_64.rpm
    libsemanage-python-2.5-14.el7.x86_64.rpm
    policycoreutils-2.5-29.el7.x86_64.rpm
    policycoreutils-python-2.5-29.el7.x86_64.rpm
    python-IPy-0.75-6.el7.noarch.rpm
    setools-libs-3.3.8-4.el7.x86_64.rpm
    把上述文件放在同一目录下,并在同目录下执行如下命令可以实现一起安装:

    rpm -ivh *.rpm --nodeps --force

    rpm -ivh audit-libs-python-2.8.4-4.el7.x86_64.rpm
    rpm -ivh checkpolicy-2.5-8.el7.x86_64.rpm
    rpm -ivh libcgroup-0.41-20.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm
    rpm -ivh policycoreutils-2.5-29.el7.x86_64.rpm --nodeps --force
    rpm -ivh policycoreutils-python-2.5-29.el7.x86_64.rpm --nodeps --force
    rpm -ivh python-IPy-0.75-6.el7.noarch.rpm
    rpm -ivh setools-libs-3.3.8-4.el7.x86_64.rpm

    rpm -ivh audit-libs-python-2.8.4-4.el7.x86_64.rpm checkpolicy-2.5-8.el7.x86_64.rpm libcgroup-0.41-20.el7.x86_64.rpm libseccomp-2.3.1-3.el7.x86_64.rpm libsemanage-python-2.5-14.el7.x86_64.rpm policycoreutils-2.5-29.el7.x86_64.rpm policycoreutils-python-2.5-29.el7.x86_64.rpm --nodeps --force python-IPy-0.75-6.el7.noarch.rpm
    setools-libs-3.3.8-4.el7.x86_64.rpm


    2.安装docker相关rpm

    rpm -ivh container-selinux-2.9-4.el7.noarch.rpm
    rpm -ivh docker-ce-cli-19.03.0-3.el7.x86_64.rpm
    rpm -ivh docker-ce-19.03.0-3.el7.x86_64.rpm --nodeps --force


    ---------------------------------------------------------------------------------------
    卸载docker
    停止docker服务

    systemctl stop docker
    yum remove docker-ce-cli.x86_64
    yum remove docker-ce.x86_64

    ---------------------------------------------------------------------------------------
    迁移步骤
    1. 首先需要停止docker服务

    systemctl stop docker
    2. 通过命令df -h 先去看下磁盘大概的情况,找一个大的空间

    3. 创建docker的新目录,我这边找了data, 所以我这边的新目录地址是 /data/docker/lib/

    mkdir -p /data/docker/lib
    注:参数-p 确保目录名称存在,如果目录不存在的就新创建一个。

    4. 开始迁移

    rsync -avzP /var/lib/docker /data/docker/lib/
    先确认是否安装了rsync.

    参数解释:

    -a,归档模式,表示递归传输并保持文件属性。
    -v,显示rsync过程中详细信息。可以使用"-vvvv"获取更详细信息。
    -P,显示文件传输的进度信息。(实际上"-P"="--partial --progress",其中的"--progress"才是显示进度信息的)。
    -z, 传输时进行压缩提高效率。
    5. 先去/etc/systemd/system/docker.service.d的目录下看下是否存在devicemapper.conf。如果不存在,就新建一个。在文件里加入如下内容并保存。

    [Service]
    ExecStart=
    ExecStart=/usr/bin/dockerd --graph=/data/docker/lib/docker

    6. 重启docker
    systemctl daemon-reload
    systemctl restart docker
    systemctl enable docker

    7. 启动之后确认docker 没有问题,删除旧的/var/lib/docker/目录

     

     

     

     

     

     

     

     

  • 相关阅读:
    codeforces C. No to Palindromes!
    codeforces D. Pashmak and Parmida's problem
    codeforces C. Little Pony and Expected Maximum
    codeforces D. Count Good Substrings
    codeforces C. Jzzhu and Chocolate
    codeforces C. DZY Loves Sequences
    codeforces D. Multiplication Table
    codeforces C. Painting Fence
    hdu 5067 Harry And Dig Machine
    POJ 1159 Palindrome
  • 原文地址:https://www.cnblogs.com/bayaim/p/11968884.html
Copyright © 2011-2022 走看看