运行一个ubuntu容器

咱们要在cenots7操作系统下,以docker下载一个ubuntu image文件,然后以image启动容器

docker pull ubuntu

或者指定版本:docker pull ubuntu:14.04

运行这个乌班图容器!

docker run  ubuntu

也可以指定参数启动
docker run - rm ubuntu

dicker 启动的参数

docker run就是运行容器的命令。
参数
-it : -i 是交互式操作,-t是终端
--rm : 容器退出后将其删除。也可以不指定参数,手动docker rm,使用-rm可以避免浪费空间。
ubuntu:14.04 这指的是镜像文件
bash : 指定用交互式的shell,因此需要bash命令 eg:
docker run --rm ubuntu # 启动后删除 不留痕迹 docker ps -a 也看不到
  docker run -it --rm ubuntu # 启动是的交互命令结束不留痕迹

用 --rm 参数启动的和无参数的是不一样的

执行了docker run -it --rm unbuntu 之后交互界面的信息都不一样了

在这个里面查看系统都显示是ubuntu的了   cat /etc/os-release

 docker  运行centos

下载centos后 然后用-it进行centos容器内的交互界面

-d后台运行

docker run -d centos  /bin/bash -c  '你要执行的shell脚本'

docker run -d centos  /bin/bash -c 'while true;do echo hello docker66666;sleep 1;done'

然后就会返回给我们一段执行后的启动后的id

然后我们想要查看这个进程运行的信息

 docker exec -it  要查看的进程id  /bin/bash 

 docker exec -it  78b  /bin/bash 

查看容器内的输出

然后我们退出centos内的进程 到外面查看docker 的日志 因为刚才是在centos容器内  我们的docker 是安装在服务器内的 所以要到服务器的大环境内 而不是某一个docker容器内

docker  logs  +要查看的进程id

也可以在后面 加上-f 参数 可以一直查看  和tail -f 一样

 查看docker  的进程

docker ps

停止docker  进程

如果我们有docker进程这个时候不想让他跑了就用stop

docker  stop +要停止的docker进程

重现再跑起来 要么执行最开始跑的命令 要么就执行start

docker start  +要启动的进程

先查看以前跑过的进程再start

docker 自定义镜像  commit(构建自定义的镜像)

我们在启动 的docker进程有个id  我们可以根据这个id来打包

docker  commit + 要打包的进程id  +新起的包名

外部访问容器

容器中可以运行网络应用,但是要让外部也可以访问这些应用,可以通过-p或-P参数指定端口映射

docker run -d -P trainning/webapp python app.py

参数解析:
  -d 后台运行容器
  -P 随机端口映射
  -p 宿主机端口容器端口(就是可以指定端口小写的p指定端口容器)
  

也可以通过-p参数指定映射端口

#指定服务器的9000端口,映射到容器内的5000端口
[root@oldboy_python ~ 16:46:13]# docker run -d -p 9000:5000 training/webapp python app.py
c0b5a6278d0f4f2e9b9eba8680451111d8b911b61de0c37ea64cb337aefb854e

docker运行一个flask web应用,暴露端口供给windows使用

1、首先我们要先下载系统镜像 centos, 然后启动这个镜像生成容器

2、然后进入这个镜像内安装python2的软件管理工具 easy_install

3、安装flask

4、编写好flask脚本

5、退出容器产生容器id记录

6.提交此容器记录,构建镜像

7.查看镜像

8.运行flask_web镜像,暴露端口访问

9.此时在windows浏览器访问 7000端口的 flask应用

    1.docker run -it centos
2. 安装 easy_install 命令,python2软件包管理
yum install python-setuptools
3.安装flask
easy_install flask
4.编写好flask web脚本
    cd /home # 脚本写在home下
    然后yum install vim -y 安装vim 编辑器
    touch flask_web.py # 建立一个脚本文件编辑脚本
from flask import Flask app = Flask(__name__)

@app.route('/')
          def index():
                return 'Hello This is docker'

        #此脚本当做模块导入时候,__main__里代码不执行
#当做脚本文件直接运行的时候,执行__main__代码
if __name__ == '__main__':
app.run(host='0.0.0.0',port=9000) 5.退出容器,产生容器id记录
exit
6.提交此容器记录,构建镜像(找到你的容器内的id你进入的时候会有显示的)
docker commit 976 s12/flask_web
7.查看镜像
docker images
8.运行flask_web镜像,暴露端口访问 启动的时候要指定python解释器
docker run -d -p 7000:9000 s12/flask-web python /home/flask-web.py
9.此时在windows浏览器访问 7000端口的 flask应用

然互docker ps查看是否启动了

 在启动的时候你要指定你的镜像 然后指定python解释器去启动这个镜像中的具体的文件 caicai/flask-web 是你的打包的镜像然后指定python去启动中的具体的python文件

接着访问指定的7000端口就能看到内容了

docker hub

docker hub 顾名思义就是一个类似于我们常用的github存储代码一样这个是存储我们的  生成的容器的

首先我们打包的镜像 直接推送是不可以的  需要先起个tag名字才能进行推送的

打包:

docker  tag 镜像名字   你的dockerhub名字/起的tag名字

docker tag caicai/flask-web zyltry/caicai  # 给我的caicai/flask-web镜像在zyltry的dockerhub下起个caicai的tag

然后直接docker images  然后把你起的tag生成的镜像名字推上去

直接docker  push + 镜像名字

然后 就可以在你的 docker  hub上看到你提交的信息了

发布docker image到仓库

第一种,docker hub公有镜像发布

1.docker提供了一个类似于github的仓库dockerhub,
网址https://hub.docker.com/需要注册使用
2.注册docker id后,在linux中登录dockerhub
docker login 注意要保证image的tag是账户名,如果镜像名字不对,需要改一下tag
docker tag chaoyu/centos-vim zyltry163/centos-vim
语法是: docker tag 镜像名 docker hub名字/仓库名 3.推送docker image到dockerhub
docker push 镜像名字:latest
4.在dockerhub中检查镜像
https://hub.docker.com/
5.删除本地镜像,测试下载pull 镜像文件
docker pull 镜像名

 

私有仓库:

但是这种镜像仓库是公开的,其他人也是可以下载,并不安全,因此还可以使用docker registry官方提供的私有仓库

首先你要对你的要私有化的镜像 进行tag的添加 不添加是无法进行上传的

1.官方提供的私有仓库docker registry用法
https://yeasy.gitbooks.io/docker_practice/repository/registry.html
2.一条命令下载registry镜像并且启动私有仓库容器
私有仓库会被创建在容器的/var/lib/registry下,因此通过-v参数将镜像文件存储到本地的/opt/data/registry下
端口映射容器中的5000端口到宿主机的5000端口
docker run -d \
-p 5000:5000 \
-v /opt/data/registry:/var/lib/registry \
registry
检查启动的registry容器
docker ps
4.测试连接容器
telnet 192.168.119.10 5000
5.修改镜像tag,以docker registry的地址端口开头
docker tag hello-world:latest 192.168.119.10:5000/hello-world:latest
6.查看docker镜像,找到registry的镜像
docker images
7.Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,这里必须写正确json数据
[root@master /]# cat /etc/docker/daemon.json
{"registry-mirrors": ["http://95822026.m.daocloud.io"],
"insecure-registries":["192.168.119.10:5000"]
}
写入到docker服务中,写入到[Service]配置块中,加载此配置文件
[root@master home]# grep 'EnvironmentFile=/etc/docker/daemon.json' /lib/systemd/system/docker.service如果没有就对下面的进行添加信息  编辑docker 配置让他加载你的配置信息 :vim /lib/systemd/system/docker.service 
           添加:EnvironmentFile=/etc/docker/daemon.json
8.修改了docker配置文件,重新加载docker
systemctl daemon-reload
 
9.重启docker
systemctl restart docker
10.重启了docker,刚才的registry容器进程挂掉了,因此重新启动它
docker ps -a
docker start 容器id
11.推送本地镜像
docker push 192.168.119.10:5000/hello-world
12.由于docker registry没有web节目,但是提供了API数据
官网教程:https://docs.docker.com/registry/spec/api/#listing-repositories curl http://192.168.119.10:5000/v2/_catalog
或者浏览器访问http://192.168.119.10:5000/v2/_catalog
13.删除本地镜像,从私有仓库中下载
docker pull 192.168.119.10:5000/hello-world

首先 先对你的 要私有的镜像进行tag起名

docker   +选择的镜像名   tag 你的ip和规定的端口号/起的标签名

然后你还需要修改一个配置因为 Docker 默认不允许非 HTTPS 方式推送镜像。我们可以通过 Docker 的配置选项来取消这个限制,这里必须写正确json数据

vim /etc/docker/daemon.json

然后

grep 'EnvironmentFile=/etc/docker/daemon.json' /lib/systemd/system/docker.service

如果没反应就代表没有

然后编辑 /lib/systemd/system/docker.service

vim /lib/systemd/system/docker.service 

把信息:加入到service中  让你的docker加载这个文件
EnvironmentFile=/etc/docker/daemon.json

然后重新加载 重启你的docker

[root@VM_0_9_centos ~]# systemctl daemon-reload
[root@VM_0_9_centos ~]# systemctl restart docker

然后找到你的刚起启动的rgister进程启动因为重新加载挂了

docker  ps -a

重启register容器

docker  start +容器id

然后你用浏览器访问

或者浏览器访问http://ip地址:5000/v2/_catalog

下面docker  push  你刚才建立的私有仓库的tag

再访问你的界面就有了

也可以从你的私有仓库下载镜像了


从私有仓库中下载
docker pull +私有的镜像

从私有仓库中下载
docker pull 192.168.119.10:5000/hello-world

docker 的简单使用的更多相关文章

  1. 老司机实战Windows Server Docker:3 单节点Windows Docker服务器简单运维(上)

    经过上两篇实战Windows Server Docker系列文章,大家对安装Windows Docker服务以及如何打包现有IIS应用为docker镜像已经有了基本认识.接下来我们来简单讲讲一些最基本 ...

  2. 老司机实战Windows Server Docker:4 单节点Windows Docker服务器简单运维(下)

    上篇中,我们主要介绍了使用docker-compose对Windows Docker单服务器进行远程管理,编译和部署镜像,并且设置容器的自动启动.但是,还有一些重要的问题没有解决,这些问题不解决,就完 ...

  3. Docker入门 - 002 Docker 的简单操作

    系统要求:CentOS 7.2 64 位操作系统. Docker 的简单操作 下载镜像 下载一个官方的 CentOS 镜像到本地 docker pull centos 下载好的镜像就会出现在镜像列表里 ...

  4. Windows 下 Docker 的简单学习使用过程之一 dockertoolbox

    1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...

  5. Docker 搭建简单 LVS

    LVS简介 LVS(Linux Virtual Server)即Linux虚拟服务器,是由章文嵩博士主导的开源负载均衡项目,目前LVS已经被集成到Linux内核模块中.该项目在Linux内核中实现了基 ...

  6. Docker小白到实战之Docker网络简单了解一下

    前言 现在对于Docker容器的隔离性都有所了解了,但对容器IP地址的分配.容器间的访问等还是有点小疑问,如果容器的IP由于新启动导致变动,那又怎么才能保证原有业务不会被影响,这就和网络有挂钩了,接下 ...

  7. docker 容器简单使用

    文章目录 docker简介 docker容器简单使用 1.HelloWorld 2.运行交互式的容器 3.启动容器(后台模式) 安装docker容器的博文有很多这里就不做过多赘述了,另外如果不想安装d ...

  8. k8s和Docker关系简单说明

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 这篇文章主要介绍了k8s和Docker关系简单说明,本文利用图文讲解的很透彻,有需要的同学可以 ...

  9. docker的简单搭建(java/tomcat 环境)

    1.一副图简单了解下docker的布局,它是虚拟的,docker分为私服.镜像.容器三个模块 一般从私服pull镜像,镜像run一个容器,我们把容器作为一个虚拟服务,里面可以独立运行进程有独立的内网I ...

  10. Docker入门级简单的操作命令

    在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机. 虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用. 容器技术是和我们的宿主机共享硬件资源及操作系统,可 ...

随机推荐

  1. pygame游戏开发-简介

    转自白月黑羽Python教程:http://www.python3.vip/doc/tutorial/python/game/ 推荐对Python有兴趣的童鞋可以关注去看看,教程语言平实,简单易懂. ...

  2. 05-python中的异常

    python的所有的异常都继承自基类: Exception 处理方式和java类似: path = raw_input('input the path') array = path.split('/' ...

  3. juqery dragsort使用遇到的问题

    1.destroy时,没给容器加id,不能执行成功--->修改源码如下: if (options == "destroy") { $(this).trigger(" ...

  4. C#字符串中的中文逗号转英文逗号

    public static string ToDBC(string input) { char[] c = input.ToCharArray(); for (int i = 0; i < c. ...

  5. c#基础学习(0626)之占位符、转义符

    占位符 使用方法:先挖个坑,再填个坑. 使用占位符需要注意的地方: 1.你挖了几个坑,就应该填几个坑,如果填多了,没效果,如果填少了,出现异常 异常是指:语法上没有任何错误,只不过再运行的期间,由于某 ...

  6. 比较ArrayList和LinkedList的异同

    1.ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构: 2.对于随机访问get和set,ArrayList要优于LinkedList; 3.对于添加和删除操 ...

  7. SQLite的Integer类型

    SQLite 中的 INTEGER:带符号的整型,具体取决有存入数字的范围大小,根据大小可以使用1,2,3,4,6,8字节来存储. 在SQLite中,存储分类和数据类型也有一定的差别,如INTEGER ...

  8. Javascript实现图片翻转

    使用Js的对象属性能实现简单的翻转效果.通过onMouseover事件和onMouseOut事件就能实现鼠标移到链接上和移开链接发生反应.给两个图片加上链接实现都能翻转的效果. reverse.htm ...

  9. spring boot入门笔记 (三) - banner、热部署、命令行参数

    1.一般项目启动的时候,刚开始都有一个<spring>的标志,如何修改呢?在resources下面添加一个banner.txt就行了,springboot会自动给你加载banner.txt ...

  10. CentOS 7 隐藏任务栏和顶栏

    我使用的是Gnome,对于使用惯了windows的我来说,这个界面确实有点丑,但是,也将就着用了,最近发现有一款软件(Cairo-Dock)可以美化桌面,于是就安装了,但是安装之后发现了一个问题:原来 ...