Docker 基础操作

Docker 基础操作

1 docker 操作镜像

1.1 docker 基础操作镜像

# 查找镜像
docker search [keywords]

# 查看镜像
docker images

# 显示镜像 ID
docker images -q

# 列出指定镜像
docker images 

# 删除镜像
docker rmi [img-name|id]

# 删除全部镜像
docker rmi `docker images -q`

1.2 从容器创建一个新的镜像

docker commit -m "accentos" -a "ac" 32f4b11be651 accentos:v1
  • -a 提交的镜像作者;
  • -c 使用Dockerfile指令来创建镜像;
  • -m 提交时的说明文字;
  • -p 在commit时,将容器暂停。

1.3 导出/入镜像

# 导出
docker save -o accentos.tar.gz accentos
docker save accentos > accentos.tar.gz

# 导入
docker load -i accentos.tar.gz
docker load < accentos.tar.gz 

1.4 推送App镜像

# 登录
docker login -u YOUR-USER-NAME
# 使用 docker tag命令给 accentos 镜像打tag,记得前缀换成你自己的Docker ID。
docker tag accentos fcarey/accentos
# 上传,如果不想配置镜像的tagname,默认为: latest
docker push fcarey/accentos

1.5 本地仓库

docker run -p 5000:5000 -d -v /opt/data/registry:/var/lib/registry registry
docker tag accentos:v1.0 127.0.0.1:5000/accentos
docker push 127.0.0.1:5000/accentos

## 检查
curl 127.0.0.1:5000/v2/_catalog
{"repositories":["accentos"]}

2 docker 操作容器

2.1 启动容器

# 先查找本地是否存在镜像,不存在则下载镜像后再启动
docker run -d -p 80:80 docker/getting-started

# 也可以执行以下命令
docker run -dp 80:80 docker/getting-started

# 启动并进入容器
docker run -ti centos /bin/bash
  • -d - 后台运行容器
  • -p 80:80 - 映射主机80端口
  • -P - 将容器的端口暴露在宿主机的随机端口上
  • docker/getting-started - 要使用的镜像
  • --name - 指定名字
  • -t - 创建一个虚拟终端
  • -i - 将容器的标准输入保持打开
  • 退出 - exitCtrl + D

2.2 查看容器

docker ps
# 默认查询是运行中的容器
  • -a 查看所有的
  • -q 只查看容器的id

2.3 容器执行命令

docker run centos /bin/echo "Hello World"

# 进入容器
docker exec -ti [container-name|id] /bin/bash

3 删除窗口

docker rm
  • 默认只能删除未运行的容器
  • -f - 强制删除

4 docker 状态查询

# 查看端口映射关系
docker port [container-name|id]

# 启动docker容器
docker start [container-name|id]

# 获取容器的运行状态
docker stats [container-name|id]

# 查看日志
docker logs [container-name|id]
# -f 实时输出

# 关闭docker容器
docker stop [container-name|id]

# 移除所有停止状态的容器
docker container prune

5 dockerFile

FROM accentos # 指定基础镜像
COPY epel.repo /etc/yum.repos.d/ # 复制文件
RUN yum install -y nginx # 运行命令
RUN mdkir /data/html
RUN echo 'acnginx' > /data/html/index.html
COPY nginx.conf /etc/nginx/nginx.conf #只复制
ADD # 复制并解压压缩包
ENV env1=envalue01  # 设置环境变量
ENV env2=envalue02
WORKDIR /data/html # 设置工作目录,exec进入之后直接进入的目录
EXPOSE 80 # 设置端口
VOLUME # 指定容器的目录
CMD /bin/bash -c systemctl start nginx # 运行命令

# RUN和CMD的区别
RUN可以有多个,CMD只能有一个,如果有多个到话,按最后一个算

6 docker 编排

6.1 app.py

from flask import Flask
from redis import Redis

app = Flask(__name__)
redis = Redis(host='redis', port=6379)


@app.route("/")
def index():
    count = redis.incr("count")
    return f"this websit has been visited {count} times"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

6.2 appdf

FROM python:3.6-alpine
RUN mkdir /data
COPY app.py /data
WORKDIR /data
RUN pip install flask redis -i https://pypi.douban.com/simple
CMD python app.py

6.3 docker-compose.yml

version: '3.4'
services:
 website:
  build:
    context: . 
    dockerfile: appdf
  ports:
  - "15000:5000"
 redis:
   image: 'redis'

6.4 启动app

docker-compose build
docker-compose up
posted @ 2022-11-28 15:53  f_carey  阅读(26)  评论(0编辑  收藏  举报