菜鸟学习docker的历程

准备环境 :一台全新的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
没有这个镜像的话他会自动从仓库中下载这个镜像。
差不多就到这里了,详细的基础命令什么的,想起来在更吧
—分------------------割--------------线--------------
更新
docker pull 镜像名称 下载镜像
docker search XXX 搜索镜像(模糊查询)
docker tag 镜像名称 想要的名称:版本(不写:版本默认为latest)作用类似于 别名 使一个镜像拥有两个或多个名称,但在实际上是同一个文件
docker rmi 镜像名称 删除镜像,如删除拥有tag的需将同一个文件的所有tag删除才会从磁盘删除 亦可用docker rmi -f 镜像ID;
docker save 镜像名称 > 文件名 可将镜像在当前目录打包成文件
docker load -i 文件名 可从文件中读取镜像
docker run 镜像名 启动容器
docker run 参数

-t 使用bash
-i 与bash交互
-d 在后台运行
--name=XXX 设置容器名字

--restart=always 可以实现退出bash容器也不关闭,但使用docker stop 容器id 会关闭容器;

docker run -dit --restart=always docker.io/centos

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值