Docker(三)——容器

启动容器

创建并启动一个容器 docker run 命令

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明

命令 说明
-a 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项
-d 后台运行容器,并返回容器ID
-i 以交互模式运行容器,通常与 -t 同时使用
-p(小写) 端口映射,格式为:主机(宿主)端口:容器端口
-P(大写) 随机映射一个主机(宿主)的端口到内部容器网络端口
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
--name 为容器指定一个名称,--name="nginx-lb"
--dns 指定容器使用的DNS服务器,默认和宿主一致,--dns 8.8.8.8
--dns search example.com: 指定容器DNS搜索域名,默认和宿主一致
-h 指定容器的hostname
-e username="ritchie": 设置环境变量
--env-file=[] 从指定文件读入环境变量
--cpuset 绑定容器到指定CPU运行,cpuset="0,1,2"
-m 设置容器使用内存最大值
--net 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型,--net="bridge"
--link 添加链接到另一个容器
--expose 开放一个端口或一组端口

创建一次性容器

$ docker run ubuntu:16.04 echo "baxiang"
baxiang
$ docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
1b3e189b2e5f        ubuntu:16.04        "echo baxiang"      17 seconds ago      Exited (0) 16 seconds ago                       nifty_lichterman

创建交互型容器

$ docker run -i -t ubuntu /bin/bash
root@3e1bab595731:/#

通过exit退出当前交互式容器
守护进程容器
执行命令Ctrl+P加速Ctrl+Q的方式让容器成为守护式容器

docker run -i -t ubuntu
root@67ac6333c955:/# [root@izhp3f2wn461rak5gw97qmz ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
67ac6333c955        ubuntu              "/bin/bash"         17 seconds ago      Up 16 seconds                           awesome_goldstine

将守护式进程从后台再次进入前台交互执行docker attach

docker run -i -t ubuntu
root@67ac6333c955:/# [root@izhp3f2wn461rak5gw97qmz ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
67ac6333c955        ubuntu              "/bin/bash"         17 seconds ago      Up 16 seconds                           awesome_goldstine
[root@izhp3f2wn461rak5gw97qmz ~]# docker attach 67ac6333c955

执行docker run -d 进入守护式进程
-d 的可选性参数只是告诉以守护进程的方式运行容器,但是如果容器命令执行完成了,容器依旧会退出。

# docker run -d ubuntu
3656aef035277e43db546beb561d1ca16da3c5c62003d7006dc656fdbc1e84e0
[root@izhp3f2wn461rak5gw97qmz ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

所有要真正保持后台运行,需要让容器一直在执行任务

docker run --name dloop -d ubuntu /bin/sh -c "while true; do echo hello docker; sleep 1; done"
ef58053656cf327d91c5cd84ffd43e9d6841ca2769ea6bb147172f05263fe6e6
[root@izhp3f2wn461rak5gw97qmz ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
ef58053656cf        ubuntu              "/bin/sh -c 'while t…"   6 seconds ago       Up 5 seconds                            dloop

设置容器的端口映射

docker run -d -P training/webapp python app.py
docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
02672e5ba524        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:32768->5000/tcp   sad_mcnulty

查看

查看当前运行的容器

docker ps

查看所有容器,包括停止的。

docker ps -a
docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS                      PORTS               NAMES
3e1bab595731        ubuntu              "/bin/bash"            6 minutes ago       Exited (0) 19 seconds ago                       silly_bose
7083178d6228        ubuntu              "echo 'Hello world'"   3 days ago          Exited (0) 3 days ago                           sharp_darwin
94236af3ffe3        ubuntu              "echo 'Hello world'"   3 days ago          Exited (0) 3 days ago                           competent_mclean
3abb0fad0d5a        ubuntu              "echoHello world"      3 days ago          Created                                         kind_hermann
1b3e189b2e5f        ubuntu:16.04        "echo baxiang"         5 days ago          Exited (0) 5 days ago

查看容器的详细信息

docker inspect [NAME]/[CONTAINER ID]

查看守护容器后台日志,-t显示时间 -f更新日志记录 --tail 显示日志数量--tail 0 显示最新的日志记录

docker logs -tf  --tail 0 dloop

查看容器的进程 docker top

docker top dloop

终止

将容器退出

docker stop [NAME]/[CONTAINER ID]

强制容器退出

docker kill [NAME]/[CONTAINER ID]

启动

启动已经停止的容器

docker start [OPTIONS] CONTAINER [CONTAINER...]

重新启动容器

docker restart [OPTIONS] CONTAINER [CONTAINER...]

在运行中的容器开启一个新的进程

$ docker exec -i -t dloop  /bin/bash
root@ef58053656cf:/# read escape sequence# 让容器进入后台
$  docker top dloop

删除

docker rm [NAME]/[CONTAINER ID]

注意不能够删除一个正在运行的容器,会报错。需要先停止容器。

测试

开启容器名称是web的80端口

docker run -p 80 --name web -i -t ubuntu

更新apt-get

apt-get update

安装nginx

apt-get install -y nginx

安装vim

apt-get install -y vim

查看nginx配置

$vim /etc/nginx/sites-available/default
server {
        listen 80 default_server;
        listen [::]:80 default_server;

        # SSL configuration
        #
        # listen 443 ssl default_server;
        # listen [::]:443 ssl default_server;
        #
        # Note: You should disable gzip for SSL traffic.
        # See: https://bugs.debian.org/773332
        #
        # Read up on ssl_ciphers to ensure a secure configuration.
        # See: https://bugs.debian.org/765782
        #
        # Self signed certs generated by the ssl-cert package
        # Don't use them in a production server!
        #
        # include snippets/snakeoil.conf;

        root /var/www/html;

创建静态文件

$mkdir -p /var/www/html
cd  /var/www/html
$ vim index.html

编辑首页内容

<html>
<head>
        <title>Nginx in Docker</title>
</head>
<body>
        <h1>Hello, Welcome to my webside</h1>
</body>
</html>

启动nginx

$nginx
$ ps -aux|grep nginx
root       968  0.0  0.0 140628  1436 ?        Ss   17:33   0:00 nginx: master process nginx
www-data   969  0.0  0.1 141004  2436 ?        S    17:33   0:00 nginx: worker process
root       976  0.0  0.0  11452   724 pts/0    S+   17:58   0:00 grep --color=auto nginx

访问

$curl http://localhost:32771
<html>
<head>
    <title>Nginx in Docker</title>
</head>
<body>
    <h1>Hello, Welcome to my webside</h1>
</body>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,527评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,314评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,535评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,006评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,961评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,220评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,664评论 3 392
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,351评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,481评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,397评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,443评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,123评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,713评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,801评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,010评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,494评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,075评论 2 341

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 《Docker从入门到实践》阅读笔记 原书地址: https://yeasy.gitbooks.io/docker...
    GuoYuebo阅读 11,347评论 1 39
  • 一直要写这样一篇文章,但迟迟没有写出来。 今天中午真的对孩子们的作业认真一回,无比头疼。有的孩子10分钟写完就回去...
    瑶花琪树Ms赵阅读 224评论 1 1
  • 我清楚地记得,那天是阴历十二月十二日,我的生辰。 天还没亮,清晨五点多,我走在熟悉的乡道上。路上还没有行人,路边的...
    梦1212阅读 464评论 2 1