码迷,mamicode.com
首页 > 其他好文 > 详细

来自docker的嚎叫

时间:2019-01-22 17:25:41      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:最新   roo   模式   logs   linu   开始时间   search   简单   span   

好吧, 这是我第二次玩这个玩意了, 其实我现在这家公司是没有接触到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的嚎叫

标签:最新   roo   模式   logs   linu   开始时间   search   简单   span   

原文地址:https://www.cnblogs.com/chenglee/p/10304204.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!