docker常见命令

  • 查看docker版本:docker version
  • 显示 Docker 系统信息,包括镜像和容器数等:docker info
  • 登录到一个镜像仓库:docker login -u 用户名 -p 密码
  • 登出一个镜像仓库:docker logout
  • 显示镜像历史记录: docker history
  • 查找镜像: docker search [OPTIONS] TERM
  • 拉取docker镜像: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
  • 上传docker镜像: docker push [OPTIONS] NAME[:TAG]
  • 查看docker本地主机上的镜像:docker images
  • 删除镜像: docker rmi [OPTIONS] IMAGE [IMAGE...]
  • 运行docker镜像:docker run hello-world
  • 查看那些容器正在运行:docker ps
  • 查看所有容器:docker ps –a
  • 创建容器:docker create
  • 启动容器:docker start 容器名/容器id
  • 停止容器:docker stop 容器名/容器id
  • 重启容器:docker restart 容器名/容器id
  • 从容器创建一个镜像:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

一、运行python应用

拉取python镜像

docker pull python:3.6-alpine
docker pull redis

运行python容器

docker run --name redis -d redis:latest redis-server --appendonly yes
docker run -itd -p 1111:5000 --name style1 --link redis:redis-server -v /Users/name/Documents/docker/test:/code python:3.6-alpine

参数说明: --name style1 : 把容器命名为style1
-itd: i 以交互模式运行容器 t  为容器重新分配一个伪输入终端 d 后台运行容器,并返回容器ID 注意如果不加上it的话运行Python容器后自动关闭
-v /Users/name/Documents/docker/test:/code:将主机中/Users/name/Documents/docker/test目录挂载到容器的/code
python:3.6-alpine引入Python镜像
redis-server --appendonly yes开启持久化存储
--link可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以互相通信
以命令行模式进入容器

docker exec -it style1 sh

安装支持&执行脚本

pip install -r requirements.txt
python /code/app.py

访问http://localhost:1111/查看结果

二、基于 Dockerfile 生成 Docker 镜像

部署redis

docker pull redis
docker run --name redis -d redis:latest redis-server --appendonly yes

部署flask应用--编写Dockfile

#基于的基础镜像
FROM python:3.6-alpine
#维护者信息
MAINTAINER name lkr
#添加代码到code文件夹
COPY . /code
#设置code文件夹是工作目录
WORKDIR /code
#安装支持
RUN pip install -r requirements.txt
CMD python app.py

制作镜像

docker build -t test2 .

-t 用来指定用户信息、tag等 . 是当前目录,用来寻找 Dockerfile
运行镜像

docker run -itd -p 1112:5000 --name style2 --link redis:redis-server -v /Users/name/Documents/docker/test:/code test2 

访问http://localhost:1112/查看结果

FROM:指定这个Dockerfile基于哪一个base image构建 eg: FROM centos # 使用base images
LABEL:类似于注释、Metadata eg: LABEL version = "1.0”
RUN:运行命令安装软件 eg: RUN pip install -r requirements.txt
WORKDIR:设定当前工作目录,类似Linux系统中的cd命令 eg: WORKDIR /test # 如果没有该目录,则会自动创建
ADD和COPY:在Dockerfile中ADD和COPY作用相似,都是把本地的文件添加到docker image中。
区别:ADD不仅可以添加文件,还可以解压缩文件,COPY不可以解压缩文件。
eg: ADD test.tar.gz / # 添加到image的根目录并且解压
COPY hello test/
ENV:设置环境变量或者一些常量 eg: ENV MYSQL_VERSION 5.6 
VOLUME:向基于镜像创建的容器添加卷 eg: VOLUME ["/data"]
EXPOSE:设置容器暴露的端口,可以指定一个或多个端口 eg: EXPOSE 80
CMD:设置容器启动后默认执行的命令和参数 
eg: CMD ["executable","param1","param2"] # 执行形式,这是首选形式
CMD command param1 param2 # 壳形式
ENTRYPOINT:设置容器启动时运行的命令,可以让容器以应用程序或者服务器的形式运行 
eg: ENTRYPOINT ["docker-entrypoint.sh"]
RUNCMD、ENTRYPOINT对比:
RUN 执行命令并创建新的image layer
CMD 设置容器启动后默认执行的命令和参数
ENTRYPOINT 设置容器启动时运行的命令

三、基于 Docker Compose快速部署

1.从github上下载docker-compose二进制文件安装

   下载最新版的docker-compose文件 
  $ sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
  添加可执行权限 
  $ sudo chmod +x /usr/local/bin/docker-compose
  测试安装结果 
  $ docker-compose --version 
  docker-compose version 1.16.1, build 1719ceb

2.pip安装
$ sudo pip install docker-compose

version: "3"
services:
    flask:
        #指定 Dockerfile 所在文件夹的路径
        build: .
        #指定容器名称。默认将会使用 项目名称_服务名称_序号 这样的格式。
        container_name: style3
        #暴露端口信息
        #使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以。
        ports:
            - "1234:5000"
        #数据卷所挂载路径设置
        volumes: 
            - /Users/name/Documents/docker/test4/:/code
        #解决容器的依赖、启动先后的问题
        depends_on:
            - redis
        #允许容器中运行一些特权命令
        privileged: true
        #指定容器退出后的重启策略为始终重启。该命令对保持服务始终运行十分有效,在生产环境中推荐配置为 always 或者 unless-stopped。
        restart: always
    redis:
        image: redis:alpine

运行compose项目
将 dockerfile、requirements.txt、docker-compose.yml、app 文件夹放在同一目录,运行命令 docker-compose up

$ ls               
Dockerfile         app.py             docker-compose.yml requirements.txt
$ docker-compose up

访问http://localhost:1234/查看结果

常用命令:
docker-compose up:启动yml定义的所有服务
docker-compose stop:停止yml中定义的所有服务
docker-compose start:启动被停止的yml中的所有服务
docker-compose restart:重启yml中定义的所有服务
docker-compose kill:停止某个服务
docker-compose ps:查看已经启动的服务状态
docker-compose –version:查看compose的版本

docker-compose logs:查看服务日志输出

docker-compose build:构建或者重新构建服务

docker-compose up -d // 后台启动并运行容器

原文地址:https://www.cnblogs.com/turningli/p/12493399.html