docker 使用

Docker 使用

安装docker
  • mac 安装 Docker

    brew cask install docker
    
    # 若没有安装brew工具,先使用命令安装homebrew包管理工具
    
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  • linux 安装 Docker

    #1.卸载旧版本 
    yum remove docker  docker-client  docker-client-latest  docker-common  docker-latest  docker-latest-logrotate  docker-logrotate  docker-engine
    
    #2.需要的安装包 
    yum install -y yum-utils 
    
    #3.设置镜像的仓库 
    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #上述方法默认是从国外的,不推荐 
    
    yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #推荐使用国内的 
    
    #4.更新软件包索引 
    yum makecache fast 
    
    #5.安装docker docker-ce 社区版 而ee是企业版 
    yum install docker-ce docker-ce-cli containerd.io # 这里我们使用社区版即可 
    
    #6.启动docker 
    systemctl start docker 
    
    #7.使用docker version 查看是否安装成功 
    docker version
    
  • windows 安装docker

    • 下载 Docker Desktop并安装,如果启动失败,按照提示操作,即可解决。随后便可以在powershell中使用docker了
卸载 Docker
  • 服务器卸载docker

    #1.卸载依赖 yum/apt
    yum remove docker-ce docker-ce-cli containerd.io 
    apt remove docker-ce docker-ce-cli containerd.io 
    
    #2. 删除资源 /var/lib/docker 是docker的默认工作路径!
    rm -rf /var/lib/docker
    

Docker 简单命令
  • 测试命令

    docker -v / docker --version         # 查看docker版本
    docker pull hello-world               # 一个简单的测试镜像
    docker run  hello-world                
    
  • 镜像相关操作

    # 搜索、下载
    docker search image_name			 # 搜索镜像
    docker pull image_name               # 下载镜像
    docker load -i xxx.zip               # 加载文件到镜像
    docker images                        # 查看所有镜像
    # 删除
    docker rmi image-id                  # 删除镜像
    docker rmi -f $(docker images -aq)   # 删除所有镜像
    docker images -aq | xargs docker rmi # 删除所有镜像
    # 修改
    docker tag image_id image_name:tag_name  # 修改镜像tag
    
  • 容器相关操作

    docker ps                            # 查看所有容器
    docker ps -aq                        # 获取所有容器 ID
    docker stop container-id             # 停止容器运行
    docker stop $(docker ps -aq)         # 停止所有容器
    docker ps -aq | xargs docker stop    # 停止所有容器
    docker restart container-id          # 重启容器
    docker rm container-id               # 删除容器,不能删除正在运行的容器。可先暂停,后删除
    docker rm -f $(docker ps -aq)        # 删除所有容器
    docker ps -aq | xargs docker rm      # 删除所有容器
    
    docker commit -m "my images" container_id REPOSITORY:TAG   # 容器——>镜像
    	-m # 描述
    	-a # 作者
    	-c # 使用Dockerfile指令来创建镜像
    	-p # 在commit时,将容器暂停
    
  • docker服务重启

    • systemctl 方式

      systemctl daemon-reload  # 守护进程重启
      systemctl restart docker  # 重启docker服务
      systemctl stop docker  # 关闭docker
      
    • service 方式

      service docker restart  # 重启docker服务
      service docker stop  # 关闭docker
      

运行 Redis 镜像
  • 创建容器

    docker run -p 6379:6379 -d redis:latest redis-server  # 基本
    docker run -p 6379:6379 --name redis_spider -v /Users/hui/redis/redis_spider/conf/redis.conf:/etc/redis/redis.conf -v /Users/hui/redis/redis_spider/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes  # 包含配置
    
  • 连接redis

    docker exec -ti containerid redis-cli  # 此命令可以在终端中操作redis
    redis-cli -h host -p port -a password  # 远程连接   连接时,若有中文乱码,--raw
    
  • 设置密码

    config get requirepass      # 查看是否设置密码
    config set requirepass 密码  # 设置密码
    AUTH '密码'                  # 验证密码
    

运行 Mysql 镜像
  • 创建容器

    docker run --name mysql01 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:latest
    
  • 连接mysql

    docker exec -ti container_id /bin/bash  # 进入容器
    
    # 终端直接操作
    mysql -u root -p                        # 登录 mysql
    ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';  # 修改 root 可以通过任何客户端连接
    
    # 代码连接数据库事的配置信息
    MYSQL_HOST = '127.0.0.1'
    MYSQL_PORT = 3306           # 注意:port端口号是int,不能写成字符串
    MYSQL_DB = 'dishonest'
    MYSQL_USER = 'root'
    MYSQL_PASSWORD = '123'
    
  • 操作mysql

    # 删除数据库中数据后,新增数据ID不从1开始,而是继续增加。
    truncate table table_name;  # 此命令会清空表,再次增加数据,会从id为1开始
    

运行centos8镜像
  • 创建容器

    docker search centos
    docker pull centos
    
    docker run -dit -p 5001:22 --privileged=true image_id /sbin/init  # 最好设置port映射
    	--privileged=true  # 获取真正的root权限
    	-d  # 守护进程
    	/sbin/init  # 这样启动,可以正常使用 systemctl 命令
    
    docker exec -it container_id /bin/bash
    
  • 安装ifconfig

    • yum search ifconfig

      • 报错:Error: Failed to download metadata for repo 'appstream'

      • 原因:下载源的问题

      • 解决: 本质替换extras、baseos、appstaream等3个repo配置文件内容

        1. 找到repo文件所在位置
            find / -name *repo  # 比如:/etc/yum.repos.d
        2. 需要替换的内容 
        	https://developer.aliyun.com/mirror/centos   # 可以看看
        	https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo  # 目标
        3. 替换:将curl得到的内容,替换到
            curl -o /etc/yum.repos.d/CentOS-Linux-Extras.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
            curl -o /etc/yum.repos.d/CentOS-Linux-BaseOS.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
            curl -o /etc/yum.repos.d/CentOS-Linux-AppStream.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
        
        4. 安装扩展,清理缓存,生成缓存,查看可用源
        dnf clean all
        dnf makecache
        dnf repolist
        
    • yum install net-tools.x86_64

  • 启用service命令 bash: service: command not found

    yum list | grep initscripts  # 可以搜到 initscripts.x86_64
    yum install initscripts -y   # 完成
    
  • 安装ssh

    yum install -y openssl openssh-server   # 安装基本的包
    systemctl start sshd.service # 启动ssh的服务 《===》 service sshd.service start 
    systemctl enable sshd.service  # 设置开机自动启动ssh 服务
    /usr/sbin/sshd -D  # 启动ssh
    cd ~; chmod 700 .ssh; chmod 600 .ssh/*   # 赋予权限
    
    yum install openssh*
    
  • 安装其他基础工具

     yum install -y unzip zip
     yum install net-tools
     yum install wget.x86_64
     yum install firewalld systemd -y
    
  • 使用mobax链接服务器了


报错
  • error during connect: This error may indicate that the docker daemon is not running.
    • 原因:桌面docker没有启动
    • 解决:启动 Desktop Docker 即可
  • System has not been booted with systemd as init system (PID 1).
    • 注意容器生成命令:
      • docker run -dit -p 5001:22 --privileged=true image_id /sbin/init # /sbin/init 是重点
posted @ 2022-02-25 10:38  疯狂列表推导式  阅读(62)  评论(0编辑  收藏  举报