• docker命令集锦


    sudo docker image ls    查看有哪些image镜像
    sudo docker run hello 运行image


    删除全部container
    docker rm $(docker container ls -aq)
    删除全部退出的container
    docker rm $(docker container ls -f "status=exited" -q)

    docker container commit (docker commit)
    docker image build (docker build)
    docker build -t felix/ubuntu-stress . 创建image

    docker exec -it fc02b5ea83bc /bin/bash 进入容器中运行命令
    docker exec -it fc02b5ea83bc python3
    docker exec -it fc02b5ea83bc ip a

    docker ps -a 查看全部容器

    docker inspect fc02b5ea83bc 显示容器完整的信息

    docker run -it ubuntu 交互模式下运行ubuntu这个image
    # --name 起个别名 --link 链接到别名为test1的容器,之后可以用别名代替ip,比如说用在数据库。
    docker run -d --name test2 --link test1 ubuntu /bin/sh -c "while true;do sleep 3600;done"

    docker logs fc02b5ea83bc 查看容器的日志

    docker network inspect fc02b5ea83bc 获取镜像的网络元数据
    docker network ls    查看网络

    生成新的image建议都通过Dockerfile来生成
    例如:
    FROM ubuntu
    RUN apt-get update
    RUN apt-get install -y vim
    Dockerfile例子
    FROM ubuntu
    RUN apt-get update && apt-get install -y stress
    ENTRYPOINT ["/usr/bin/stress"]
    CMD []
    docker 命令构建行工具例子
    docker network create -d bridge my-bridge   # 创建自己的bridge网络
    docker run -d --name test3 --network my-bridge ubuntu   # 创建时将默认网络bridge链接到自己创建的bridge
    
    docker network connect my-bridge test1    # 将test1连接到自己创建的bridge网络
    docker创建自己的bridge网络
    docker pull nginx     从docker hub中下载nginx
    docker run --name web -d -p 80:80 nginx      运行并将端口映射到主机的80端口
    然后通过ifconfig查到ip地址就能访问了
    docker搭建nginx通过端口映射访问
    # 部署mysql
    docker run -d --name mysql -v mysql-date:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql
    # 部署wordpress
    docker run -d -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 8080:80 wordpress
    docker搭建wordpress和部署
    Dockerfile 语法
    
    FROM:
        fROM scratch  # 制作base image
        FROM ubuntu   # 使用base image
        FROM ubuntu:18.04 
    
    尽量使用官方的image作为base image

    LABEL:
      LABEL maintainer="felixwang@qq.com"
      LABEL version="1.0"
      LABEL description="This is description"

    Metadata不可少!

    RUN:
      RUN apt-get update && apt-get install -y vim
         python-dev # 反斜杠表示换行
      RUN apt-get update && apt-get install -y perl
         pwgen --no-install-recommends && rm -rf
         /var/lib/apt/lists/* # 注意清理缓存

    为了美观,复杂的RUN请用反斜杠换行!避免无用分层,合并多条命令成一行!


    WORKDIR:
      WORKDIR /root
      WORKDIR /test # 如果没有会自动创建test目录
      WORKDIR demo
      RUN pwd # 输出应该是 /root/test/demo

    用WORKDIR,不要用RUN cd!尽量使用绝对目录!

    ADD and COPY
      ADD hello /
      ADD test.tar.gz / # 添加到根目录并解压
      WORKDIR /root
      ADD HELLO test/ # /root/test/hello
      COPY hello test/

    大部分情况,copy优于ADD!ADD除了COPY还有额外功能(解压!)
    添加远程文件/目录请使用curl或者wget!


    ENV:
      ENV MYSQL_VERSION 5.6 #设置常量
      RUN apt-get install -y mysql-server="${MYSQL_VERSION}"
         && rm -rf /var/lib/apt/lists/* # 引用常量

    尽量使用ENV增加可维护性

    VOLUME and EXPOSE:
      后面补充

    CMD and ENTRYPOINT:
      后面补充


    RUN:执行命令并创建新的Image Layer
    CMD:设置容器启动后默认执行的命令和参数
    ENTRYPOINT:设置容器启动时运行的命令

    CMD:容器启动时默认执行的命令
       如果docker run指定了其他命令,CMD命令会被忽略
       如果定义了多个CMD,只有最后一个会执行

    ENTRYPOINT:让容器以应用程序或者服务的形式运行
           不会被忽略,一定会执行

     
    三种网络结构:
    docker bridge
    docker none
    docker host
    数据持久化-方式一
    docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql     安装并初始化mysql
    docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql 指定数据存取目录
    docker volume ls 查看存在的十九画数据库
    docker volume rm 926c67936e2e69d736b9649416c516cf38e93b4f053ee73b2dff9c1ce3148ba8 删除数据库
    然后通过docker exec -it mysql2 /bin/bash 进入查看

    数据持久化-方式二  bind mounting
    docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name web my-nginx 也可以使用-v 然后通过地址映射进行文件同步


    docker操作小技巧:不用每次执行命令都添加sudo

    sudo groupadd docker
    sudo gpasswd -a felix docker    将当前用户加入到组
    sudo service docker restart    重启docker服务
    然后退出shell,重新连接,这回执行docker命令可以不用加上sudo
  • 相关阅读:
    时间计算
    DateTime
    C# trim split dataGrid
    something
    生活
    如何导入外部的源码到eclipse中
    java类中获取ServletContext的方法
    获取spring容器上下文(webApplicationContext)的几种方法
    java反射(转)
    mysql常见命令
  • 原文地址:https://www.cnblogs.com/felixwang2/p/9442843.html
Copyright © 2020-2023  润新知