nineth_Docker

 

1. Docker 概述

  Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

  优点:更高效的利用系统资源、更快速的启动时间、一致的运行环境、持续交付和部署、更轻松的迁移

  应用场景:web 应用的自动化打包和发布;自动化测试和持续集成、发布;在服务型环境种部署和调整数据库或其它应用

  三大概念:镜像image(分层存储)、容器container(从镜像创建运行的实例)、仓库repository(集中存放镜像文件的场所)

  为什么docker快:容器是只读写+镜像,镜像是一堆只读层+...

概念图链接

2.Docker 安装

# 查看/etc/yum.repos.d/有没有Centos-7.repo或CentOS-Base.repo,如果没有
# 去下面这个网站https://opsx.alibaba.com/mirror 找CentOS7版本,下载即可
yum install -y docker  # 下载安装docker
rpm -qi docker  # 查看docker Version,目前是1.31.1,这是阿里云mirror,版本一般会老,如果要最新的要去官网下载,不过speed比较慢
systemctl status docker  # 查看docker 状态,未启动情况下active:inactive
systemctl start docker  # 启动docker, 当然 stop 则是停止

3.Docker基本使用命令

docker search hello-world  # 搜索相关镜像 stars最多的就是最多人推荐的,
docker pull docker.io/hello-world  # docker pull automated 即可下载

docker image  # 查看docker 镜像
docker run -it 94e /bin/bash  # ID的前3位(上面语句得知的)或者镜像名字,此方法是新建一个容器并交互,exit即可退出
-i #交互运行 -t #开启一个终端 -d #后台运行 -P #随机端口 -p #自定义端口 --name #指定名字 docker ps
-a # 即可查看已经开过的容器 -q 查看镜像ID docker container ls # 查看真正运行的容器
# 安装加速器及centos
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io  # 下载加速器
# 并修改/etc/docker/daemon.json文件,去掉逗号(语法错误)否则无法开启
# 然后docker pull centos 下载centos文件(用search的方式)
# 容器操作
docker run -d centos /bin/bash -c "while true;do echo 爱滴魔力转圈圈; sleep 1;done" # 跑一个-d 后台运行 centos 后台镜像 /bin/sh 解释器 -c 运行一行命令 while 循环语句 ; docker logs -f 容器ID # 持续查看消息 # docker ps -a 和 docker container ls # 相同程序的ID是一直,如果程序没有持续运行则会消失挂掉(即一定要start 可以一直开着的才不会挂掉) docker exec -it 容器ID /bin/bash # 进入开启过的容器种
docke start 容器ID

 

# 删除
docker rmi 镜像ID  # 可能无法成功删除,会提示镜像有依赖镜像或有运行文件,需要先删除依赖镜像/运行文件,再删除此镜像;
docker rm 容器ID
docker rm -f 'docker ps -aq' # f是强制删除,后面语句则是全部容器
# 导入及导出
# 如果要导出镜像到本地文件,可以使用docker save命令。
[root@docker ~]# docker save centos > /opt/centos.tar.gz  # 导出docker镜像至本地
[root@docker ~]# ll /opt/
-rw-r--r--.1 root root 204205056 12月 30 09:53 centos.tar.gz

# 可以使用docker load从本地文件中导入到本地docker镜像库
[root@docker ~]# docker load < /opt/centos.tar.gz   # 导入本地镜像到docker镜像库
[root@docker~]# docker images  # 查看镜像导入情况
REPOSITORY           TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/centos     latest              60e65a8e4030        5 days ago          196.6 MB
# 外部访问容器
# 在容器内跑一个app.py程序, 运行在9000端口
docker run -d -P training/webapp python app.py  
# -P 参数会随机映射端口到容器开放的网络端口, 如果本地没有这个镜像,docker run会自动为我们下载镜像
docker container ls # 查看是否有,后面多开也可以继续查看
# 使用-p参数自定义一个端口到虚拟机上, 如9000端口
docker run -d -p 9000:5000 training/webapp python app.py
# 我们可以通过虚拟机的IP 192.168.1.55加端口9000进行访问
# 提交创建自定义的镜像(docker container commit)
# 1.我们进入交互式的centos容器中,发现没有vim命令
  docker run -it centos /bin/bash
# 2.在当前容器中,安装一个vim
  yum install -y vim
# 3.安装好vim之后,exit退出容器
  exit
# 4.查看刚才安装好vim的容器记录
  docker container ls -a
# 5.提交这个容器,创建新的image  # 此时这个镜像就自带vim
  docker commit 059fdea031ba tiger/centos-vim
# 6.查看镜像文件
[root@master /home]docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
tiger/centos-vim   latest              fd2685ae25fe        5 minutes ago       348MB
# 发布docker image到仓库
# 1 docker提供了一个类似于github的仓库dockerhub,
网址https://hub.docker.com/需要注册使用
# 2 注册docker id后,在linux中登录dockerhub
docker login
docker tag tiger/centos-vim 909336740/centos-vim  # tag是复制并重命名镜像,909336740是我的账号,你们要用自己的
docker images  # 查看
docker push lxh661314/centos-cmd-exec:latest  # 发布到dockerhub上
# 个人账户的 Repositories就能看到
# 删除本地镜像,测试下载pull 镜像文件
docker rmi -f d69
docker pull lxh661314/centos-entrypoint-exec

 

posted @ 2019-04-09 15:59  pythonernoob  阅读(235)  评论(0)    收藏  举报