UID839
现金0
在线时间0 小时
注册时间2018-11-20
黑狼菜鸟
- 积分
- 0
|
1、0Docker 的应用场景跟利益我就不逐一先容了,这些你都不知道应该重新学下 Docker,大概来听课学习!直接上安装教程:
2、0Docker安装
体系情况:docker最低支持centos7且在64位平台上,内核版本在3.10以上
版本:社区版,企业版(包罗了一些收费服务)
官方版安装教程(英文)
http://docs.docker.com/install/linux/docker-ce/centos/#upgrade-docker-after-using-the-convenience-script
博主版安装教程:
# 安装docker
yum install docker
# 启动docker
systemctl start/status docker
# 检察docker启动状态
docker version
设置加快器
简介:DaoCloud 加快器 是广受接待的 Docker 工具,办理了国内用户访问 Docker Hub 迟钝的题目。DaoCloud 加快器联合国内的 CDN 服务与协议层优化,成倍的提拔了下载速率。
DaoCloud官网:
http://www.daocloud.io/mirror#accelerator-doc
# 一条下令加快(记得重启docker)
curl -sSL http://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io
3、0Docker底子下令
docker --help(中文注解)
Usage:
docker [OPTIONS] COMMAND [arg...]
docker daemon [ --help | ... ]
docker [ --help | -v | --version ]
A
self-sufficient runtime for containers.
Options:
--config=~/.docker Location of client config files #客户端设置文件的位置
-D, --debug=false Enable debug mode #启用Debug调试模式
-H, --host=[] Daemon socket(s) to connect to #保卫历程的套接字(Socket)毗连
-h, --help=false Print usage #打印利用
-l, --log-level=info Set the logging level #设置日记级别
--tls=false Use TLS; implied by--tlsverify #
--tlscacert=~/.docker/ca.pem Trust certs signed only by this CA #信托证书署名CA
--tlscert=~/.docker/cert.pem Path to TLS certificate file #TLS证书文件路径
--tlskey=~/.docker/key.pem Path to TLS key file #TLS密钥文件路径
--tlsverify=false Use TLS and verify the remote #利用TLS验证长途
-v, --version=false Print version information and quit #打印版本信息并退出
Commands:
attach Attach to a running container #当前shell下attach毗连指定运行镜像
build Build an image from a Dockerfile #通过Dockerfile定制镜像
commit Create a new image from a container's changes #提交当前容器为新的镜像
cp Copy files/folders from a container to a HOSTDIR or to STDOUT #从容器中拷贝指定文件大概目次到宿主机中
create Create a new container #创建一个新的容器,同run 但不启动容器
diff Inspect changes on a container's filesystem #检察docker容器变革
events Get real time events from the server#从docker服务获取容器实时势件
exec Run a command in a running container#在已存在的容器上运行下令
export Export a container's filesystem as a tar archive #导出容器的内容流作为一个tar归档文件(对应import)
history Show the history of an image #展示一个镜像形成汗青
images List images #列出体系当前镜像
import Import the contents from a tarball to create a filesystem image #从tar包中的内容创建一个新的文件体系映像(对应export)
info Display system-wide information #表现体系相干信息
inspect Return low-level information on a container or image #检察容器具体信息
kill Kill a running container #kill指定docker容器
load Load an image from a tar archive or STDIN #从一个tar包中加载一个镜像(对应save)
login Register or log in to a Docker registry#注册大概登岸一个docker源服务器
logout Log out from a Docker registry #从当前Docker registry退出
logs Fetch the logs of a container #输出当前容器日记信息
pause Pause all processes within a container#停息容器
port List port mappings or a specific mapping for the CONTAINER #检察映射端口对应的容器内部源端口
ps List containers #列出容器列表
pull Pull an image or a repository from a registry #从docker镜像源服务器拉取指定镜像大概库镜像
push Push an image or a repository to a registry #推送指定镜像大概库镜像至docker源服务器
rename Rename a container #重定名容器
restart Restart a running container #重启运行的容器
rm Remove one or more containers #移除一个大概多个容器
rmi Remove one or more images #移除一个或多个镜像(无容器利用该镜像才可以删除,否则必要删除相干容器才可以继承大概-f逼迫删除)
run Run a command in a new container #创建一个新的容器并运行一个下令
save Save an image(s) to a tar archive#生存一个镜像为一个tar包(对应load)
search Search the Docker Hub for images #在docker
hub中搜刮镜像
start Start one or more stopped containers#启动容器
stats Display a live stream of container(s) resource usage statistics #统计容器利用资源
stop Stop a running container #制止容器
tag Tag an image into a repository #给源中镜像打标签
top Display the running processes of a container #检察容器中运行的历程信息
unpause Unpause all processes within a container #取消停息容器
version Show the Docker version information#检察容器版本号
wait Block until a container stops, then print its exit code #截取容器制止时的退出状态值
Run 'docker COMMAND --help' for more information on a command. #运行docker下令在资助可以获取更多信息
docker search hello-docker # 搜刮hello-docker的镜像
docker search centos # 搜刮centos镜像
docker pull hello-docker # 获取centos镜像
docker run hello-world #运行一个docker镜像,产生一个容器实例(也可以通过镜像id前三位运行)
docker image ls # 检察当地全部镜像
docker images # 检察docker镜像
docker image rmi hello-docker # 删除centos镜像
docker ps #列出正在运行的容器(假如创建容器中没有历程正在运行,容器就会立刻制止)
docker ps -a # 列出全部运行过的容器记载
docker save centos > /opt/centos.tar.gz # 导出docker镜像至当地
docker load 5000/tcp brave_fermi
#宿主机ip:32768 映射容器的5000端口
# 检察容器日记信息
docker logs -f cfd # #不中断表现log
# 也可以通过-p参数指定映射端口
docker run -d -p 9000:5000 training/webapp python app.py
打开欣赏器访问服务器的9000端口, 内容表现 Hello world!表现正常启动
(假如访问失败的话,查抄本身的防火墙,以及云服务器的安全组)
4、使用dockerfile定制镜像
镜像是容器的底子,每次实行docker run的时间都会指定哪个镜像作为容器运行的底子。我们之前的例子都是利用来自docker hub的镜像,直接利用这些镜像只能满意肯定的需求,当镜像无法满意我们的需求时,就得自定制这些镜像。
# 镜像的定制就是定制每一层所添加的设置、文件。假如可以吧每一层修改、安装、构建、操纵的下令都写入到一个脚本,用脚原来构建、定制镜像,这个脚本就是dockerfile。
# Dockerfile 是一个文本文件,其内包罗了一条条的指令(Instruction),每一条指令 构建一层,因此每一条指令的内容,就是形貌该层应当怎样构建。
参数详解
FROM scratch #制作base image 底子镜像,只管利用官方的image作为base image
FROM centos #利用base image
FROM ubuntu:14.04 #带有tag的base image
LABEL version=“1.0” #容器元信息,资助信息,Metadata,雷同于代码解释
LABEL maintainer=“[email protected]"
#对于复杂的RUN下令,制止无用的分层,多条下令用反斜线换行,合成一条下令!
RUN yum update && yum install -y vim \
Python-dev #反斜线换行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”
WORKDIR /root #相称于linux的cd下令,改变目次,只管利用绝对路径!!!不要用RUN cd
WORKDIR /test # 假如没有就主动创建
WORKDIR demo # 再进入demo文件夹
RUN pwd # 打印效果应该是/test/demo
ADD and COPY
ADD hello / # 把当地文件添加到镜像中,吧当地的hello可实行文件拷贝到镜像的/目次
ADD test.tar.gz / # 添加到根目次并解压
WORKDIR /root
ADD hello test/ # 进入/root/ 添加hello可实行下令到test目次下,也就是/root/test/hello 一个绝对路径
COPY hello test/ # 等同于上述ADD结果
ADD与COPY
- 优先利用COPY下令
-ADD除了COPY功能另有解压功能
添加长途文件/目次利用curl或wget
ENV # 情况变量,尽大概利用ENV增长可维护性
ENV MYSQL_VERSION 5.6 # 设置一个mysql常量
RUN yum install -y mysql-server=“${MYSQL_VERSION}”
进阶知识(相识)
VOLUME and EXPOSE
存储和网络
RUN and CMD and ENTRYPOINT
RUN:实行下令并创建新的Image Layer
CMD:设置容器启动后默认实行的下令和参数
ENTRYPOINT:设置容器启动时运行的下令
Shell格式和Exec格式
RUN yum install -y vim
CMD echo ”hello docker”
ENTRYPOINT echo “hello docker”
Exec格式
RUN [“apt-get”,”install”,”-y”,”vim”]
CMD [“/bin/echo”,”hello docker”]
ENTRYPOINT [“/bin/echo”,”hello docker”]
通过shell格式去运行下令,会读取$name指令,而exec格式是仅仅的实行一个下令,而不是shell指令
cat Dockerfile
FROM centos
ENV name Docker
ENTRYPOINT [“/bin/echo”,”hello $name”]#这个仅仅是实行echo下令,读取不了shell变量
ENTRYPOINT [“/bin/bash”,”-c”,”echo hello $name"]
CMD
容器启动时默认实行的下令
假如docker run指定了其他下令(docker run -it [image] /bin/bash ),CMD下令被忽略
假如界说多个CMD,只有末了一个实行
ENTRYPOINT
让容器以应用步伐或服务情势运行
不会被忽略,肯定会实行
最佳实践:写一个shell脚本作为entrypoint
COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT [“docker-entrypoint.sh]
EXPOSE 27017
CMD [“mongod”]
[root@master home]# more Dockerfile
FROm centos
ENV name Docker
#CMD ["/bin/bash","-c","echo hello $name"]
ENTRYPOINT ["/bin/bash","-c","echo hello $name”]
5、发布到堆栈
5.1 docker hub共有镜像发布
docker提供了一个雷同于github的堆栈docker hub,官方网站(需注册利用)
http://hub.docker.com/
# 注册docker id后,在linux中登录dockerhub
docker login
# 留意要包管image的tag是账户名,假如镜像名字不对,必要改一下tag
docker tag chaoyu/centos-vim peng104/centos-vim
# 语法是: docker tag 堆栈名 peng104/堆栈名
# 推送docker image到dockerhub
docker push peng104/centps-cmd-exec:latest
# 去dockerhub中查抄镜像
# 先删除当地镜像,然后再测试下载pull 镜像文件
docker pull peng104/centos-entrypoint-exec
5.2 私有堆栈
docker hub 是公开的,其他人也是可以下载,并不安全,因此还可以利用docker registry官方提供的私有堆栈
用法详解:
http://yeasy.gitbooks.io/docker_practice/repository/registry.html
# 1.下载一个docker官方私有堆栈镜像
docker pull registry
# 2.运行一个docker私有容器堆栈
docker run -d -p 5000:5000 -v /opt/data/registry:/var/lib/registry registry
-d 背景运行
-p 端口映射 宿主机的5000:容器内的5000
-v 数据卷挂载 宿主机的 /opt/data/registry :/var/lib/registry
registry 镜像名
/var/lib/registry 存放私有堆栈位置
# Docker 默认不答应非 HTTPS 方式推送镜像。我们可以通过 Docker 的设置选项来取消这个限定
# 3.修改docker的设置文件,让他支持http方式,上传私有镜像
vim /etc/docker/daemon.json
# 写入如下内容
{
"registry-mirrors": ["http://f1361db2.m.daocloud.io"],
"insecure-registries":["192.168.11.37:5000"]
}
# 4.修改docker的服务设置文件
vim /lib/systemd/system/docker.service
# 找到[service]这一代码地区块,写入如下参数
[Service]
EnvironmentFile=-/etc/docker/daemon.json
# 5.重新加载docker服务
systemctl daemon-reload
# 6.重启docker服务
systemctl restart docker
# 留意:重启docker服务,全部的容器都会挂掉
# 7.修改当地镜像的tag标志,往本身的私有堆栈推送
docker tag docker.io/peng104/hello-world-docker 192.168.11.37:5000/peng-hello
# 欣赏器访问http://192.168.119.10:5000/v2/_catalog检察堆栈
# 8.下载私有堆栈的镜像
docker pull 192.168.11.37:5000/peng-hello
6、实例演示
编写dockerfile,构建本身的镜像,运行flask步伐。
确保app.py和dockerfile在同一个目次!
# 1.预备好app.py的flask步伐
[root@localhost ~]# cat app.py
from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
return "hello docker"
if __name__=="__main__":
app.run(host='0.0.0.0',port=8080)
[root@master home]# ls
app.py Dockerfile
# 2.编写dockerfile
[root@localhost ~]# cat Dockerfile
FROM python:2.7
LABEL maintainer="温而新"
RUN pip install flask
COPY app.py /app/
WORKDIR /app
EXPOSE 8080
CMD ["python","app.py"]
# 3.构建镜像image,找到当前目次的Dockerfile,开始构建
docker build -t peng104/flask-hello-docker .
# 4.检察创建好的images
docker image ls
# 5.启动此flask-hello-docker容器,映射一个端供词外部访问
docker run -d -p 8080:8080 peng104/flask-hello-docker
# 6.查抄运行的容器
docker container ls
# 7.推送这个镜像到私有堆栈
docker tag peng104/flask-hello-docker 192.168.11.37:5000/peng-flaskweb
docker push 192.168.11.37:5000/peng-flaskweb
以上内容盼望资助到各人,有必要可以添加下方二维码进群交换学习新技能。
假如你想和PHP大神交换加微信,拉你入群
假如你想得到学习资料加微信,送你资源
扫码关注菲菲
php资源免费送!
COME BABY
|
上一篇:Rancher2.1从集群搭建到Pipeline摆设完备教程下一篇:ProxmoxVE之5.3集群安装及利用ceph
|