美文网首页
Docker Tips

Docker Tips

作者: Lyudmilalala | 来源:发表于2021-08-10 10:14 被阅读0次

    1. 当前用户不用sudo就可以使用docker命令

    需要sudo的原因:docker daemon需要绑定到主机的Unix socket而不是普通的TCP端口,而Unix socket的属主为root用户

    sudo groupadd docker    # 如果没有docker用户组,创建一个
    sudo gpasswd -a ${USER} docker   # 将当前用户添加到docker用户组
    sudo gpasswd -a <username> docker    # 将指定用户添加到docker用户组
    sudo systemctl restart docker    # 重启docker服务
    sudo chmod a+rw /var/run/docker.sock    # 添加访问和执行权限
    

    2. 各种创建后台运行的容器(防启动后终止)

    映射卷轴时最好用全局路径,以免相对路径指向docker默认全局prefix下的相对路径
    ubuntu 初始化容器

    docker run -itd --name ubuntu-test -v D:\SpinQKit\spinqkit:/opt/spinqkit ubuntu:latest /bin/bash
    

    mysql 初始化容器

    docker run -itd --name mysql-test -p 4406:3306 
                      -e MYSQL_ROOT_PASSWORD=123456 
                      -v /home/mysql_data:/var/lib/mysql    # mysql数据文件地址
                      -v /home/mysql_init:/docker-entrypoint-initdb.d    # 初始化地址
                      -v  /home/mysql_conf:/etc/mysql/conf.d    # 配置文件地址
                      mysql:5.7
    

    redis 初始化容器

    docker run -itd--name redis-test -p 6379:6379  -p 18088:8088
                      -v /home/redis/logs:/opt/redis.log 
                      -v /home/redis/data:/opt/data 
                      -v /home/redis/conf/redis.conf:/opt/redis.conf
                      --privileged=true   # 提升容器内权限
                      –appendonly yes   # 开启数据持久化
                      redis redis-server /opt/redis.conf 
    

    zookeeper 初始化容器

    docker run -itd --name zookeeper-test -p 2181:2181 --restart always zookeeper
    

    3. 其他增删查改小技巧

    查看正在运行的容器

    docker ps
    

    查看所有容器

    docker ps -a
    

    查看容器详情

    docker inspect <container_id>;
    

    通过shell进入正在运行的容器,进行调试

    docker exec -it mysql-test /bin/bash
    

    删除所有已经停止运行的容器

    docker rm $(docker ps -qf status=exited)
    # 或者
    docker container prune
    

    删除容器

    docker rm -f $DOCKER_ID_OR_NAME   # 强制删除
    docker rm -v $DOCKER_ID_OR_NAME   # 删除挂载的卷
    docker container prune   # 删除所有停止运行的容器
    

    4. log

    跟踪显示日志

    docker logs -f $DOCKER_ID_OR_NAME 
    

    查看某容器自某时起的最新10条日志

    docker logs --since="2021-11-26" --tail=10 $DOCKER_ID_OR_NAME 
    

    5. 镜像

    从Dockerfile生成镜像

    // get into the directory of Dockerfile
    docker build -t <image_name>:<image_tag> .
    

    将容器转化为镜像

    docker commit (-a <my_name>) -m <comment> <container_id_or_name> <image_name>:<image_version>
    // e.g. docker commit -m "SpinQ Jenkins Test" 3d039cd7ebbf spinq-jenkins
    

    复制镜像并重命名(常在上传镜像添加用户名时使用)

    docker tag <image_name>:<image_tag>  <user_name>/<image_name>:<image_tag>
    // e.g. docker tag grpc-server-java:1.0.0 lyudmilalala/grpc-server-java:1.0.0
    

    查看悬挂中的镜像

    docker image ls -f dangling=true
    

    删除某个镜像
    需要携带tag,不带tag默认为latest

    docker rmi <image_id>:<image_tag>
    docker rmi -f <image_id>:<image_tag>    # 强制删除
    

    删除悬挂中的镜像

    docker image rm $(docker image ls -f dangling=true -q)
    

    或者

    docker image prune
    

    上传镜像到docker hub

    1. Docker Hub注册账号,并创建一个和你想要的镜像同名的repository

      1.png
      2.png
    2. 本机登录账号

    $ docker login -u <user_name> -p <user_password>
    WARNING! Using --password via the CLI is insecure. Use --password-stdin.
    Login Succeeded
    
    1. 如果本地镜像命名没有账号名前缀的话,需要将镜像重命名
    docker tag grpc-server-java:1.0.0 lyudmilalala/grpc-server-java:1.0.0
    
    1. 将本地镜像推上repository
    $ docker push lyudmilalala/grpc-server-java:1.0.0
    The push refers to repository [docker.io/lyudmilalala/grpc-server-java]
    0f80b451fce4: Pushed 
    bff9fe6e429c: Mounted from library/openjdk 
    7c245b2fe4f1: Mounted from library/openjdk 
    f9e18e59a565: Mounted from library/openjdk 
    26a504e63be4: Mounted from library/openjdk 
    8bf42db0de72: Mounted from library/openjdk 
    31892cc314cb: Mounted from library/openjdk 
    11936051f93b: Mounted from library/openjdk 
    1.0.0: digest: sha256:480f6fd3371ddf4cd145b45ddd5ef236dd5d85b8f7012af8720ba7c9c41848cb size: 2007
    

    查看Docker Hub可以看到repository里记录的变化


    3.png

    终端查看镜像可以发现已上传的镜像

    $ docker search grpc-server-java
    NAME                            DESCRIPTION                         STARS     OFFICIAL   AUTOMATED
    lyudmilalala/grpc-server-java   A grpc server based on SpringBoot   0   
    

    6. 清理内存

    查看内存使用情况

    docker system df
    

    一键清理

    docker system prune
    

    相关文章

      网友评论

          本文标题:Docker Tips

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