Docker初体验

Docker简介

Docker 项目的目标是实现轻量级的操作系统虚拟化解决方案。Docker 的基础是 Linux 容器(LXC)等技术。其主要目的是保证一致的运行环境,以及更快速的交付与部署。

Docker与虚拟机

image

从虚拟机的模型图看,虚拟机的Guest OS层和Hypervisor层在docker中被Docker Engine层所替代。虚拟机的Guest OS即为虚拟机安装的操作系统,它是一个完整操作系统内核;虚拟机的Hypervisor层可以简单理解为一个硬件虚拟化平台,它在Host OS是以内核态的驱动存在的。

而docker Engine可以简单看成对Linux的NameSpace、Cgroup、镜像管理文件系统操作的封装。docker并没有和虚拟机一样利用一个完全独立的Guest OS实现环境隔离,它利用的是目前linux内核本身支持的容器方式实现资源和环境隔离。简单的说,docker利用namespace实现系统环境的隔离;利用Cgroup实现资源限制;利用镜像实现根目录环境的隔离。

详细对比可以看这篇文章 https://www.jianshu.com/p/d3006b8a22ee

Docker镜像与容器

镜像:镜像(Image)就是一堆只读层(read-only layer)的统一视角。
容器:容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。容器 = 镜像 + 可读层。

镜像有关命令

搜索镜像:docker search 在docker index中搜索image
下载镜像:docker pull 从docker registry server 中下拉image
上传镜像:docker push NAME[:TAG]

镜像有关的其它,命令均可以通过 docker image --help 查看

Commands:
  build       Build an image from a Dockerfile
  history     Show the history of an image
  import      Import the contents from a tarball to create a filesystem image
  inspect     Display detailed information on one or more images
  load        Load an image from a tar archive or STDIN
  ls          List images
  prune       Remove unused images
  pull        Pull an image or a repository from a registry
  push        Push an image or a repository to a registry
  rm          Remove one or more images
  save        Save one or more images to a tar archive (streamed to STDOUT by default)
  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE

容器有关命令

镜像有关的其它,命令均可以通过 docker container --help 查看

Commands:
  attach      Attach local standard input, output, and error streams to a running container
  commit      Create a new image from a container's changes
  cp          Copy files/folders between a container and the local filesystem
  create      Create a new container
  diff        Inspect changes to files or directories on a container's filesystem
  exec        Run a command in a running container
  export      Export a container's filesystem as a tar archive
  inspect     Display detailed information on one or more containers
  kill        Kill one or more running containers
  logs        Fetch the logs of a container
  ls          List containers
  pause       Pause all processes within one or more containers
  port        List port mappings or a specific mapping for the container
  prune       Remove all stopped containers
  rename      Rename a container
  restart     Restart one or more containers
  rm          Remove one or more containers
  run         Run a command in a new container
  start       Start one or more stopped containers
  stats       Display a live stream of container(s) resource usage statistics
  stop        Stop one or more running containers
  top         Display the running processes of a container
  unpause     Unpause all processes within one or more containers
  update      Update configuration of one or more containers
  wait        Block until one or more containers stop, then print their exit codes

常用命令

使用镜像创建容器 docker container run -d -p localport:containerport
重新进入容器命令 docker container exec -it /bin/bash

Dockerfile 创建自定义镜像

FROM ubuntu:20.04
LABEL description='Flask project for flask'
 
RUN  apt-get update
#RUN  apt-get upgrade -y
 
# Install vim
RUN apt-get install -y vim
 
# Install pip
RUN apt-get install -y python3-pip
RUN pip3 install flask==1.1.2 -i https://pypi.douban.com/simple/ && pip3 install gunicorn==20.1.0 -i https://pypi.douban.com/simple/

COPY /flask /flask
WORKDIR /flask

# 暴露的容器端口
EXPOSE 7080 7081  
# 必须用中括号写,直接写启动语句在执行后会自动关闭容器
#CMD ["python3", "./flasktext.py"]
CMD gunicorn -c gunicorn.conf.py flasktext:app

使用Dockerfile创建容器

docker build -t centos:base -f /soft/docker/Dockerfile /soft

管理一两个容器人为管理就可以,但是如果有许多容器呢,这个时候就需要容器编排工具
docker-compose(单机容器编排工具)
Kubernetes(多主机容器编排工具)

觉得有帮助的话点个赞吧~
posted @ 2021-09-29 21:38  糖烤栗子&  阅读(39)  评论(0编辑  收藏  举报