Docker安装及操作

Posted Lossdate

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker安装及操作相关的知识,希望对你有一定的参考价值。

一、前置条件

  1. 环境
    案例用虚拟机安装
    CPU :2核心以上
    内存 :至少2G
    硬盘 :50G以上
    CentOS版本 :CentOS7 -> 7.8以上
  2. centos下载
    http://mirrors.aliyun.com/centos/7/isos/x86_64/
    

二、 centos配置

  1. 查看centos系统版本命令
    cat /etc/centos-release
    
  2. 配置阿里云yum源
    # 1.下载安装wget
    yum install -y wget
    
    # 2.备份默认的yum
    mv /etc/yum.repos.d /etc/yum.repos.d.backup
    
    # 3.设置新的yum目录
    mkdir -p /etc/yum.repos.d
    
    # 4.下载阿里yum配置到该目录中,选择对应版本
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    
    # 5.更新epel源为阿里云epel源(新安装的系统可省略前两步)
    mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup 
    mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup 
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    
    # 6.重建缓存
    yum clean all 
    yum makecache
    
    # 7.看一下yum仓库有多少包
    yum repolist
    
  3. 升级系统内核
    rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
    yum --enablerepo=elrepo-kernel install -y kernel-lt
    grep initrd16 /boot/grub2/grub.cfg
    grub2-set-default 0
    
    reboot
    
    #P.S. 做好快照备份
    
  4. 查看centos系统内核命令
    uname -r 
    uname -a
    #可以看到升级到了5.4.132 : 5.4.132-1.el7.elrepo.x86_64
    
  5. 其它查看命令
    #查看CPU命令
    lscpu
    #查看内存命令
    free 
    free -h
    free -m
    #查看硬盘信息
    fdisk -l
    
  6. 关闭防火墙
    systemctl stop firewalld 
    systemctl disable firewalld
    
  7. 关闭selinux
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux 
    setenforce 0
    
  8. 网桥过滤
    vi /etc/sysctl.conf
    
    net.bridge.bridge-nf-call-ip6tables = 1 
    net.bridge.bridge-nf-call-iptables = 1 
    net.bridge.bridge-nf-call-arptables = 1 
    net.ipv4.ip_forward=1 
    net.ipv4.ip_forward_use_pmtu = 0
    
    # 生效命令 
    sysctl --system
    
  9. 添加命令自动补全
    # 安装bash-completion
    yum -y install bash-completion bash-completion-extras
    
    # 使用bash-completion
    source /etc/profile.d/bash_completion.sh
    
  10. P.S. 做好快照备份

三、Docker安装

  1. 阿里云开发者平台
    可以参考阿里云官网提供的docker安装教程进行安装

    https://www.aliyun.com/
    
  2. 前置条件

    yum install -y yum-utils device-mapper-persistent-data lvm2
    
  3. 添加源

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    yum makecache fast
    
  4. 查看版本

    yum list docker-ce --showduplicates | sort -r
    
  5. 安装

    # 安装最新版
    yum -y install docker-ce
    # 安装指定版本
    语法规则:yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
    yum -y install docker-ce-18.06.3.ce-3.el7 docker-ce-cli.x86_64
    
    #这里安装19.03.9-3
    yum install -y docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7
    
  6. 启动

    systemctl start docker
    systemctl status docker
    
  7. 安装阿里云镜像加速器
    加速器地址:阿里云 -> 控制台 -> 容器镜像服务 -> 镜像工具 -> 镜像加速器

    mkdir -p /etc/docker
    
    tee /etc/docker/daemon.json <<-'EOF'
    
        "registry-mirrors": ["https://复制自己的加速器地址.mirror.aliyuncs.com"]
    
    EOF
    
    systemctl daemon-reload 
    systemctl restart docker
    
  8. 设置开机启动

    systemctl enable docker
    
  9. 查看信息

    docker -v 
    docker version
    docker info
    
  10. P.S. 做好快照备份

四、Docker镜像操作

  1. 官网地址
    https://docs.docker.com/engine/reference/run/
    
  2. Docker镜像(image)网址
    https://hub.docker.com/
    
  3. 查看镜像列表
    docker images 
    docker image ls
    
  4. save命令 -> 打包成tar
    docker save tomcat:9.0.20-jdk8-slim > tomcat9.slim.tar
    
  5. load命令 -> 解压成docker镜像
    docker load -i linux.tar 
    docker load < tomcat9.0.20.tar
    
    #--input , -i : 指定导入的文件
    #--quiet , -q : 精简输出信息
    
  6. search命令(不推荐使用 -> 直接官网查)
    docker search tomcat
    
  7. inspect命令
    可以获取镜像的详细信息,其中包括创建者,各层的数字摘要等
    如果想获取其中指定的一项内容,可以通过 -f 来指定
    docker inspect tomcat:9.0.20-jdk8-slim
    docker inspect -f ".Size" tomcat:9.0.20-jdk8-slim
    
  8. history命令
    可以列出各个层的创建信息
    docker history tomcat:9.0.20-jdk8-slim
    
  9. tag命令
    标记本地镜像,将其归入某一仓库
    docker tag tomcat:9.0.20-jdk8-slim lossdate/tomcat:9
    
  10. rmi命令 -> 删除
    docker rmi tomcat:9.0.20-jdk8-slim
    docker image rm tomcat:9.0.20-jdk8-slim
    
    #常用参数
    #-f, -force : 强制删除镜像,即便有容器引用该镜像
    #-no-prune : 不要删除未带标签的父镜像
    
  11. 清理镜像
    docker image prune
    
    #-a, --all : 删除所有没有用的镜像,而不仅仅是临时文件
    #-f, --force :强制删除镜像文件,无需弹出提示确认
    

五、Docker容器操作

  1. 新建并启动容器

    #语法 
    docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    #运行容器
    docker run -it --rm -p 8080:8080 tomcat:9.0.20-jdk8-slim
    #后台运行容器
    docker run -itd --name tomcat9 -p 8083:8080 tomcat:9.0.20-jdk8-slim
    
    #常用参数
    -d, --detach=false: 后台运行容器,并返回容器ID
    -i, --interactive=false: 以交互模式运行容器,通常与 -t 同时使用
    -P, --publish-all=false: 随机端口映射,容器内部端口随机映射到主机的端口。不推荐使用该参数
    -p, --publish=[]: 指定端口映射,格式为:主机(宿主)端口:容器端口,推荐使用
    -t, --tty=false: 为容器重新分配一个伪输入终端,通常与 -i 同时使用
    --name="nginx-lb": 为容器指定一个名称
    -h , --hostname="laosiji": 指定容器的hostname
    -e , --env=[]: 设置环境变量,容器中可以使用该环境变量
    --net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型
    --link=[]: 添加链接到另一个容器;不推荐使用该参数
    -v, --volume : 绑定一个卷
    --privileged=false: 指定容器是否为特权容器,特权容器拥有所有的capabilities
    --restart=no:指定容器停止后的重启策略
        no:容器退出时不重启
        on-failure:容器故障退出(返回值非零)时重启
        always:容器退出时总是重启,推荐各位小伙伴们使用
    --rm=false: 指定容器停止后自动删除容器,不能以docker run -d启动的容器
    
  2. 容器日志

    #语法
    docker logs [OPTIONS] CONTAINER
    #执行命令
    docker logs -f tomcat9
    
    #常用参数
    -f : 跟踪日志输出
    --tail :仅列出最新N条容器日志
    
  3. 删除容器

    #语法
    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    
    #需要先停止运行中的容器再删除,否则无法删除容器
    docker stop tomcat9
    #按照容器名称删除 
    docker rm tomcat9
    #按照容器ID删除 
    docker rm 8dd95a95e687
    
    #常用参数
    -f :通过 SIGKILL 信号强制删除一个运行中的容器
    -l :移除容器间的网络连接,而非容器本身
    -v :删除与容器关联的卷
    
  4. 查看容器列表

    #语法
    docker ps [OPTIONS]
    #查看运行中的容器
    docker ps
    #查看所有容器
    docker ps -a
    
    #常用参数
    -a :显示所有的容器,包括未运行的
    -q :只显示容器编号
    
    #实用技巧
    #停止所有运行容器
    docker stop $(docker ps -qa)
    #删除所有的容器
    docker rm $(docker ps -aq)
    docker rm $(docker stop $(docker ps -q))
    #删除所有的镜像
    docker rmi $(docker images -q)
    
  5. 创建容器
    创建一个新的容器但不启动它

    #语法
    docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
    #执行命令
    docker create -it --name tomcat9 -p tomcat:9.0.20-jdk8-slim
    
  6. 启动、关闭、重启容器

    #语法
    docker start [OPTIONS] CONTAINER [CONTAINER...]
    docker stop [OPTIONS] CONTAINER [CONTAINER...]
    docker restart [OPTIONS] CONTAINER [CONTAINER...]
    #执行命令
    docker start tomcat9
    docker stop tomcat9
    docker restart tomcat9
    
  7. 进入容器
    在运行的容器中执行命令

    #语法
    docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    #执行命令
    	docker exec -it [id] /bin/bash
        
        #有bash命令的linux系统:例如centos
        docker exec -it tomcat9 /bin/bash
        
        #没有bash命令的linux系统:例如alpine系统
        docker exec -it tomcat9 sh
    
    #退出
    exit
        
    #常用参数
    -i :即使没有附加也保持STDIN 打开
    -t :分配一个伪终端
    
  8. 查看容器

    #语法
    docker inspect [OPTIONS] NAME|ID [NAME|ID...]
    #执行命令
    docker inspect tomcat9
    
    #常用参数
    -f :指定返回值的模板文件
    -s :显示总的文件大小
    --type :为指定类型返回JSON
    
  9. 更新容器

    #语法
    docker update [OPTIONS] CONTAINER [CONTAINER...]
    
    #更新容器restart策略
    docker update --restart always tomcat9
    
  10. kill

    #语法
    docker kill [OPTIONS] CONTAINER [CONTAINER...]
    #执行命令
    docker kill tomcat9
    
    #常用参数
    -s :向容器发送一个信号
    

六、nginx安装

  1. 官网地址
    https://hub.docker.com/_/nginx
    
  2. 拉取镜像
    docker pull nginx:1.20.1-alpine
    
  3. 备份镜像(可省略)
    docker save nginx:1.20.1-alpine -o nginx:1.20.1-alpine.tar
    
  4. 导入镜像(可省略)
    docker load -i nginx:1.20.1-alpine.tar
    
  5. 运行镜像
    docker run -itd --name nginx -p 80:80 nginx:1.20.1-alpine
    
    #进入容器
    docker exec -it nginx sh
    #配置文件目录
    cat /etc/nginx/nginx.conf
    #查看html目录
    cd /usr/share/nginx/html
    
  6. 测试
    访问:http://192.168.200.128/

七、mysql安装

  1. 官网地址
    https://hub.docker.com/_/mysql
    
  2. 拉取镜像
    docker pull mysql:5.7.34
    
  3. 备份(略)
  4. 运行镜像
    -e , --env=[]: 设置环境变量,容器中可以使用该环境变量
    官网中给出进入容器的第三种方式bash(前边有/bin/bash,sh) 向my.cnf文件中追加相关配置项
    docker run -itd --name mysql --restart always --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.34 --character-set-server=utf8 --collation-server=utf8_general_ci
    
  5. 测试
    #进入容器
    docker exec -it mysql bash
    #登录mysql
    mysql -uroot -p
    #输入密码
    123456
    
    use mysql; 
    show databases;
    #退出mysql
    exit
    
    cat /etc/issue
    #返回信息:Debian GNU/Linux 10 \\n \\l
    
    #查看日志
    docker logs mysql
    
    #退出容器
    exit
    

八、zookeeper安装

  1. 官网地址
    https://hub.docker.com/_/zookeeper
    
  2. 拉取镜像
    docker pull zookeeper:3.7.0
    
  3. 备份(略)
  4. 运行镜像(单机版)
    docker run -itd --name zookeeper --restart always -p 2181:2181 zookeeper:3.7.0
    
    #进入容器
    docker exec -it zookeeper /bin/bash
    cat /etc/issue
    #返回信息:Debian GNU/Linux 10 \\n \\l
    
  5. ZooInspector测试
    #下载地址
    https://issues.apache.org/jira/secure/attachment/12436620/ZooInspector.zip
    
    #进入目录ZooInspector\\build,运行zookeeper-dev-ZooInspector.jar
    #点击左上角连接按钮,输入zk 服务地址:ip或者主机名:2181
    #点击OK,即可查看ZK节点信息
    java -jar zookeeper-dev-ZooInspector.jar
    

九、 ActiveMQ安装

  1. 官网地址
    https://hub.docker.com/r/webcenter/activemq
    
  2. 拉取镜像
    在这里插入代码片docker pull webcenter/activemq:5.14.3
    
  3. 备份(略)
  4. 运行镜像(单机版)
    61616为ActiveMQ的外部访问端口, 8161为web页面访问端口
    docker run -itd --name activmq --restart always -p 61616:61616 -p 8161:8161 webcenter/activemq:5.14.3
    
    #进入容器
    docker exec -it activmq /bin/bash
    cat /etc/issue
    #返回信息: Ubuntu 15.10 \\n \\l
    
  5. 测试
    访问管理界面
    http://192.168.200.128:8161/
    
    登入(admin/admin)

以上是关于Docker安装及操作的主要内容,如果未能解决你的问题,请参考以下文章

Docker的核心及安装

ubuntu14.04环境下利用docker搭建solrCloud集群

Docker介绍及安装

docker系列使用非root用户安装及启动docker(rootless模式运行)

Docker 安装logstash 7.3.0 及挂在宿主机对应目录

Docker图形化管理工具--Portainer简介及部署