本来想直接对照书:《容器与容器云》来直接写如何搭建一个Docker应用栈的,但是发现很多基础只是不理清楚只会更加懵逼。所以打算先写下基础命令与应用。以下内容主要参照Docker的官方文档中的Get started with Docker.下载安装什么的最基础的东西我就不聊了,直接总结一些知识点和基本命令吧。
镜像与容器
Docker技术引擎应用了镜像和容器技术。
Eg:docker run hello-word
- docker:告诉你的机器启用docker程序
- run : 一个用于创建并且运行Docker容器的一个子命令
- hello-word:告诉docker容器需要加载哪个镜像
镜像是一些文件系统以及参数。它没有state以及从不变化。容器是一个正在运行的镜像的例子。
任何人都可以在docker hub上创建镜像。
创建自己的镜像
写一个Dockerfile
- 作用:描述文件,环境,以及命令
- 流程
- 创建一个文件命名为:Dockerfile
- 文件内容如下:
From docker/whalesay:latest Run apt-get -y update && apt-get install -y fortunes CMD /user/games/fortune -a | cowsay
生成镜像
docker build -t docker-whale .
首先它读取FROM信息,然后生成一个临时容器执行Run命令,然后docker对于CMD行加入一个layer,删除之前的临时容器。
Docker命令总结
(注意下, 所有命令都需要管理员权限)
Docker 环境信息
docker info
:检查docker 是否正确安装
docker version
:docker版本信息
容器有三种状态:
- Running
- Pause
- Stop
注意:除非使用刪除容器命令,否則容器只是处于stop状态,并没有完全停止.
Docker 生命周期管理
-
docker run
- 用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG]
- 示例[1]:
sudo docker run ubuntu echo "hello world"
- 解释[1]: 该命令从ubuntu镜像启动一个容器,并执行echo(command),helloworld为参数,打印出该参数。
- 示例[2]:
sudo docker run -i -t --name mytest ubuntu:latest /bin/bash
- 解释[2]:```-i表示使用交互模式,-t表示分配一个伪终端,--name为指定启动容器名字,:latest为tag,用于区分同名容器,默认为latest.
-
docker start/stop/restart
- 用法:只针对已经存在过的容器,让他们启动/停止/重启
Docker registry
docker pull
用法: docker pull [OPTIONS] NAME:[:TAG]
作用:从远程的docker hub拉下镜像
-
docker push
- 用法: docker push NAME[:TAG]
- 作用:本地image 或者repo推送到docker hub
镜像管理
- docker images
- 用法:docker images [OPTIONS] [NAME]
- 作用:列出所有本地已下载镜像