docker理解及常用命令

原文http://blog.peoplevip.cn/2018/ce28352e.html
因为要把一些服务进行docker部署,系统的学习了一下docker的使用,不说原理,网上很多,只记录一些命令

docker类似于虚拟机,但是又不同于虚拟机,所有的容器以及镜像都是基于精简的linux系统进行展开(划重点,刚开始学习过程中一直在疑惑怎么跑起来一些服务的)

自定义镜像

获取镜像有两种方式,第一种方式是从网上pull下来,然后根据要求更改(如果有现成的可以不改),第二种方式,使用Dockerfile文件

获取

docker pull ubuntu

启动

docker run -it -d --name test-ubuntu ubuntu

这样就从ubuntu这个镜像上新建了一个容器

查看后台运行的容器

docker ps

进入

docker attach 上方的id

可以看到是一个精简的Ubuntu系统

安装完想要的东西后,生成新镜像(可选)

docker commit --change='CMD ["python /app/Api.py"]' -c "EXPOSE 22" flask ubuntu

其他命令后面补上

基于在Dockerfile中的指令,我们可以使用Docker build命令来创建镜像。通过减少镜像和容器的创建过程来简化部署。

以创建一个python Flask为例

新建一个目录,名称随意

mkdir python
cd python
vim Dockerfile

输入以下内容

#根镜像
FROM daocloud.io/ubuntu:trusty
MAINTAINER tsvico tsxygwj@163.com
# APT 自动安装 PHP 相关的依赖包,如需其他依赖包在此添加
RUN apt-get update && \  
      apt-get install -y python \
                       python-dev \
                       python-pip  \
                       vim \
    # 用完包管理器后安排打扫卫生可以显著的减少镜像大小
    && apt-get clean \
    && apt-get autoclean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 
ADD re.txt re.txt
RUN pip install -r re.txt
# 配置默认放置 App 的目录
RUN mkdir -p /app  
WORKDIR /app  
COPY ./test /app
#开放8080端口
EXPOSE 8080  
CMD ["python /app/Api.py"]

注:re.txt放在python目录下,是我flask环境的一些依赖,把程序源码同样拷贝到python目录,放在新建文件夹test目录下,

FROM: 必不可少的命令,从某个镜像作为基。如 FROM <image_name> ,或者 FROM <image_name>:. 如果不加tag,默认为latest。先从本地镜像仓库去搜索基镜像,如过本地没有,在去网上docker registry去寻找。

MAINTAINER:标明该Dockerfile作者及联系方式,可忽略不写

RUN:建立新的镜像时,可以执行在系统里的命令,如安装特定的软件以及设置环境变量。

ENV:设置系统环境变量(注意:写在/etc/profile里的命令在dockerfile这里会不生效,所以为改成ENV的方式)

EXPOSE:开放容器内的端口,但不和宿主机进行映射。方便在宿主机上进行开发测试。(如需映射到宿主机端口,可在运行容器时使用 -p host_port:container_port)

CMD:设置执行的命令,经常用于容器启动时指定的某个操作。如执行自定义脚本服务,或者是执行系统命令。CMD 只能存在一条,如在Dockerfile中有多条CMD的话,只有最后一条CMD生效!

文件中每一条RUN命令都为一层,一次写完最好,详情Google.com

#构建
docker build -t ubuntu-flask .
最后的.不能缺少

常用命令

启动服务

docker run -d -p 8080:8080 --name=api flask-api:latest python /app/Api.py

//拉取镜像
docker pull <仓库地址>/<镜像名>:<镜像tag>
//启动容器
docker run -it <镜像名>:<镜像tag> /bin/bash
eg docker run -t -i ubuntu:14.04 /bin/bash
//后台守护进程启动
docker run -dit <镜像名>:<镜像tag> /bin/bash
docker run -dit  training/webapp python app.py
-d即是以守护态运行
//自定义端口映射,启动服务
宿主机到容器内的端口映射
docker run -dit -p <hostPort>:<containerPort> --name <自定义容器名> <镜像名>:<镜像tag> /bin/bash && command1 command2
eg docker run -dit -p 5000:5000 training/webapp python app.py
	-P:默认匹配docker容器的5000端口号到宿主机的49153 to 65535端口
	-p <HOT_PORT>:<CONTAINER_PORT>:指定端口号
	--name <自定义容器名>
//查看容器进程
docker ps -a //查看所有容器
docker ps //查看运行中容器
//查看docker的一些底层信息
docker inspect
//重新启动之前的容器
docker start -i 容器名或者id
//删除容器
docker rm 容器id 
//删除镜像
docker rmi 镜像id 
//退出交互式容器:后台
Ctrl + p Ctrl+Q
进入已经退出的容器
docker attach id/name
直接后台
docker run -d 容器
//查看日志
docker logs -t(时间) -f(更新) 容器名
//查看容器内进程
docker top name
//在容器中启动新进程
docker exec [-d][-i][-t] 容器名[COMMAND][ARG...]  
ps: docker exec -i -t 名字 进程
//将容器另存为镜像
docker commit --change='CMD ["启动命令,可选"]' -c "EXPOSE 22" centos123 centos
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值