Docker架构
- 三个基本概念:
- 镜像
- 容器:镜像运行时的实体
- 仓库:保存镜像
- 客户端-服务器(C/S)架构模式,使用远程APi来管理和创建Docker容器
Docker Hello World
- docker run ubuntu:15.10 /bin/echo "Hello World"
- docker:Docker的二进制执行文件
- run: 与docker组合运行一个容器
- ubuntu:15.10 :要运行的镜像
- /bin/echo "hello world": 在容器里执行的命令
- 进行交互式的容器
- docker run -it ubuntu:15.10 /bin/bash (相当于进入一个新系统)
- 启动容器(后台模式)
- docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
- docker logs CONTAINERID 查看容器内的标准输出
- docker stop CONTAINERID 停止容器
Docker容器的使用
- 获取镜像: docker pull ubuntu
- 启动容器:docker run -it ubuntu /bin/bash
- 启动一个已停止的容器:docker start CONTAINERID
- 后台运行: docker run -itd --name ubuntu-test ubuntu /bin/bash (通过-d指定运行模式)
- 停止一个容器: docker stop CONTAINERID
- 重启容器:docker restart CONTAINERID
- 进入容器:( 容器在后台,想要进入容器)
- docker attach containerID (从容器退出,会导致容器停止)
- docker exec -it containerID /bin/bash (推荐使用,容器不会停止)
- 导出和导入容器
- 导出容器:docker export containerID > ubuntu.bar
- 导入容器:cat docker/ubuntu.tar|docker import - test/ubuntu:v1
- 删除容器:
- docker rm -f containerID
- docker container prune (清理所有终止状态的容器)
- 运行一个web应用: 在docker中运行一个Python Flask应用来运行一个web应用
- docker pull training/webapp
- docker run -d -P training/webapp python app.py
- -d:让容器在后台运行
- -P:将容器内部使用的网络端口随机映射到我们使用的主机上(这里主机指当前用的虚拟机)
- 查看WEB应用程序日志: docker logs containerID
- 查看WEB应用程序容器的进程: docker top containerID
- 查看WEB应用程序(返回一个JSON文件记录着Docker容器的配置和状态信息)
- docker inspect container
Docker镜像
- 更新镜像
- 查找镜像:docker search containerName
- 删除镜像:docker rmi containerName
- 创建镜像:
- 先创建一个容器:docker run -it ubuntu:15.10 /bin/bash
- 进行更新:apt-get update
- 提交容器副本:docker commit -m="has update" -a="runoob" containerID runoob/ubuntu:v2
- -m:提交的描述信息
- -a:指定镜像作者
- runoob/ubuntu:v2:指定要创建的目标镜像名
- 构建镜像
- 创建Dockerfile文件:
- 构建镜像: docker build -t runoob/centos:6.7 .
- 添加新标签:docker tag containerID imagesName:newTag
Docker容器连接
- 网络端口映射
- -P:是容器内部端口随机映射到主机端口
- -p:是容器内部端口绑定到指定的主机端口
- docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py ( 这样我们就可以通过访问 127.0.0.1:5001 来访问容器的 5000 端口。curl 127.0.0.1:5001)
- 查看端口的绑定情况:docker port portName 5000
- Docker容器互联: docker 有一个连接系统允许将多个容器连接在一起,共享连接信息
- 容器命名:docker run -d -P --name liye training/webapp python app.py
- 新建网络:docker network create -d bridge test-net
- 查看网络:docker network ls
- 连接容器
- 运行一个容器并连接到新建的 test-net 网络:
- docker run -itd --name test1 --network test-net ubuntu /bin/bash
- 打开新终端,在运行一个
- docker run -itd --name test2 --network test-net ubuntu /bin/bash
- 如果无ping指令
- apt-get update
- apt install iputils-ping
- 在test1容器中连接test2: ping test2
- 配置DNS(看不懂)
- Docker仓库管理:目前Docker维护了一个公共仓库Docker Hub
- 登录:docker login
- 退出:docker logout
- 搜索:docker search ubuntu
- 推送镜像:用户登录后,可以通过docker push 命令将镜像推送到Docker Hub
- docker tag ubuntu:18.04 userName/ubuntu:18.04
- docker push userName/ubuntu:18.04
- docker search userName/ubuntu
版权声明:本文为m0_46569623原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。