_duck

作者: dittoyy3991 | 来源:发表于2018-06-26 15:38 被阅读16次

英文版:https://t.co/cmXB2Clj8D
中文版:http://v.qq.com/page/n/u/a/n0193j4ylua.html
暂时先mark下常见命令

service docker start
systemctl start docker
启动docker服务stop停止

docker run -it jenkins /bin/bash
ctrl+d

- container
docker ps -a -l查看状态
docker inspect
docker start -i重新启动
docker rm删除

docker exec -it id

启动镜像里的容器
docker attach xx
docker exec -it xx /bin/bash
ctrl+c/exit

镜像(Image)
Docker 镜像,就相当于是一个 root 文件系统。
比如 Docker 官方镜像 ubuntu:14.04 就包含了完整的一套 Ubuntu 14.04 最小系统的 root 文件系统。

容器(Container)
镜像和容器的关系,就像是面向对象程序设计中的类和实例一样,
镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等
数据卷的生存周期独立于容器,容器消亡,数据卷不会消亡。
因此,使用数据卷后,容器可以随意删除、重新 run,数据却不会丢失

仓库(Repository)
镜像构建完成后,可以很容易的在当前宿主上运行,
但是,如果需要在其它服务器上使用这个镜像,
我们就需要一个集中的存储、分发镜像的服务,Docker Registry 就是这样的服务。

获取镜像的命令是 docker pull img
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
docker pull ubuntu:14.04

查看已下载的镜像docker images

运行有了镜像后,我们就可以以这个镜像为基础启动一个容器来运行
docker run -it交互式终端 --rm容器退出后随之将其删除 ubuntu:14.04指用 ubuntu:14.04 镜像为基础来启动容器 bash有个交互式 Shell

定制镜像
docker run --name jenkins -d -p 8081:8080 ubuntu
用 ubuntu 镜像启动一个容器,命名为 jenkins,并且映射了 8081 端口,这样我们可以用浏览器去访问这个 ubuntu 服务器

进入容器,修改其内容
docker exec -it jenkins bash

docker diff jenkins命令看到容器具体的改动

docker commit 命令,可以将容器的存储层保存下来成为镜像
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
docker commit --author "ditto <969956574@qq.com>" --message "修改了jenkins欢迎页面"  jenkins ubuntu:v2

docker commit 命令除了学习之外,还有一些特殊的应用场合,比如被入侵后保存现场等。
但是,不要使用 docker commit 定制镜像,定制行为应该使用 Dockerfile 来完成

docker history ubuntu:v2 具体查看镜像内的历史记录ubuntu:v2

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),
每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建
mkdir myubuntu
cd myubuntu/
touch Dockerfile
写入
FROM ubuntu#指定基础对象
RUN echo '<h1>HeDocker!</h1>' > /usr/share/nginx/html/index.html#执行&&串联多条命令
&& apt-get purge -y --auto-remove#清理apt缓存文件

镜像构建上下文(Context)
COPY ./package.json /app/#复制路径也可以使用通配符
docker build -t ubuntu:v3 .#
ADD ubuntu-xenial-core-cloudimg-amd64-root.tar.gz /# tar 压缩文件的话,压缩格式为 gzip, bzip2 以及 xz 的情况下,ADD 指令将会自动解压缩这个压缩文件到 <目标路径> 去
CMD ["nginx", "-g", "daemon off;"]
CMD [ "curl", "-s", "http://ip.cn" ]
docker run myip -i

docker build 命令会将该目录下的内容打包交给 Docker 引擎以帮助构建镜像。

#ENV 设置环境变量
ENV VERSION=1.0 DEBUG=on \
    NAME="Happy Feet"

docker run -d -v mydata:/data xxxx#EXPOSE 声明端口

WORKDIR 指令可以来指定工作目录(或者称为当前目录)

docker push  dockerdemo:latest将镜像上传到服务器

docker rmi [选项] <镜像1> [<镜像2> ...]删除本地镜像

docker rm是删除容器

<镜像> 可以是 镜像短 ID、镜像长 ID、镜像名 或者 镜像摘要

docker start contaname启动已终止的容器
docker stop 
docker restart

$ sudo docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"
-d 参数容器后台运行

获取容器的输出信息,可以通过 docker logs contaname

docker ps -a 查看到的 CONTAINER ID或 NAMES

sudo docker run -idt xxx
sudo docker attach xxx

导出容器快照
sudo docker export 7691a814370e > ubuntu.tar
docker import 从容器快照文件中再导入为镜像
cat ubuntu.tar | sudo docker import - test/ubuntu:v1.0

docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库
安装运行 docker-registry
容器中运行 docker-registry
sudo docker run -d -p 5000:5000 registry


相关文章

网友评论

      本文标题:_duck

      本文链接:https://www.haomeiwen.com/subject/fdbuyftx.html