Docker 一:入门

Docker 可以用来打包应用、依赖以及环境到一个可移植的容器中,然后发布到任何流行的 Linux 机器上。

docker 两个关键的部分为容器和镜像,这两者的关系可以理解为 OOP 中类和对象的关系,容器作为对象,镜像作为类。Docker 镜像是用于创建 Docker 容器的模板,容器可以独立运行一个或一组应用。
参考 这里

常用命令

从镜像仓库(类似于代码仓库)拉取已有镜像:

docker pull training/webapp
当运行容器(创建镜像实例)时,使用的镜像如果在本地中不存在,docker 就会自动从 docker 镜像仓库中下载,默认是从 Docker Hub 公共镜像源下载。
不确定镜像是否存在时可使用 docker search imageName 进行搜索。

运行示例 web 应用:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
浏览器访问 http://localhost:5000/ 可见输出 :“Hello world” 字样。

  • -d: 让容器在后台运行
  • -p: 将容器内部使用的网络端口映射到我们使用的主机上
  • -P: 容器内部端口随机映射到主机的高端口。
  • training/webapp 为镜像名
  • python app.py 为容器启动后执行的命令

docker run -d training/webapp cat app.py 创建容器然后执行 cat app.py 命令,控制台就会输出如下内容:

import os

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    provider = str(os.environ.get('PROVIDER', 'world'))
    return 'Hello '+provider+'!'

if __name__ == '__main__':
    # Bind to PORT if defined, otherwise default to 5000.
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port)

列出镜像列表:

docker images

$ docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
frolvlad/alpine-oraclejdk8   slim                b56494ff6c5c        2 months ago        162MB
training/webapp              latest              6fae60ef3446        3 years ago         349MB

查看正在运行的容器:

docker ps

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
5efd960f44ee        training/webapp     "python app.py"     10 minutes ago      Up 10 minutes       0.0.0.0:5000->5000/tcp   loving_jackson

docker port 5efd960f44ee 可快捷查看指定 id 容器的端口映射情况

$ docker port 5efd960f44ee
5000/tcp -> 0.0.0.0:5000
查看 WEB 应用程序日志

docker logs 5efd960f44ee

$ docker logs 5efd960f44ee
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
172.17.0.1 - - [14/Nov/2018 07:14:03] "GET / HTTP/1.1" 200 -
172.17.0.1 - - [14/Nov/2018 07:14:03] "GET /favicon.ico HTTP/1.1" 404 -
查看容器中的进程

docker top 5efd960f44ee

$ docker top 5efd960f44ee
PID                 USER                TIME                COMMAND
10269               root                0:00                python app.py
查看容器信息

返回容器当前信息的 json 格式数据

$ docker inspect 5efd960f44ee
停止/重启 容器
docker stop 5efd960f44ee
docker start 5efd960f44ee
删除容器
docker rm 5efd960f44ee3

移除前需要先将容器停止。

构建镜像

构建镜像需要借助 DockerFile 文件:

FROM frolvlad/alpine-oraclejdk8:slim
COPY test.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

创建后 DockerFile 后就可以创建镜像了:
docker build -t test-service:0.0.1 .

  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

你可能感兴趣的:(Docker 一:入门)