• docker学习笔记


    镜像常用命令

    
    # 显示所有镜像。等价于 docker image ls
    docker images
    
    # 删除镜像
    docker image rm <image id></image>
    
    # 删除为none的空镜像
    
    docker rmi $(docker images -f "dangling=true" -q)
    
    # 执行镜像,执行后立即退出
    docker run <image name> 
    
    # 执行镜像,交互式
    docker run -it <image name>
    
    # 执行镜像,-p 指定本机端口和docker中应用的端口映射,-d 表示后台运行,--name 表示给容器分配一个名字, -e 设置容器环境变量。
    docker run -p 3000:3000 -d -e MODE=test --name=express-demo <image name>
    
    # docker副本创建
    docker tag <image name> <new image name>
    
    # 查看镜像的层结构
    docker history <image id>
    
    # exit 退出交互式命令行
    exit
    
    

    容器常用命名

    # 显示所有container(运行中的和退出的), -a 表示所有容器。等价于 docker ps -a
    docker container ls -a 
    
    # 清除所有的container,-q 参数表示只列出id
    docker rm $(docker container ls -aq) 
    
    # 清除所有已经推出的container,-f 指定条件
    docker rm $(docker container ls -f "status=exited" -q)
    
    # 查看容器的详细信息
    docker inspect <container id>
    
    # 显示容器输出日志
    docker logs <container id> 
    
    # 进入容器
    docker exec -it <container id> /bin/bash 
    
    # 显示容器的ip地址
    docker exec -it <container id> ip a
    
    # 停止容器
    docker stop <container id | container name>
    
    

    基于Dockerfile构建镜像

    # 创建Dockeerfile文件,内容如下
    
    FROM ubuntu:18.04
    RUN apt-get update && apt-get install -y vim
    
    # 构建镜像(要在dockerfile所在目录执行该命令), -t 表示标签名
    docker build -t wmui/ubuntu002 .
    

    基于commmit构建镜像

    # 在容器中完成软件的安装
    # 使用 docker container ls -a 查看第一个 container id(第一个就是最近操作的一个)
    # 使用命令构建镜像
    
    docker commit <container id> <new image name> # docker commit 892ee8df74e2 wmui/ubuntu001
    

    发布镜像到dockerhub

    # 登录dockerhub
    docker login
    
    # 发布image(image的前缀名要和dockerhub账号一致)
    docker push 1308017/hello latest
    
    # 私有仓库
    

    说明:关于私有仓库的搭建可以产考这里,必须在局域网才行。

    打包命令行镜像

    FROM ubuntu
    RUN apt-get update && apt-get install -y stress
    ENTRYPOINT ["/usr/bin/stress"]
    CMD []
    

    说明:stress 可以分配docker的内存

    容器之间的通信

    # 安装软件
    sudo apt install bridge-utils
    
    # 查看网络链接情况
    brctl show
    
    # 查看容器的网络链接情况
    docker network inspect bridge
    
    # 查看所有网桥
    docker network ls
    

    说明:基于同一个镜像创建的容器,他们的网络默认是和bridge0绑定的,因此他们之间是可以互相通信的

    基于自定义bridge关联容器

    # 创建一个新的bridge
    docker network create -d bridge express-demo-bridge
    
    # 基于新bridge创建容器
    docker run -d --name=express-demo3 --network=express-demo-bridge 1308017/express-demo
    
    # 修改旧容器的关联bridge
    docker network connect express-demo-bridge express-demo
    

    说明:使用自定义bridge,容器之间可以通过容器名字ping通,因此可以使用容器名字代替ip。

    数据持久化

    docker run -d -p 3000:3000 -v $(pwd):/usr/src/express-demo --name=express-demo wmui/express-demo
    

    特别说明:要在项目目录下执行该命令,这样pwd才能正确映射docker中的项目目录

    docker安装wordpress

    # pull image
    docker pull wordpress mysql
    
    # create container, docker volume ls 可以查看本机的volumn
    docker run -d --name=mysql -v mysql-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=wordpress mysql
    
    docker run -d --name=wordpress -e WORDPRESS_DB_HOST=mysql:3306 --link mysql -p 3000:80 wordpress
    
    # 访问 ip:3000 开始安装
    

    docker-compose安装

    # install
    sudo curl -L "https://github.com.cnpmjs.org/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    sudo chmod +x /usr/local/bin/docker-compose
    
    # debug docker-compose
    docker-compose up
    
    # 启动服务
    docker-compose up -d # or docker-compose start
    
    # 停止服务
    docker-compose stop
    
    # 删除服务
    docker-compose down # 不会删除镜像
    
    # 进入容器
    docker-compose exec wordpress bash
    
  • 相关阅读:
    LeetCode_1.Two Sum
    F#周报2018年第48期
    使用Kdenlive为视频加入马赛克特效
    网络安全从入门到精通(第一章)前言篇
    hdu 5023 线段树染色问题
    poj 2528 线段树离散化+染色
    字符Hash初步
    经典二分:秦腾与教学评估
    国王游戏
    Trie:hdu 4825、1251、1247、Poj 3764
  • 原文地址:https://www.cnblogs.com/yesyes/p/15375422.html
Copyright © 2020-2023  润新知