Doker CE容器镜像的使用及容器连接

一、Docker 容器使用

1、Docker 客户端

docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项

[root@localhost ~]# docker 

更深入的了解指定的 Docker 命令使用方法。例如我们要查看 docker stats 指令的具体使用方法:

runoob@runoob:~# docker stats --help

2、运行WEB应用

-d 让容器在后台运行。
-P 将容器内部使用的网络端口映射到我们使用的主机上

[root@localhost ~]# docker pull training/webapp	#载入镜像
[root@localhost ~]# docker run -d -P training/webapp python app.py	#创建容器保持后台运行,将容器内部使用的网络端口映射到我们使用的主机上

3、查看WEB容器

使用 docker ps 来查看我们正在运行的容器
docker ps -l 可以查看最后一次创建的容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                     NAMES
1f1135116e18        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:32768->5000/tcp   jolly_kalam

多了端口信息

PORTS
0.0.0.0:32768->5000/tcp

Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32768 上
通过浏览器访问web应用
在这里插入图片描述
-p 参数来设置不一样的端口

[root@localhost ~]# docker run -d -p 5000:5000 training/webapp python app.py  #容器内部的 5000 端口映射到我们本地主机的 5000 端口上
3dae4929b1854a699d4c2b249761bde0809d517af025c9c308ea264f79962946
[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
3dae4929b185        training/webapp     "python app.py"     9 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp    dreamy_germain
1f1135116e18        training/webapp     "python app.py"     11 minutes ago      Up 11 minutes       0.0.0.0:32768->5000/tcp   jolly_kalam

3、网络端口的快捷方式

通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。

[root@localhost ~]# docker port 3dae4929b185 
5000/tcp -> 0.0.0.0:5000
[root@localhost ~]# docker port dreamy_germain
5000/tcp -> 0.0.0.0:5000

4、查看WEB程序日志

docker logs [ID或者名字] 可以查看容器内部的标准输出
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。

[root@localhost ~]# docker logs -f 3dae4929b185
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.1.102 - - [04/Apr/2019 15:01:45] "GET / HTTP/1.1" 200 -
192.168.1.102 - - [04/Apr/2019 15:01:45] "GET /favicon.ico HTTP/1.1" 404 -

5、查看WEB应用程序的进程

docker top ID或名字 可以查看容器内部运行的进程

[root@localhost ~]# docker top 3dae4929b185
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                10222               10204               0                   22:59               ?                   00:00:00            python app.py

6、检查WEB应用程序

使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息

[root@localhost ~]# docker inspect 3dae4929b185
[
{
    "Id": "3dae4929b1854a699d4c2b249761bde0809d517af025c9c308ea264f79962946",
    "Created": "2019-04-04T14:59:52.486361049Z",
    "Path": "python",
    "Args": [
        "app.py"
    ],
    "State": {
        "Status": "running",
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 10222,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2019-04-04T14:59:57.872221605Z",
        "FinishedAt": "0001-01-01T00:00:00Z"
    },

8、重启WEB应用程序

已经停止的容器,我们可以使用命令 docker start 来启动

[root@localhost ~]# docker start 3dae4929b185

二、Docker 镜像使用

1、列出镜像列表

使用 docker images 获取本机镜像

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              9f38484d220f        3 weeks ago         202MB
training/webapp     latest              6fae60ef3446        3 years ago         349MB

REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如ubuntu仓库源里,有15.10、14.04等多个不同的版本,我们使用 REPOSITORY:TAG 来定义不同的镜像。
所以,我们如果要使用版本为15.10的ubuntu系统镜像来运行容器时,命令如下

[root@localhost ~]# docker run -t -i ubuntu:15.10 /bin/bash 
root@d77ccb2e5cca:/#

如果要使用版本为14.04的ubuntu系统镜像来运行容器时,命令如下:

[root@localhost ~]#d ocker run -t -i ubuntu:14.04 /bin/bash 
root@39e968165990:/# 

2、获取新的镜像

当我们在本地主机上使用一个不存在的镜像时 Docker 就会自动下载这个镜像。如果我们想预先下载这个镜像,我们可以使用 docker pull 命令来下载它

[root@localhost ~]# docker pull ubuntu:13.10

3、查找镜像

我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。比如我们需要一个httpd的镜像来作为我们的web服务。我们可以通过 docker search 命令搜索 httpd 来寻找适合我们的镜像

NAME                                 DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
httpd                                The Apache HTTP Server Project                  2403                [OK]                
haproxy                              HAProxy - The Reliable, High Performance TCP…   1185                [OK]                
jruby                                JRuby (http://www.jruby.org) is an implement…   82                  [OK]                
steveltn/https-portal                A fully automated HTTPS server powered by Ng…   65                                      [OK]
hypriot/rpi-busybox-httpd            Raspberry Pi compatible Docker Image with a …   46                                      
kennethreitz/httpbin                 A simple HTTP service.                          25                                      [OK]
centos/httpd-24-centos7              Platform for running Apache httpd 2.4 or bui…   22                                      
geldim/https-redirect                Very small (4mb) http to https redirector       15                                      [OK]

NAME:镜像仓库源的名称
DESCRIPTION:镜像的描述
OFFICIAL:是否docker官方发布

4、创建镜像

我们可以通过以下两种方式对镜像进行更改
1.从已经创建的容器中更新镜像,并且提交这个镜像
2.使用 Dockerfile 指令来创建一个新的镜像

5、更新镜像

更新镜像之前,我们需要使用镜像来创建一个容器。

[root@localhost ~]# docker run -it centos /bin/bash
[root@ae3e0d7dce53 /]

在运行的容器内使用 yumt update 命令进行更新。
在完成操作之后,输入 exit命令来退出这个容器。
此时ID为ae3e0d7dce53的容器,是按我们的需求更改的容器。我们可以通过命令 docker commit来提交容器副本。

[root@ae3e0d7dce53 /]# exit
exit
[root@localhost ~]# docker commit -m="update" -a="root" ae3e0d7dce53 root/centos:v2
sha256:c3d43b8ca69991b90a993123cfd2272c354a5115af284b5f4941fa772b80bf4c
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
root/centos         v2                  c3d43b8ca699        8 seconds ago       202MB
centos              latest              9f38484d220f        3 weeks ago         202MB
training/webapp     latest              6fae60ef3446        3 years ago         349MB
[root@localhost ~]# 

-m:提交的描述信息
-a:指定镜像作者
e218edb10161:容器ID
runoob/ubuntu:v2:指定要创建的目标镜像名

6、构建镜像

我们使用命令 docker build , 从零开始来创建一个新的镜像。为此,我们需要创建一个 Dockerfile 文件,其中包含一组指令来告诉 Docker 如何构建我们的镜像。

[root@localhost ~]# cat Dockerfile 
FROM	centos:6.7
RUN	/bin/echo 'root:123456' | chpasswd
RUN	useradd demo
Run	/bin/echo 'demo:123456' | chpasswd

第一条FROM,指定使用哪个镜像源
RUN 指令告诉docker 在镜像内执行命令

[root@localhost ~]# docker build -t root/centos:6.7 .
Sending build context to Docker daemon   93.8MB
Step 1/4 : FROM	centos:6.7
6.7: Pulling from library/centos
cbddbc0189a0: Pull complete 
Digest: sha256:fbdc884421f5649d1ca3ae8f7f11bb955dff90879b1602702ab7ea26f9b33757
Status: Downloaded newer image for centos:6.7
---> 9f1de3c6ad53
Step 2/4 : RUN	/bin/echo 'root:123456' | chpasswd
---> Running in 7761d93f65fa
Removing intermediate container 7761d93f65fa
 ---> 4d743ffed81e
Step 3/4 : RUN	useradd demo
---> Running in 2f7d61319ba2
Removing intermediate container 2f7d61319ba2
 ---> da40ec3bc5d2
Step 4/4 : Run	/bin/echo 'demo:123456' | chpasswd
---> Running in a27797695a14
Removing intermediate container a27797695a14
 ---> faf550b0c86a
Successfully built faf550b0c86a
Successfully tagged root/centos:6.7

-t 指定要创建的目标镜像名
. Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
root/centos         6.7                 faf550b0c86a        17 seconds ago      191MB
root/centos         v2                  c3d43b8ca699        14 minutes ago      202MB
centos              6.7                 9f1de3c6ad53        3 weeks ago         191MB
centos              latest              9f38484d220f        3 weeks ago         202MB
training/webapp     latest              6fae60ef3446        3 years ago         349MB
[root@localhost ~]# docker run -it faf550b0c86a /bin/bash
[root@facce6e1c336 /]# id demo
uid=500(demo) gid=500(demo) groups=500(demo)

7、设置镜像标签

使用 docker tag 命令,为镜像添加一个新的标签。

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
demo/centos         v2                  faf550b0c86a        7 minutes ago       191MB
root/centos         6.7                 faf550b0c86a        7 minutes ago       191MB
root/centos         v2                  c3d43b8ca699        21 minutes ago      202MB
centos              6.7                 9f1de3c6ad53        3 weeks ago         191MB
centos              latest              9f38484d220f        3 weeks ago         202MB
training/webapp     latest              6fae60ef3446        3 years ago         349MB

三、容器连接

1、网络端口映射

端口映射并不是唯一把 docker 连接到另一个容器的方法。
docker 有一个连接系统允许将多个容器连接在一起,共享连接信息。
docker 连接会创建一个父子关系,其中父容器可以看到子容器的信息

指定容器绑定的网络地址127.0.0.1,通过访问 127.0.0.1:5001 来访问容器的 5000 端口。

docker run -d -p 127.0.0.1:5001:5000/udp training/webapp python app.py

-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口

默认都是绑定 tcp 端口,如果要绑定 UDP 端口,可以在端口后面加上 /udp

2、容器命名

创建一个容器的时候,docker 会自动对它进行命名。另外,我们也可以使用 –name 标识来命名容器,例如:

[root@localhost ~]#  docker run -d -P --name runoob training/webapp python app.py
43780a6eabaaf14e590b6e849235c75f3012995403f97749775e38436db9a441
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值