ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

菜鸟学习docker的历程

2019-04-04 15:56:09  阅读:336  来源: 互联网

标签:repository 菜鸟 app tag 镜像 docker 历程 80


准备环境 :一台全新的centos7虚拟机或物理机,本人使用的是vm的虚拟机。
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo #设置储存库

安装docker

yum install docker-ce docker-ce-cli containerd.io #有可能会验证密钥,接受即可。
systemctl start docker #开启服务
docker run hello-word #不需要自己pull下来镜像,他会自己下载并打印信息。

使用docker

首先我先介绍一些docker的问题和命令:
docker是什么?很多理论集装箱什么的我就不说了,我也不爱听这些,就一些基本要知道的,docker的三个核心组件为“仓库、镜像、容器” 我们从仓库pull镜像,启动镜像后称为容器,大概就是这么个意思,当然你也可以将本地镜像上传到仓库。还有我是跟官方文档学习的,所以可能跟其他的一些文档顺序不太一样,下面介绍几个命令。
docker images 会列出你现在有的镜像; docker ps 列出正在运行的容器
docker run 用来创建容器。
####################################
docker中dockerfile是很重要的一个东西,学好他的话可以通过dockerfile来一键创建环境并且通过docker build 打包为镜像上传。当然这会我也不是很了解,这是从官网搬来的dockerfile

# Use an official Python runtime as a parent image
FROM python:2.7-slim
# Set the working directory to /app
WORKDIR /app
# Copy the current directory contents into the container at /app
COPY . /app
# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt
# Make port 80 available to the world outside this container
EXPOSE 80
# Define environment variable
ENV NAME World
# Run app.py when the container launches
CMD [“python”, “app.py”]

这个dockerfile中想运行我们还需要创建两个文件:requirements.txt和app.py 将这两个文件和dockerfile放在一个目录中,自己创建一个就行。以下是这两个文件的内容

requirements.txt

Flask
Redis

app.py

from flask import Flask
from redis import Redis, RedisError
import os
import socket
# Connect to Redis
redis = Redis(host=“redis”, db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(_name_)
@app.route("/")
def hello():
try:
visits = redis.incr(“counter”)
except RedisError:
visits = “cannot connect to Redis, counter disabled
html = “<h3>Hello {name}</h3>” \
“<b>Hostname:</b> {hostname}<br/>” \
“<b>Visits:</b> {visits}”
return html.format(name=os.getenv(“NAME”, “world”), hostname=socket.gethostname(), visits=visits)
if _name_ == “_main_”:
app.run(host=‘0.0.0.0’, port=80)

现在我们就可以build镜像了
进入你刚创建的目录,查看一下你的三个文件是否创建成功,如果成功后,执行
docker build --tag=hello .
#hello 可以是你自定义的名称,一定要注意这条命令最后有个点,请仔细看清楚。
这样的话我们的镜像已经制作成功了,你可以使用docker images 查看你的镜像
接下来我们可以将这个镜像启动为一个容器
docker run -p 4000:80 hello #-p参数是端口转发,指将本机的4000端口转发到容器中的80端口,此命令执行后会挂在bash,你也可以通过-d参数等其他方法来使他后台运行。
执行之后我们就可以打开浏览器来访问这个页面了,地址为“你虚拟机的ip地址:4000”

上传镜像

上面也说了,我们可以pull镜像也就可以push镜像,这里我使用的是docker默认的仓库dockerHub,没有的朋友可以去注册一个账号.
注册完成之后有个create repository,最好先创建一个仓库,这些图形化操作的就不说了。
https://hub.docker.com/

docker login #上传镜像需要先登陆
docker tag image username/repository:tag #为你的镜像打上标签.
username为dockerhub的登陆用户名 ,repository为你创建的仓库名称,末尾的tag随你心情。这时你docker images就可以看到你打标签这个镜像了。
docker push username/repository:tag #这里就是你刚才看到的打标签的那个镜像了。

##############################
这里我碰到过docker login登陆超时的问题,通过谷歌搜索找到两个方法,第一是一定要用dockerhub的用户名登陆不要用Emil,第二是修改dns设置,我是直接把/etc/resolv.conf里面写入了
nameserver 8.8.8.8
nameserver 8.8.4.4
###########################
上传上去之后你就可以在网页中看到你传的镜像了,这样的话你在任何地方都可以使用这个镜像了,哪怕你的计算机中没有这个镜像。
docker run -p 4000:80 username/repository:tag
没有这个镜像的话他会自动从仓库中下载这个镜像。
差不多就到这里了,详细的基础命令什么的,想起来在更吧

标签:repository,菜鸟,app,tag,镜像,docker,历程,80
来源: https://blog.csdn.net/weixin_42923531/article/details/89024395

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有