好吧, 这是我第二次玩这个玩意了, 其实我现在这家公司是没有接触到docker的, 因此对它也是半桶水的状态, 之前有朋友叫我写过shell去离线部署它, 部署都那样不值一提, 后来到我第二次去接触它的时候有了不一样的感悟。

它确实是一个很好的中间件, 到目前为止我接触到的来说, 对我来说就像发现了一个新世界。后来我发现, 现在大部分搞linux的都必须会用docker和ansible了, 而我还局限于shell, python还是半桶水, 一言难尽, 这次就说说我第二次用到的docker各种命令以作一份笔记纪念我逝去的青春。

第一, 动手了重新弄了centos7.6minimal版, 扔vm开机...省略。

开始拉取docker, 直接yum了, 离线编译的方法也差不多, 太简单不说了, 说yum了, 老套路, 先拉一个安装脚本爽一下

curl -fsSL https://get.docker.com -o get-docker.sh

这个玩意能干嘛呢, 自动部署, 自动创建服务, 跟yum install ***差不多吧。

下一步,扔源, 这个就是用到烂了, 就是下面的一坨东西

[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-stable-debuginfo]
name=Docker CE Stable - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-stable-source]
name=Docker CE Stable - Sources
baseurl=https://download.docker.com/linux/centos/7/source/stable
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge]
name=Docker CE Edge - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/edge
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge-debuginfo]
name=Docker CE Edge - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-edge-source]
name=Docker CE Edge - Sources
baseurl=https://download.docker.com/linux/centos/7/source/edge
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test]
name=Docker CE Test - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test-debuginfo]
name=Docker CE Test - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-test-source]
name=Docker CE Test - Sources
baseurl=https://download.docker.com/linux/centos/7/source/test
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly]
name=Docker CE Nightly - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly-debuginfo]
name=Docker CE Nightly - Debuginfo $basearch
baseurl=https://download.docker.com/linux/centos/7/debug-$basearch/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg [docker-ce-nightly-source]
name=Docker CE Nightly - Sources
baseurl=https://download.docker.com/linux/centos/7/source/nightly
enabled=0
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

不好意思, 太长了, 扔进/etc/yum.repos.d, 命名吧随便,只要后缀是repo就行。

清一下yum之前的缓存

yum clean all  &&  yum list

重头戏来了, 刚才下来的get-docker.sh, 授个执行权给它吧。

chmod +x get-docker.sh

懒人就这样别介意, 你也可以sh get-docker.sh,

跑一下吧小shell儿。

./get-docker.sh

ok! 稍等一会待他自动配置。

ok!配置好了, 就是这样的了。呃, 没图, 就是就是which docker出来指定目录说明执行程序在bin里面了。

先启动看一下吧。

systemctl start docker

查看一下进程

[root@localhost yum.repos.d]# ps aux | grep docker
root 7431 0.1 4.3 561032 62084 ? Ssl 17:39 0:20 /usr/bin/dockerd -H fd://
root 7452 0.1 2.4 393784 34332 ? Ssl 17:39 0:19 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
root 8720 0.0 0.0 112728 988 pts/2 S+ 21:01 0:00 grep --color=auto docker

下面记录一下基本的命令吧。

run:创建一个容器并运行一个命令, 具体用法就是docker run -it 镜像名 shell, 基本这样就能跑。但是局限于各种需求, 他有各种参数, 比如常用的

  • -d: 后台运行容器,并返回容器ID;

  • -i: 以交互模式运行容器,通常与 -t 同时使用;

  • -p: 端口映射,格式为:主机(宿主)端口:容器端口

  • -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

  • --name="nginx-lb": 为容器指定一个名称;

start/stop/restart:启动,停止,重启一个容器, 具体用法就是 docker start 容器名

rm:删除一个或多个容器, 具体用法docker rm 容器名或者docker rm 容器名1 容器名2

  • -f :通过SIGKILL信号强制删除一个运行中的容器

  • -l :移除容器间的网络连接,而非容器本身

  • -v :-v 删除与容器关联的卷

exec:在容器中执行命令, 具体用法docker exec -it 容器名 shell 命令, 例如这样, docker exec -it nginx /bin/bash /root/chenglee.sh

  • -d :分离模式: 在后台运行

  • -i :即使没有附加也保持STDIN 打开

  • -t :分配一个伪终端

ps:列出容器, 具体用法docker ps 或者docker ps -a

  • -a :显示所有的容器,包括未运行的。

  • -f :根据条件过滤显示的内容。

  • --format :指定返回值的模板文件。

  • -l :显示最近创建的容器。

  • -n :列出最近创建的n个容器。

  • --no-trunc :不截断输出。

  • -q :静默模式,只显示容器编号。

  • -s :显示总的文件大小。

top:查看容器中运行的进程信息, 具体用法docker top 容器名

logs:获取容器中的日志, 具体用法 docker logs 容器名或者是docker logs -f 容器名(动态查看), 很熟悉是吧, 没错, 跟tail -f一样的功能

  • -f : 跟踪日志输出

  • --since :显示某个开始时间的所有日志

  • -t : 显示时间戳

  • --tail :仅列出最新N条容器日志

port:列出指定容器的端口映射, 具体用法docker port 容器名

pull:从镜像仓库拉取或更新指定镜像到本地, 具体用法docker pull 镜像名, 比如拉取tomcat, docker pull tomcat

  • -a :拉取所有 tagged 镜像

  • --disable-content-trust :忽略镜像的校验,默认开启

search:从仓库中查找相关的镜像, 具体用法docker search 模糊镜像名

images:列出本地镜像, 具体用法docker images或者docker images 镜像名

  • -a :列出本地所有的镜像(含中间映像层,默认情况下,过滤掉中间映像层);

  • --digests :显示镜像的摘要信息;

  • -f :显示满足条件的镜像;

  • --format :指定返回值的模板文件;

  • --no-trunc :显示完整的镜像信息;

  • -q :只显示镜像ID。

rmi:删除本地一个或多个镜像, 具体用法docker rmi 镜像名或者docker rmi 镜像名1 镜像名2

  • -f :强制删除;

  • --no-prune :不移除该镜像的过程镜像,默认移除;

import:导入容器, 具体用法docker import 容器名字 新名字

export:导出容器, 具体用法docker export -o 新名字 容器名字

save:导出镜像, 具体用法docker save -o 新名字 镜像名

load:导入镜像, 具体用法docker load -i 镜像名

info:信息, 用法docker info

version:版本, 用法docker version

有一堆东西, 好累...继续了。

先拉取一个镜像试试

docker pull tomcat

拉取失败或者特别慢的, 可能是源的问题,下面配置国内源.

vim /etc/docker/daemon.json

{
"registry-mirrors": ["https://registry.docker-cn.com"]
}

ok, 重启一下docker

systemctl restart docker

再拉, 发现速度很快, 刷刷刷...完成!

就像这样(上贴图了有嗲急冻)

这就是本地镜像了, 假装是刚拉下来的[滑稽]

先跑一个这个tomcat, 把它的端口映射到主机的随机端口看看

docker run -it -d -P tomcat

-P参数大有来头

  • -d:让容器在后台运行。

  • -P:将容器内部使用的网络端口映射到我们使用的主机上。

这个32768端口是随机的哈, 意思就是把容器中的8080映射到了我们主机上的32768上面了, 下面启动一下吧

docker start dreamy_bhabha

后面的dreamy_bhabha是这个容器的随机名字, 要想指定也可以, 一会介绍.

好了, 查看一下容器内部日志

docker logs dreamy_bhabha

tomcat启动日志, 下面在浏览器看一下

简直是不能再明显了, 好了, 下面移除这个镜像, 说一下这个映射指定端口以及容器指定名字

docker run -it -d -p 80:80 --name mynginx nginx

-p(小写), 前一个是主机的端口, 后一个是容器的端口

--name, 指定容器名字

好了, 现在启动nginx跑一下吧, 一般run的时候已经是启动的了, 如果没有启动那么就docker start mynginx

这个肯定是没问题的。

那么如果想进容器里面呢, exec该上场了, 现在进tomcat容器里面看看

docker exec -it dreamy_bhabha /bin/bash

那么查看一下容器里面的进程呢

docker top dreamy_bhabha

下一篇即将放出dockerfile构建镜像的实现方式。

简单不过了, 没啥难度。
基本就到这了。

来自docker的嚎叫的更多相关文章

  1. 在Linux和Windows的Docker容器中运行ASP.NET Core

    (此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott H ...

  2. Docker入门教程(四)Docker Registry

    Docker入门教程(四)Docker Registry [编者的话]DockerOne组织翻译了Flux7的Docker入门教程,本文是系列入门教程的第四篇,介绍了Docker Registry,它 ...

  3. 【云计算】docker相关开源项目、工具

    十大基于Docker的开发工具 作者                     郭蕾        发布于     2014年8月19日     |              注意:QCon全球软件开发 ...

  4. Docker基础技术:AUFS

    AUFS是一种Union File System,所谓UnionFS就是把不同物理位置的目录合并mount到同一个目录中.UnionFS的一个最主要的应用是,把一张CD/DVD和一个硬盘目录给联合 m ...

  5. Docker容器中运行ASP.NET Core

    在Linux和Windows的Docker容器中运行ASP.NET Core 译者序:其实过去这周我都在研究这方面的内容,结果周末有事没有来得及总结为文章,Scott Hanselman就捷足先登了. ...

  6. 使用 Docker 容器应该避免的 10 个事情

    当你最后投入容器的怀抱,发现它能解决很多问题,而且还具有众多的优点: 第一:它是不可变的 – 操作系统,库版本,配置,文件夹和应用都是一样的.您可以使用通过相同QA测试的镜像,使产品具有相同的表现. ...

  7. docker - 关于network的一些理解

    docker 提供给我们多种(4种)网络模式,我们可以根据自己的需求来使用.例如我们在一台主机(host)或者同一个docker engine上面运行continer的时候,我们就可以选择bridge ...

  8. Docker Machine 简介

    Docker Machine 是什么? Docker Machine 是 Docker 官方提供的一个工具,它可以帮助我们在远程的机器上安装 Docker,或者在虚拟机 host 上直接安装虚拟机并在 ...

  9. Ubuntu Docker 版本的更新与安装

    突然发现自己的docker 版本特别的低,目前是1.9.1 属于古董级别的了,想更新一下最新版本,这样最新的一下命令就可以被支持.研究了半天都没有更新成功,更新后的版本始终都是1.9.1 :蒙圈了,找 ...

随机推荐

  1. 11.9luffycity(4)

    2018-11-9 17:57:09 明天开始自己独立写luffy部分表的接口, 越努力,越幸运!永远不要高估自己! 明天后天先不想下看视频,把接口做完,然后整理一下笔记,温故而习之,可以为师啊! 知 ...

  2. 接口自动化测试 (三)request.post

    上一节介绍了  requests.get()  方法的基本使用,本节介绍  requests.post()  方法的使用: 本文目录: 一.方法定义 二.post方法简单使用 1.带数据的post 2 ...

  3. elk-logstash-kibana(三)

    一.修改logstash.yml unzip logstash-6.3.2 vim config/logstash.yml #添加:检查所有ip http.host: "0.0.0.0&qu ...

  4. what is spring-cloud

    什么是Spring-cloud ? Spring Cloud是一系列框架的集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均 ...

  5. GCD与LCM

    求最大公约数(GCD)和求最小公倍数(LCM): 首先是求最大公约数,我们可以利用辗转相除法来求 1 int gcd(int a,int b) 2 { 3 if(b==0) 4 return a; 5 ...

  6. ELK之安装searchguard后默认管理员用户admin修改

    安装完elasticsearch之后会有一个默认的用户admin密码也为admin,该用户无法删除无法编辑修改密码,用于生产时安全性较差,需要修改默认密码或者删除该admin用户 使用工具生产加密密码 ...

  7. Luogu 1042 - 乒乓球 - [简单模拟]

    题目链接:https://www.luogu.org/problemnew/show/P1042 题目背景国际乒联现在主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及.其中 ...

  8. 什么是Rollback Segment(已truncate和delete 命令为例)?

    Rollback Segments是在你数据库中的一些存储空间,它用来临时的保存当数据库数据发生改变时的先前值,Rollback Segment主要有两个目的: 1. 如果因为某种原因或者其他用用户想 ...

  9. hackbar功能简介

    SQL:提供三种数据库的sql查询语句,以及一些方便联合查询的语句 XSS:提供xss攻击语句 string.fromcharcode():将根据UNICODE 值来输出xss语句 html char ...

  10. 实现mybash

    任务内容 1.使用fork,exec,wait实现mybash 查找资料: fork函数 通过fork()系统调用我们可以创建一个和当前进程印象一样的新进程.我们通常将新进程称为子进程,而当前进程称为 ...