06、对容器操作

1、启动容器

1)方法1(不推荐):

  先创建一个容器:docker create 镜像名

  再启动容器:docker start  容器名

2)方法2:docker run 镜像名

格式:

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

options常用命令

-t  打开一个终端,像使用交换机一样使用容器

-i  交互式访问

--name  指定容器名字

--network  指定网络模式

--rm    容器一停,自动删除

-d  剥离与当前终端的关系;否则会一直占据着终端

-p  端口映射,将容器内服务的段鸥映射在宿主机的指定端口

  • -p <container port>
  • -p <hostport>:<container port>
  • -p <hostip>:<hostport>:<container port>

运行一个容器

[root@hackerlin ~]# docker run --name web2 -it docker.io/nginx:1.14-alpine /bin/sh
/ # ls
bin    dev    etc    home   lib    media  mnt    opt    proc   root   run    sbin   srv    sys    tmp    usr    var
/ # exit

2、查看容器运行的状态

docker ps

-a  查询所有的容器

注:容器内的第一个进程必须一直处于运行的状态,否则这个容器就会处于退出状态!

[root@hackerlin ~]# docker ps  #只显示正在运行的容器
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                  NAMES
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   5 minutes ago       Up 5 minutes        0.0.0.0:8888->80/tcp   web1
[root@hackerlin ~]# docker ps -a  #显示所有的容器
CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS                          PORTS                  NAMES
90b865a6b118        docker.io/nginx:1.14-alpine   "/bin/sh"                About a minute ago   Exited (0) About a minute ago                          web2
f43b710c4f7a        docker.io/busybox:latest      "/bin/bash"              5 minutes ago        Created                                                b1
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   5 minutes ago        Up 5 minutes                    0.0.0.0:8888->80/tcp   web1

3、停止运行的容器

docker stop  关闭运行的容器

docker kill  杀死运行的容器

-s:指定信号,和kill用法一样;-9强制停止容器

[root@hackerlin ~]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                  NAMES
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   9 minutes ago       Up 2 seconds        0.0.0.0:8888->80/tcp   web1
[root@hackerlin ~]# docker kill web1
web1
[root@hackerlin ~]# docker ps    #显示正在运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@hackerlin ~]# docker ps -a    #显示所有的容器
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                       PORTS               NAMES
90b865a6b118        docker.io/nginx:1.14-alpine   "/bin/sh"                4 minutes ago       Exited (0) 4 minutes ago                         web2
f43b710c4f7a        docker.io/busybox:latest      "/bin/bash"              8 minutes ago       Created                                          b1
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   9 minutes ago       Exited (137) 6 seconds ago                       web1

4、激活关闭的容器

docker start 

格式:

Usage: docker start [OPTIONS] CONTAINER [CONTAINER...]

 

options选项:

-a:  附加到当前终端

-i:   交互式

示例:

[root@hackerlin ~]# docker start web1
web1
[root@hackerlin ~]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                  NAMES
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   13 minutes ago      Up 1 second         0.0.0.0:8888->80/tcp   web1

5、查看容器信息

[root@hackerlin ~]# docker inspect web1
[root@hackerlin ~]# docker inspect web1 | grep "IPAddress"    #查询到容器的IP地址
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@hackerlin ~]# curl 172.17.0.2  #通过地址访问容器提供的服务
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
         35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

6、删除容器(先停止后删除)

[root@hackerlin ~]# docker ps
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS              PORTS                  NAMES
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   16 minutes ago      Up 2 minutes        0.0.0.0:8888->80/tcp   web1
[root@hackerlin ~]# docker kill web1     #先关闭容器
web1
[root@hackerlin ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@hackerlin ~]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND                  CREATED             STATUS                       PORTS               NAMES
90b865a6b118        docker.io/nginx:1.14-alpine   "/bin/sh"                12 minutes ago      Exited (0) 11 minutes ago                        web2
f43b710c4f7a        docker.io/busybox:latest      "/bin/bash"              16 minutes ago      Created                                          b1
147c77201ec1        docker.io/nginx:1.14-alpine   "nginx -g 'daemon ..."   16 minutes ago      Exited (137) 9 seconds ago                       web1
[root@hackerlin ~]# docker rm web1    #再删除容器
web1
[root@hackerlin ~]# docker ps -a
CONTAINER ID        IMAGE                         COMMAND             CREATED             STATUS                      PORTS               NAMES
90b865a6b118        docker.io/nginx:1.14-alpine   "/bin/sh"           12 minutes ago      Exited (0) 12 minutes ago                       web2
f43b710c4f7a        docker.io/busybox:latest      "/bin/bash"         16 minutes ago      Created                                         b1
[root@hackerlin ~]# docker rm -f `docker ps -aq`    #删除所有容器,-f 强制删除
90b865a6b118
f43b710c4f7a
[root@hackerlin ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

7、对运行的容器执行指定命令exec

格式:

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

options选项

  • -d:在后台运行命令
  • -e:设置环境变量
  • -i:交互式
  • -t:打开一个终端
  • -u:用户名或UID

示例:

[root@hackerlin ~]# docker run --name web1 -d nginx:1.14-alpine
81f336e878c0fb3187596f2acd12705d94f532978a8ad37c9f8ae33cc39bfb61
交互式进入容器
[root@hackerlin ~]# docker exec -it web1 /bin/sh   
/ # ls /
bin    etc    lib    mnt    root   sbin   sys    usr
dev    home   media  proc   run    srv    tmp    var
/ # exit
查询ip
[root@hackerlin ~]# docker exec web1 ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
43: eth0@if44: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:acff:fe11:2/64 scope link 
       valid_lft forever preferred_lft forever

8、查询容器内部日志

[root@hackerlin ~]# curl 172.17.0.2
[root@hackerlin ~]# docker logs web1
172.17.0.1 - - [03/Jan/2019:09:00:42 +0000] "GET / HTTP/1.1" 200 612 "-" "curl/7.29.0" "-"

  

原文地址:https://www.cnblogs.com/hackerlin/p/12673508.html