前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习笔记1 -- 刚入手docker时的几个命令

Docker学习笔记1 -- 刚入手docker时的几个命令

作者头像
Ryan-Miao
发布2019-03-04 10:58:03
4340
发布2019-03-04 10:58:03
举报
文章被收录于专栏:Ryan MiaoRyan Miao

Hello World

代码语言:javascript
复制
docker run ubuntu:15.10 /bin/echo "Hello world"
  • docker 是命令二进制文件
  • run 运行一个容器
  • ubuntu:15.10 镜像名称,通过是名字加版本号
  • 后面是容器里执行的任务

交互式,进入镜像内部

代码语言:javascript
复制
 docker run -i -t ubuntu:15.10 /bin/bash
  • -t:在新容器内指定一个伪终端或终端。
  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

后台运行

代码语言:javascript
复制
# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"
6e42dee957d59d818d0d21bbf0ff8b2bc84d1006baa2696e81f33e023d3e2c04

# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
6e42dee957d5        ubuntu:15.10        "/bin/sh -c 'while t…"   2 seconds ago       Up 1 second                             sad_villani

# docker logs 6e42dee957d5
hello world
hello world
hello world

停止运行

代码语言:javascript
复制
# docker stop  6e42dee957d5
6e42dee957d5

容器

载入镜像

代码语言:javascript
复制
 docker pull training/webapp 

运行应用

代码语言:javascript
复制
# docker run -d -P training/webapp python app.py

# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
c99a63cd5cb3        training/webapp     "python app.py"     4 seconds ago       Up 3 seconds        0.0.0.0:32769->5000/tcp   jovial_elion

# curl localhost:32769
Hello world!
  • -d:让容器在后台运行。
  • -P:将容器内部使用的网络端口映射到我们使用的主机上。本地端口是32769,映射内部端口5000.

指定端口映射

代码语言:javascript
复制
[root@bigdata-base-001 ~]# docker run -d -p 5000:5000 training/webapp python app.py
458bb7a6520a46e74137032770f846a5faf9afb43b6ba324667d4b1936566ea0
[root@bigdata-base-001 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
458bb7a6520a        training/webapp     "python app.py"     4 seconds ago        Up 3 seconds        0.0.0.0:5000->5000/tcp    wizardly_babbage
c99a63cd5cb3        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:32769->5000/tcp   jovial_elion
[root@bigdata-base-001 ~]# curl localhost:5000
Hello world!

可以发现运行两个应用,但对应本地不同的端口

查看日志

代码语言:javascript
复制
# docker logs 458bb7a6520a
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
172.17.0.1 - - [03/Jan/2019 14:13:38] "GET / HTTP/1.1" 200 -

tail日志

代码语言:javascript
复制
# docker logs -f 458bb7a6520a
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
172.17.0.1 - - [03/Jan/2019 14:13:38] "GET / HTTP/1.1" 200 -

查看应用的进程

代码语言:javascript
复制
# docker top 458bb7a6520a
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                14801               14765               0                   22:13               ?                   00:00:00            python app.py

登入镜像内部

代码语言:javascript
复制
docker exec  -it 458bb7a6520a /bin/bash

移除容器

代码语言:javascript
复制
docker rm c99a63cd5cb3

查看最近一次创建的容器

代码语言:javascript
复制
# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                            PORTS               NAMES
458bb7a6520a        training/webapp     "python app.py"     20 minutes ago      Exited (137) About a minute ago                       wizardly_babbage

镜像

查看本地镜像

代码语言:javascript
复制
docker images           
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               90d5884b1ee0        5 days ago          188 MB
php                 5.6                 f40e9e0f10c8        9 days ago          444.8 MB

拉取镜像

代码语言:javascript
复制
docker pull ubuntu:13.10

查找镜像

代码语言:javascript
复制
docker search httpd

更新镜像

首先进入镜像

代码语言:javascript
复制
docker run -t -i ubuntu:15.10 /bin/bash
root@e218edb10161:/# apt-get update

更新后,提交副本

代码语言:javascript
复制
# docker commit -m="has update" -a="runoob" e218edb10161 runoob/ubuntu:v2
sha256:70bf1840fd7c0d2d8ef0a42a817eb29f854c1af8f7c59fc03ac7bdee9545aff8
  • -m:提交的描述信息
  • -a:指定镜像作者
  • e218edb10161:容器ID
  • runoob/ubuntu:v2:指定要创建的目标镜像名

构建镜像

使用docker build通过Dockerfile构建镜像。

一个示例Dockerfile

代码语言:javascript
复制
FROM    centos:6.7
MAINTAINER      Fisher "fisher@sudops.com"

RUN     /bin/echo 'root:123456' |chpasswd
RUN     useradd runoob
RUN     /bin/echo 'runoob:123456' |chpasswd
RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local
EXPOSE  22
EXPOSE  80
CMD     /usr/sbin/sshd -D

构建

代码语言:javascript
复制
$ docker build -t runoob/centos:6.7 .
Sending build context to Docker daemon 17.92 kB
Step 1 : FROM centos:6.7
 ---> d95b5ca17cc3
Step 2 : MAINTAINER Fisher "fisher@sudops.com"
 ---> Using cache
 ---> 0c92299c6f03
Step 3 : RUN /bin/echo 'root:123456' |chpasswd
 ---> Using cache
 ---> 0397ce2fbd0a
Step 4 : RUN useradd runoob
......
  • -t :指定要创建的目标镜像名
  • . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径
代码语言:javascript
复制
# docker images | grep run
runoob/centos                                              6.7                 b9f70b080d42        12 seconds ago      191MB

使用镜像来创建容器

代码语言:javascript
复制
# docker run -t -i runoob/centos:6.7  /bin/bash

设置镜像标签

代码语言:javascript
复制
# docker tag b9f70b080d42  runoob/centos:dev

# docker images | grep run                  
runoob/centos                                              6.7                 b9f70b080d42        3 minutes ago       191MB
runoob/centos                                              dev                 b9f70b080d42        3 minutes ago       191MB

镜像标签可以理解为版本号。比如我们项目demo的版本是1.5.1,那么标签可以是:

代码语言:javascript
复制
-- 构建一个镜像,名称是ryan/demo, tag是1.5.1
docker build -t ryan/demo:1.5.1 .

-- 因为这个镜像是最新的,将指针latest 指向这个
docker tag ryan/demo:1.5.1  latest

-- 对于版本1来说,这也是最新的
docker tag ryan/demo:1.5.1  1

也就是说,tag可以有多个对应的是同一个镜像。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-02-12 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hello World
    • 后台运行
      • 停止运行
      • 容器
        • 载入镜像
          • 指定端口映射
            • 查看日志
              • 查看应用的进程
                • 登入镜像内部
                  • 移除容器
                  • 镜像
                    • 查看本地镜像
                      • 拉取镜像
                        • 查找镜像
                          • 更新镜像
                            • 构建镜像
                              • 设置镜像标签
                              相关产品与服务
                              容器服务
                              腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档