docker

docker安装

yum install docker -y

docker登入仓库
docker login -u {user} -p {passwd} {harborIp}

docker查看镜像
docker images

docker 推送镜像
docker push {镜像完整路径}


运行交互式的容器
通过 docker 的两个参数 -i -t,让 docker 运行的容器实现"对话"的能力:
docker run -i -t ubuntu:15.10 /bin/bash
参数解析:
-t: 在新容器内指定一个伪终端或终端。
-i: 允许你对容器内的标准输入 (STDIN) 进行交互。

启动容器(后台模式)
使用以下命令创建一个以进程方式运行的容器
docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
在输出中,我们没有看到期望的 "hello world",而是一串长字符
2b1b7a428627c51ab8810d541d759f072b4fc75487eed05812646b8534a2fe63
这个长字符串叫做容器 ID,对每个容器来说都是唯一的,我们可以通过容器 ID 来查看对应的容器发生了什么。
首先,我们需要确认容器有在运行,可以通过 docker ps 来查看:
docker ps
CONTAINER ID IMAGE COMMAND ...
5917eac21c36 ubuntu:15.10 "/bin/sh -c 'while t…" ...
输出详情介绍:
CONTAINER ID: 容器 ID。
IMAGE: 使用的镜像。
COMMAND: 启动容器时运行的命令。
CREATED: 容器的创建时间。
STATUS: 容器状态。
状态有7种:
created(已创建)
restarting(重启中)
running 或 Up(运行中)
removing(迁移中)
paused(暂停)
exited(停止)
dead(死亡)
PORTS: 容器的端口信息和使用的连接类型(tcp\udp)。
NAMES: 自动分配的容器名称。

在宿主主机内使用 docker logs 命令,查看容器内的标准输出:
docker logs {CONTAINER_ID}

删除docker镜像
docker rmi {IMAGE_ID}

映射端口
docker run -p {宿主机端口}:{容器端口}

挂载卷
docker run -v {宿主机路径}:{容器路径}

传入环境变量(同ansbile)
docker run -e {key}={value}


DockerFile
规定:指令大写,命令行小写,第一条指令必须是FROM(从一个原始IMAGES生成新的镜像层级)
build命令
docker build . -t colinshi123/nginx:with_dockerfile
dockerfile文件核心指令:
USER:指定主进程用户
WORKDIR:指定主进程工作目录
ADD:添加指定文件或者目录至容器内
EXPOSE:容器暴露指定端口号
RUN:容器构建时执行的命令
ENV:容器构建时环境变量设定
CMD:容器启动时执行的命令
ENTRYPOINT:容器启动的时候执行的脚本

Docker网络模型
Deocker --net=none
NAT(默认)
None(不提供网络通讯)
Host(Docker和宿主机保持一致)
container(联合网络,和另一个容器共用一个网络名称空间)
Deocker --net=container:{CONTAINER_ID}

posted @ 2022-02-14 09:06  colinshi  阅读(51)  评论(0编辑  收藏  举报