博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Docker 学习笔记
阅读量:4230 次
发布时间:2019-05-26

本文共 56596 字,大约阅读时间需要 188 分钟。

docker run 命令参数 

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]        -d, --detach=false         指定容器运行于前台还是后台,默认为false      -i, --interactive=false    打开STDIN,用于控制台交互     -t, --tty=false            分配tty设备,该可以支持终端登录,默认为false     -u, --user=""              指定容器的用户     -a, --attach=[]            登录容器(必须是以docker run -d启动的容器)   -w, --workdir=""           指定容器的工作目录    -c, --cpu-shares=0         设置容器CPU权重,在CPU共享场景使用     -e, --env=[]               指定环境变量,容器中可以使用该环境变量     -m, --memory=""            指定容器的内存上限     -P, --publish-all=false    指定容器暴露的端口     -p, --publish=[]           指定容器暴露的端口    -h, --hostname=""          指定容器的主机名     -v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录     --volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录   --cap-add=[]               添加权限,权限清单详见:http://linux.die.net/man/7/capabilities     --cap-drop=[]              删除权限,权限清单详见:http://linux.die.net/man/7/capabilities     --cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法     --cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU     --device=[]                添加主机设备给容器,相当于设备直通     --dns=[]                   指定容器的dns服务器     --dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件     --entrypoint=""            覆盖image的入口点     --env-file=[]              指定环境变量文件,文件格式为每行一个环境变量     --expose=[]                指定容器暴露的端口,即修改镜像的暴露端口     --link=[]                  指定容器间的关联,使用其他容器的IP、env等信息     --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用     --name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字     --net="bridge"             容器网络设置:                                 bridge 使用docker daemon指定的网桥                                      host    //容器使用主机的网络                                   container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源                                   none 容器使用自己的网络(类似--net=bridge),但是不进行配置    --privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities     --restart="no"             指定容器停止后的重启策略:                                 no:容器退出时不重启                                   on-failure:容器故障退出(返回值非零)时重启                                  always:容器退出时总是重启     --rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)     --sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理

Hello World

之前也有学过Docker,然而由于平时用的时候不多,整个学习过程不过是囫囵吞枣,浅藏辄止而已。所以再来熟悉熟悉罢了(以备后续自查)。docker正常的 hello world 应该是这样的,不过也可以用其他镜像来输出 “hello world”。

[root@master ~]# docker pull hello-world[root@master ~]# docker run hello-worldHello from Docker!This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.    (amd64) 3. The Docker daemon created a new container from that image which runs the    executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it    to your terminal.To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID: https://hub.docker.com/For more examples and ideas, visit: https://docs.docker.com/get-started/

我用的是 centOS7 的虚拟机,docker我记得也在虚拟机安装过,所以一上来就来了个 docker images 命令,结果,就报错了。因为我虚拟机少不了要频繁的开开关关,所以启动后要记得启动docker服务,最后按照网上的教程重启了一下好了。

[root@master ~]# docker imagesCannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?[root@master ~]# systemctl daemon-reload[root@master ~]# service docker restartRedirecting to /bin/systemctl restart docker.service[root@master ~]# service docker statusRedirecting to /bin/systemctl status docker.service● docker.service - Docker Application Container Engine   Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)   Active: active (running) since Sat 2020-07-18 12:38:33 CST; 16s ago     Docs: https://docs.docker.com Main PID: 2039 (dockerd)    Tasks: 13   Memory: 156.1M   CGroup: /system.slice/docker.service           └─2039 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockJul 18 12:38:30 master dockerd[2039]: time="2020-07-18T12:38:30.277660215+08:00" level=info msg="pickfirstBalancer: Handl...le=grpcJul 18 12:38:30 master dockerd[2039]: time="2020-07-18T12:38:30.278112890+08:00" level=info msg="pickfirstBalancer: Handl...le=grpcJul 18 12:38:31 master dockerd[2039]: time="2020-07-18T12:38:31.043399929+08:00" level=info msg="[graphdriver] using prio...erlay2"Jul 18 12:38:32 master dockerd[2039]: time="2020-07-18T12:38:32.638615621+08:00" level=info msg="Loading containers: start."Jul 18 12:38:33 master dockerd[2039]: time="2020-07-18T12:38:33.209006424+08:00" level=info msg="Default bridge (docker0)...ddress"Jul 18 12:38:33 master dockerd[2039]: time="2020-07-18T12:38:33.274649719+08:00" level=info msg="Loading containers: done."Jul 18 12:38:33 master dockerd[2039]: time="2020-07-18T12:38:33.659005690+08:00" level=info msg="Docker daemon" commit=6a...19.03.2Jul 18 12:38:33 master dockerd[2039]: time="2020-07-18T12:38:33.659723430+08:00" level=info msg="Daemon has completed ini...zation"Jul 18 12:38:33 master dockerd[2039]: time="2020-07-18T12:38:33.719042892+08:00" level=info msg="API listen on /var/run/d...r.sock"Jul 18 12:38:33 master systemd[1]: Started Docker Application Container Engine.Hint: Some lines were ellipsized, use -l to show in full.[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
faa63f80f414 10 months ago 129MBmongo latest cda2c466f867 10 months ago 361MBtomcat latest 365b0a528e2e 10 months ago 506MBpython 3.5 67f4589d3c88 10 months ago 908MBnginx latest ab56bba91343 10 months ago 126MBhttpd latest 19459a872194 10 months ago 154MBmysql 5.6 95e0fc47b096 10 months ago 257MBdebian jessie c9d6adb06e4d 10 months ago 129MBhello-world latest fce289e99eb9 18 months ago 1.84kBredis 3.2 87856cc39862 21 months ago 76MB

不过,刚上来,还是来个 "hello world" ,我准备用镜像 ubuntu:15.10 来运行这个 “hello world”。当然,由于我镜像库里边还没有这个镜像,所以它自动给我下载了一个:

[root@master ~]# docker run ubuntu:15.10 /bin/echo "hello world"Unable to find image 'ubuntu:15.10' locally15.10: Pulling from library/ubuntu7dcf5a444392: Pull complete 759aa75f3cee: Pull complete 3fa871dc8a2b: Pull complete 224c42ae46e7: Pull complete Digest: sha256:02521a2d079595241c6793b2044f02eecf294034f31d6e235ac4b2b54ffc41f3Status: Downloaded newer image for ubuntu:15.10hello world

再次查看本地镜像时,已经有了ubuntu:15.10这个镜像了:

[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
faa63f80f414 10 months ago 129MBmongo latest cda2c466f867 10 months ago 361MBtomcat latest 365b0a528e2e 10 months ago 506MBpython 3.5 67f4589d3c88 10 months ago 908MBnginx latest ab56bba91343 10 months ago 126MBhttpd latest 19459a872194 10 months ago 154MBmysql 5.6 95e0fc47b096 10 months ago 257MBdebian jessie c9d6adb06e4d 10 months ago 129MBhello-world latest fce289e99eb9 18 months ago 1.84kBredis 3.2 87856cc39862 21 months ago 76MBubuntu 15.10 9b9cb95443b5 3 years ago 137MB

然后加上 -it 参数试试(这样就可以直接进入到镜像创建的容器内了):

  • -t: 在新容器内指定一个伪终端或终端。

  • -i: 允许你对容器内的标准输入 (STDIN) 进行交互

再查看一下目录结构,是不是和你见过的 Ubuntu 系统很像?

[root@master ~]# docker run -it ubuntu:15.10 /bin/bashroot@7481a5986831:/# cat /proc/versionLinux version 3.10.0-957.27.2.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Mon Jul 29 17:46:05 UTC 2019root@7481a5986831:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

也可以使用 -d 参数启动后台模式,并使用 docker logs查看标准输出:

[root@master ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"7a9868d2bd3fe7776d74a3e87a1ea6424f5e1b480e568d49347d08397b51d933[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   11 seconds ago      Up 10 seconds                           trusting_wozniak[root@master ~]# docker logs 7a9868d2bd3hello worldhello worldhello worldhello worldhello worldhello worldhello world

使用 docker stop 停止容器,至于容器ID(CONTAINER ID),原始的容器ID比较长,比如此例当作,原始的CONTAINER ID:7a9868d2bd3fe7776d74a3e87a1ea6424f5e1b480e568d49347d08397b51d933,自己使用的时候可以截取前面一部分,只要 docker 能自己找到相应的容器就没有太大影响:

[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   3 minutes ago       Up 3 minutes                            trusting_wozniak[root@master ~]# docker stop 7a9868d27a9868d2[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES[root@master ~]#

当然,如果你自己没有主动指定容器名称的话,也可以使用自动分配的容器名称来进行操作:

[root@master ~]# docker run -d ubuntu:15.10 /bin/sh -c "while true; do echo hello world; sleep 1; done"5128468ffe061ca4848af54d74b78465273beacc736de03b30d8e6d74c008459[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES5128468ffe06        ubuntu:15.10        "/bin/sh -c 'while t…"   7 seconds ago       Up 6 seconds                            pedantic_stallman[root@master ~]# docker stop pedanError response from daemon: No such container: pedan[root@master ~]# docker stop pedantic_stallmanpedantic_stallman

容器使用

容器常用操作

docker run -it --name vm1 ubuntu bash #创建容器docker ps -a #查看容器状态docker attach vm1 #连接容器docker top vm1 #查看容器进程docker logs vm1 #查看容器指令输出 -f 参数可以实时查看docker inspect vm1 #查看容器详情docker stats vm1 #查看容器资源使用率docker diff vm1 #查看容器修改docker run -d --name vm1 ubuntu bash -c "while true; do echo westos; sleep 1; done" #后台运行docker stop vm1 #停止容器docker start vm1 #启动容器docker kill vm1 #强制干掉容器docker restart vm1 #重启容器docker pause/unpause vm1 #暂停/恢复容器docker rm vm1 #删除容器docker export vm1 > vm1.tar #导出容器docker import vm1.tar image #导入容器为镜像 image

基本命令

输入docker,可以看到 docker 的命令和选项有这么些些:

root@master ~]# dockerUsage:	docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions:      --config string      Location of client config files (default "/root/.docker")  -c, --context string     Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context                           use")  -D, --debug              Enable debug mode  -H, --host list          Daemon socket(s) to connect to  -l, --log-level string   Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")      --tls                Use TLS; implied by --tlsverify      --tlscacert string   Trust certs signed only by this CA (default "/root/.docker/ca.pem")      --tlscert string     Path to TLS certificate file (default "/root/.docker/cert.pem")      --tlskey string      Path to TLS key file (default "/root/.docker/key.pem")      --tlsverify          Use TLS and verify the remote  -v, --version            Print version information and quitManagement Commands:  builder     Manage builds  config      Manage Docker configs  container   Manage containers  context     Manage contexts  engine      Manage the docker engine  image       Manage images  network     Manage networks  node        Manage Swarm nodes  plugin      Manage plugins  secret      Manage Docker secrets  service     Manage services  stack       Manage Docker stacks  swarm       Manage Swarm  system      Manage Docker  trust       Manage trust on Docker images  volume      Manage volumesCommands:  attach      Attach local standard input, output, and error streams to a running container  build       Build an image from a Dockerfile  commit      Create a new image from a container's changes  cp          Copy files/folders between a container and the local filesystem  create      Create a new container  diff        Inspect changes to files or directories on a container's filesystem  events      Get real time events from the server  exec        Run a command in a running container  export      Export a container's filesystem as a tar archive  history     Show the history of an image  images      List images  import      Import the contents from a tarball to create a filesystem image  info        Display system-wide information  inspect     Return low-level information on Docker objects  kill        Kill one or more running containers  load        Load an image from a tar archive or STDIN  login       Log in to a Docker registry  logout      Log out from a Docker registry  logs        Fetch the logs of a container  pause       Pause all processes within one or more containers  port        List port mappings or a specific mapping for the container  ps          List containers  pull        Pull an image or a repository from a registry  push        Push an image or a repository to a registry  rename      Rename a container  restart     Restart one or more containers  rm          Remove one or more containers  rmi         Remove one or more images  run         Run a command in a new container  save        Save one or more images to a tar archive (streamed to STDOUT by default)  search      Search the Docker Hub for images  start       Start one or more stopped containers  stats       Display a live stream of container(s) resource usage statistics  stop        Stop one or more running containers  tag         Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE  top         Display the running processes of a container  unpause     Unpause all processes within one or more containers  update      Update configuration of one or more containers  version     Show the Docker version information  wait        Block until one or more containers stop, then print their exit codesRun 'docker COMMAND --help' for more information on a command.

启动容器

docker run -it ubuntu:15.10 /bin/bash

docker start <container-name>

# 第一次通过镜像实例化容器并启动[root@master ~]# docker run -it ubuntu:15.10 /bin/bashroot@7481a5986831:/# # 再次启动可以通过 CONTAINER ID或者容器名称进行启动[root@master ~]# docker start 7481a59868317481a5986831[root@master ~]# docker start exciting_noyceexciting_noyce[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES7481a5986831        ubuntu:15.10        "/bin/bash"         24 minutes ago      Up About a minute                       exciting_noyce

退出容器

exit

root@7481a5986831:/# exitexit

后台运行

docker run -d ubuntu:15.10 /bin/bash

[root@master ~]# docker run -d ubuntu:15.10 /bin/bash941bc1424c7a33fc48f107fc6c4be4fff585eb5a12c997905f3e93b565d63bb9

停止容器

docker stop <container-name>

[root@master ~]# docker stop 50126c772ac650126c772ac6[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

命名容器

docker run -itd --name ubuntu-test ubuntu:15.10 /bin/bash

# 不手动命名的话,会自动生成随机名称。使用--name ubuntu-test指定容器名称[root@master ~]# docker run -itd --name ubuntu-test ubuntu:15.10 /bin/bashf3e86f6694437356b2b66de34797d8c9a8081acc5abee570c18cf2dbeb1e82ea[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMESf3e86f669443        ubuntu:15.10        "/bin/bash"         6 seconds ago       Up 5 seconds                            ubuntu-test

重命名容器 

 docker rename <old-name> <new-name>

[root@master workspace]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES45cc1f7e4abd        ubuntu:15.10        "/bin/sh -c 'while t…"   4 seconds ago       Up 3 seconds                            goofy_perlman[root@master workspace]# docker rename goofy_perlman looking[root@master workspace]# docker psCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES45cc1f7e4abd        ubuntu:15.10        "/bin/sh -c 'while t…"   35 seconds ago      Up 34 seconds                           looking[root@master workspace]#

查看活动容器

docker ps

# 这个命令仅查看活动的容器[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES50126c772ac6        ubuntu:15.10        "/bin/bash"         3 seconds ago       Up 2 seconds

查看所有容器

docker ps -a 

# 包含已停止等容器的查看[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES[root@master ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                       PORTS               NAMESf3e86f669443        ubuntu:15.10        "/bin/bash"              10 minutes ago      Exited (0) 8 minutes ago                         ubuntu-test50126c772ac6        ubuntu:15.10        "/bin/bash"              13 minutes ago      Exited (0) 11 minutes ago                        elegant_lovelace941bc1424c7a        ubuntu:15.10        "/bin/bash"              14 minutes ago      Exited (0) 14 minutes ago                        quirky_booth4a02b0442f15        hello-world         "/hello"                 16 minutes ago      Exited (0) 16 minutes ago                        amazing_perlman7481a5986831        ubuntu:15.10        "/bin/bash"              18 minutes ago      Exited (0) 17 minutes ago                        exciting_noycec23328f94a64        hello-world         "/bin/bash"              18 minutes ago      Created                                          boring_benz5128468ffe06        ubuntu:15.10        "/bin/sh -c 'while t…"   2 hours ago         Exited (137) 2 hours ago                         pedantic_stallman7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   2 hours ago         Exited (137) 2 hours ago                         trusting_wozniakee7f3dc08a50        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                           flamboyant_booth89e4fe6fd9ee        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                           gifted_blacke28a462bd4b3        ubuntu:15.10        "/bin/echo 'hello wo…"   2 hours ago         Exited (0) 2 hours ago                           epic_edison3d4514ad0af7        ubuntu:15.10        "/bin/echo 'hello wo…"   2 hours ago         Exited (0) 2 hours ago                           hopeful_hermann1838455c70e7        ubuntu:15.10        "/bin/echo 'hello wo…"   3 hours ago         Exited (0) 3 hours ago                           heuristic_mendeleeva76143c7b736        faa63f80f414        "/bin/sh -c 'set -x …"   10 months ago       Exited (137) 10 months ago                       admiring_colden

进入容器

docker attach <container-name>

# 使用attach进入容器,如果从这个容器退出,会导致容器的停止。[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES7481a5986831        ubuntu:15.10        "/bin/bash"         30 minutes ago      Up 52 seconds                           exciting_noyce[root@master ~]# docker attach 7481a5986831root@7481a5986831:/# root@7481a5986831:/# exitexit[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES# 使用exec进入容器,如果从这个容器退出,不会导致容器的停止。[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES7481a5986831        ubuntu:15.10        "/bin/bash"         30 minutes ago      Up 4 seconds                            exciting_noyce[root@master ~]# docker exec -it 7481a5986831 /bin/bashroot@7481a5986831:/# exitexit[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES7481a5986831        ubuntu:15.10        "/bin/bash"         30 minutes ago      Up 52 seconds                           exciting_noyce

导出容器

docker export <container-name> > ubuntu.tar

导出以后,可以在目录结构下看到多了一个ubuntu.tar文件

[root@master ~]# docker export 7481a5986831 > ubuntu.tar[root@master ~]# lltotal 121748drwxr-xr-x.  2 root root       162 Sep  6  2019 deeplearningdrwxr-xr-x. 11 root root       150 May 19 15:46 django_project-rw-r--r--.  1 root root     13185 Sep 18  2019 get-docker.shdrwxr-xr-x.  3 root root       182 Mar 24 09:19 GitTest-rw-r--r--.  1 root root       439 Apr 28 13:39 ip-address.pydrwxr-xr-x.  5 root root       195 Apr 21 10:17 lookingdrwxr-xr-x.  2 root root        96 Mar 25 11:03 PaodingAI-rw-r--r--.  1 root root        90 Apr  2 14:28 passwd.txtdrwxr-xr-x. 13 root root      4096 May 16  2019 pycorrector-rw-r--r--.  1 root root      3889 Apr 27 14:49 render.html-rwxr-xr-x.  1 root root        95 Apr  8 14:37 test.sh-rw-r--r--.  1 root root     38513 Apr 27 14:31 test.txt-rw-r--r--.  1 root root 124584448 Jul 18 17:16 ubuntu.tar-rw-r--r--.  1 root root       276 Apr 27 14:34 user.txt

导入容器

导入以后,我们可以从本地镜像看到多了一个 test/ubuntu 镜像

[root@master ~]# cat ubuntu.tar | docker import - test/ubuntu:v1sha256:7e7c29ee095d13887bec8c8c031c435b69c0ed5b13e2e20929adc3f45409784e[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtest/ubuntu         v1                  7e7c29ee095d        6 seconds ago       119MBhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBubuntu              15.10               9b9cb95443b5        3 years ago         137MB

删除容器

docker rm -f <container-name>

删除单个容器

[root@master ~]# docker stop exciting_noyceexciting_noyce[root@master ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMESf3e86f669443        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) About an hour ago                       ubuntu-test50126c772ac6        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             elegant_lovelace941bc1424c7a        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             quirky_booth4a02b0442f15        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                             amazing_perlman7481a5986831        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 6 seconds ago                           exciting_noycec23328f94a64        hello-world         "/bin/bash"              2 hours ago         Created                                            boring_benz5128468ffe06        ubuntu:15.10        "/bin/sh -c 'while t…"   3 hours ago         Exited (137) 3 hours ago                           pedantic_stallman7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   4 hours ago         Exited (137) 3 hours ago                           trusting_wozniakee7f3dc08a50        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             flamboyant_booth89e4fe6fd9ee        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             gifted_blacke28a462bd4b3        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             epic_edison3d4514ad0af7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             hopeful_hermann1838455c70e7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             heuristic_mendeleeva76143c7b736        faa63f80f414        "/bin/sh -c 'set -x …"   10 months ago       Exited (137) 10 months ago                         admiring_colden[root@master ~]# docker rm -f exciting_noyceexciting_noyce[root@master ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMESf3e86f669443        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) About an hour ago                       ubuntu-test50126c772ac6        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             elegant_lovelace941bc1424c7a        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             quirky_booth4a02b0442f15        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                             amazing_perlmanc23328f94a64        hello-world         "/bin/bash"              2 hours ago         Created                                            boring_benz5128468ffe06        ubuntu:15.10        "/bin/sh -c 'while t…"   3 hours ago         Exited (137) 3 hours ago                           pedantic_stallman7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   4 hours ago         Exited (137) 3 hours ago                           trusting_wozniakee7f3dc08a50        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             flamboyant_booth89e4fe6fd9ee        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             gifted_blacke28a462bd4b3        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             epic_edison3d4514ad0af7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             hopeful_hermann1838455c70e7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             heuristic_mendeleeva76143c7b736        faa63f80f414        "/bin/sh -c 'set -x …"   10 months ago       Exited (137) 10 months ago                         admiring_colden

清除容器

docker container prune

清理掉所有处于终止状态的容器(谨慎使用)

[root@master ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                         PORTS               NAMESf3e86f669443        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) About an hour ago                       ubuntu-test50126c772ac6        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             elegant_lovelace941bc1424c7a        ubuntu:15.10        "/bin/bash"              2 hours ago         Exited (0) 2 hours ago                             quirky_booth4a02b0442f15        hello-world         "/hello"                 2 hours ago         Exited (0) 2 hours ago                             amazing_perlmanc23328f94a64        hello-world         "/bin/bash"              2 hours ago         Created                                            boring_benz5128468ffe06        ubuntu:15.10        "/bin/sh -c 'while t…"   3 hours ago         Exited (137) 3 hours ago                           pedantic_stallman7a9868d2bd3f        ubuntu:15.10        "/bin/sh -c 'while t…"   4 hours ago         Exited (137) 4 hours ago                           trusting_wozniakee7f3dc08a50        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             flamboyant_booth89e4fe6fd9ee        ubuntu:15.10        "/bin/bash"              4 hours ago         Exited (0) 4 hours ago                             gifted_blacke28a462bd4b3        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             epic_edison3d4514ad0af7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             hopeful_hermann1838455c70e7        ubuntu:15.10        "/bin/echo 'hello wo…"   4 hours ago         Exited (0) 4 hours ago                             heuristic_mendeleeva76143c7b736        faa63f80f414        "/bin/sh -c 'set -x …"   10 months ago       Exited (137) 10 months ago                         admiring_colden[root@master ~]# docker container pruneWARNING! This will remove all stopped containers.Are you sure you want to continue? [y/N] yDeleted Containers:f3e86f6694437356b2b66de34797d8c9a8081acc5abee570c18cf2dbeb1e82ea50126c772ac616d51152498552abaf8551a35bcd1defb70042f90ff9b36f2bde941bc1424c7a33fc48f107fc6c4be4fff585eb5a12c997905f3e93b565d63bb94a02b0442f151f0444fe639b9ff0dcb9cff41d19f24159c0f3d34f22ded9c189c23328f94a64390a128cf4666625ef40eda64c330aa39c06611b68abe7e908205128468ffe061ca4848af54d74b78465273beacc736de03b30d8e6d74c0084597a9868d2bd3fe7776d74a3e87a1ea6424f5e1b480e568d49347d08397b51d933ee7f3dc08a50a0a803403ffb026b7881e0c95661d67bad60da79aaba90d470cf89e4fe6fd9ee1759c0fbd14c35a647b07c81bfbf05eac7143e9662e58380d318e28a462bd4b34209d3bf58126a4fd27deb4d9d74de79648f90d7aa78ec2e266c3d4514ad0af7c4fbebc7fb0cd798f88137aff4c0d55346fb89f46135703c83eb1838455c70e78e8ba8034a54c27a4a6e759de368a1ad617d9d019569a2e981c1a76143c7b736e374e4430751bab03f4b779bd211abdaa931a0ea649fd295e16aTotal reclaimed space: 37.27MB[root@master ~]# docker ps -aCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Web应用容器实例

web应用容器启动

# 先载入webapp镜像[root@master ~]# docker pull training/webappUsing default tag: latestlatest: Pulling from training/webapp[DEPRECATION NOTICE] registry v2 schema1 support will be removed in an upcoming release. Please contact admins of the docker.io registry NOW to avoid future disruption.e190868d63f8: Pull complete 909cd34c6fd7: Pull complete 0b9bfabab7c1: Pull complete a3ed95caeb02: Pull complete 10bbbc0fc0ff: Pull complete fca59b508e9f: Pull complete e7ae2541b15b: Pull complete 9dd97ef58ce9: Pull complete a4c1b0cb7af7: Pull complete Digest: sha256:06e9c1983bd6d5db5fba376ccd63bfa529e8d02f23d5079b8f74a616308fb11dStatus: Downloaded newer image for training/webapp:latestdocker.io/training/webapp:latest[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEtest/ubuntu         v1                  7e7c29ee095d        About an hour ago   119MBhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBubuntu              15.10               9b9cb95443b5        3 years ago         137MBtraining/webapp     latest              6fae60ef3446        5 years ago         349MB# 使用镜像生成一个docker容器并在其中中运行一个 Python Flask 应用来运行一个web应用[root@master ~]# docker run -d -P training/webapp python app.py3a0953bcbd9a45367f14944746620b5ade508025f40afb048439e144ed088fd6# -P:将容器内部使用的网络端口随机映射到我们使用的主机上[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES3a0953bcbd9a        training/webapp     "python app.py"     6 seconds ago       Up 3 seconds        0.0.0.0:32768->5000/tcp   fervent_nobel

 Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机(我的centOS虚拟机)端口 32768 上。

运行容器查看

[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES90852ef0a131        training/webapp     "python app.py"     12 seconds ago      Up 11 seconds       0.0.0.0:32769->5000/tcp   web-test3a0953bcbd9a        training/webapp     "python app.py"     20 minutes ago      Up 20 minutes       0.0.0.0:32768->5000/tcp   fervent_nobel

容器应用程序日志查看

[root@master ~]# docker logs fervent_nobel * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)192.168.128.1 - - [18/Jul/2020 10:49:37] "GET / HTTP/1.1" 200 -192.168.128.1 - - [18/Jul/2020 10:49:37] "GET /favicon.ico HTTP/1.1" 404 -192.168.128.1 - - [18/Jul/2020 10:50:01] "GET / HTTP/1.1" 200 -192.168.128.1 - - [18/Jul/2020 10:50:01] "GET /favicon.ico HTTP/1.1" 404 -192.168.128.1 - - [18/Jul/2020 10:52:28] "GET / HTTP/1.1" 200 -[root@master ~]# docker logs -f fervent_nobel# -f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)192.168.128.1 - - [18/Jul/2020 10:49:37] "GET / HTTP/1.1" 200 -192.168.128.1 - - [18/Jul/2020 10:49:37] "GET /favicon.ico HTTP/1.1" 404 -192.168.128.1 - - [18/Jul/2020 10:50:01] "GET / HTTP/1.1" 200 -192.168.128.1 - - [18/Jul/2020 10:50:01] "GET /favicon.ico HTTP/1.1" 404 -192.168.128.1 - - [18/Jul/2020 10:52:28] "GET / HTTP/1.1" 200 -192.168.128.1 - - [18/Jul/2020 10:53:51] "GET / HTTP/1.1" 200 -

容器应用程序进程查看

[root@master ~]# docker top fervent_nobelUID                 PID                 PPID                C                   STIME               TTY                 TIME                CMDroot                9622                9604                0                   18:45               ?                   00:00:00            python app.py

容器网络端口映射查看

[root@master ~]# docker port fervent_nobel5000/tcp -> 0.0.0.0:32768

容器启动

[root@master ~]# docker start fervent_nobelfervent_nobel

容器重启

[root@master ~]# docker restart fervent_nobelfervent_nobel

容器停止

[root@master ~]# docker stop fervent_nobelfervent_nobel

容器移除

# 正常移除(需要先停止容器)[root@master ~]# docker rm fervent_nobelError response from daemon: You cannot remove a running container 3a0953bcbd9a45367f14944746620b5ade508025f40afb048439e144ed088fd6. Stop the container before attempting removal or force remove[root@master ~]# docker stop fervent_nobelfervent_nobel[root@master ~]# docker rm fervent_nobelfervent_nobel# 强制移除 使用 -f (force)参数[root@master ~]# docker rm -f fervent_nobelfervent_nobel

镜像使用

查找镜像

第一次这么查找的时候,报错了。据说是docker镜像地址的原因,如果不行就换一个镜像再重启试一下。

[root@master ~]# docker search mysqlError response from daemon: Get https://index.docker.io/v1/search?q=mysql&n=25: net/http: TLS handshake timeout
[root@master ~]# cd /etc/docker/[root@master docker]# lltotal 12-rw-r--r--. 1 root root  61 Jul 18 20:12 daemon.json-rw-r--r--. 1 root root  67 Sep 19  2019 daemon.json.rpmsave-rw-------. 1 root root 244 Sep 17  2019 key.json# 修改为阿里云镜像[root@master docker]# vi daemon.json{  "registry-mirrors": ["https://r9xxm8z8.mirror.aliyuncs.com"]}systemctl daemon-reload[root@master docker]# systemctl daemon-reload  # 重载daemon文件[root@master docker]# service docker restartRedirecting to /bin/systemctl restart docker.service[root@master docker]# docker search mysqlNAME                              DESCRIPTION                                     STARS               OFFICIAL            AUTOMATEDmysql                             MySQL is a widely used, open-source relation…   9743                [OK]                mariadb                           MariaDB is a community-developed fork of MyS…   3554                [OK]                mysql/mysql-server                Optimized MySQL Server Docker images. Create…   713                                     [OK]centos/mysql-57-centos7           MySQL 5.7 SQL database server                   77                                      mysql/mysql-cluster               Experimental MySQL Cluster Docker images. Cr…   73                                      centurylink/mysql                 Image containing mysql. Optimized to be link…   61                                      [OK]bitnami/mysql                     Bitnami MySQL Docker Image                      44                                      [OK]deitch/mysql-backup               REPLACED! Please use http://hub.docker.com/r…   41                                      [OK]tutum/mysql                       Base docker image to run a MySQL database se…   35                                      schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic backup…   30                                      [OK]prom/mysqld-exporter                                                              29                                      [OK]databack/mysql-backup             Back up mysql databases to... anywhere!         27                                      linuxserver/mysql                 A Mysql container, brought to you by LinuxSe…   25                                      circleci/mysql                    MySQL is a widely used, open-source relation…   19                                      centos/mysql-56-centos7           MySQL 5.6 SQL database server                   19                                      mysql/mysql-router                MySQL Router provides transparent routing be…   16                                      arey/mysql-client                 Run a MySQL client from a docker container      14                                      [OK]fradelg/mysql-cron-backup         MySQL/MariaDB database backup using cron tas…   8                                       [OK]openshift/mysql-55-centos7        DEPRECATED: A Centos7 based MySQL v5.5 image…   6                                       genschsa/mysql-employees          MySQL Employee Sample Database                  5                                       [OK]devilbox/mysql                    Retagged MySQL, MariaDB and PerconaDB offici…   3                                       ansibleplaybookbundle/mysql-apb   An APB which deploys RHSCL MySQL                2                                       [OK]widdpim/mysql-client              Dockerized MySQL Client (5.7) including Curl…   1                                       [OK]jelastic/mysql                    An image of the MySQL database server mainta…   1                                       monasca/mysql-init                A minimal decoupled init container for mysql    0

列出镜像

[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBubuntu              15.10               9b9cb95443b5        3 years ago         137MB

拉取镜像

[root@master ~]# docker pull hello-worldUsing default tag: latestlatest: Pulling from library/hello-world0e03bdcc26d7: Pull complete Digest: sha256:49a1c8800c94df04e9658809b006fd8a686cab8028d33cfba2cc049724254202Status: Downloaded newer image for hello-world:latestdocker.io/library/hello-world:latest[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBubuntu              15.10               9b9cb95443b5        3 years ago         137MB

删除镜像

[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
faa63f80f414 10 months ago 129MBmongo latest cda2c466f867 10 months ago 361MBtomcat latest 365b0a528e2e 10 months ago 506MBpython 3.5 67f4589d3c88 10 months ago 908MBnginx latest ab56bba91343 10 months ago 126MBhttpd latest 19459a872194 10 months ago 154MBmysql 5.6 95e0fc47b096 10 months ago 257MBdebian jessie c9d6adb06e4d 10 months ago 129MBhello-world latest fce289e99eb9 18 months ago 1.84kBredis 3.2 87856cc39862 21 months ago 76MBubuntu 15.10 9b9cb95443b5 3 years ago 137MB[root@master ~]# docker rmi redis:3.2 # 一般使用 REPOSITORY:TAG来删除镜像Untagged: redis:3.2Untagged: redis@sha256:7b0a40301bc1567205e6461c5bf94c38e1e1ad0169709e49132cafc47f6b51f3Deleted: sha256:87856cc39862cec77541d68382e4867d7ccb29a85a17221446c857ddaebca916Deleted: sha256:6650bf9ad80dc21652fb0a98eb55be7a30a860fbb0b76b2a542ee0af4111b890Deleted: sha256:9a7166b18cebf0cff5d029c76f0104abb28b37a75e540d152a3165ea34bb77bbDeleted: sha256:cf1be06e96098c6a378519ceb223d87a04f2a556df061bde1003db5f43337912Deleted: sha256:7ae66985fd3a3a132fab51b4a43ed32fd14174179ad8c3041262670523a6104cDeleted: sha256:bf45690ef12cc54743675646a8e0bafe0394706b7f9ed1c9b11423bb5494665bDeleted: sha256:237472299760d6726d376385edd9e79c310fe91d794bc9870d038417d448c2d5[root@master ~]# docker rmi faa63f80f414Error response from daemon: conflict: unable to delete faa63f80f414 (must be forced) - image is being used by stopped container a76143c7b736[root@master ~]# docker rmi -f faa63f80f414Deleted: sha256:faa63f80f414bfd803c6cd50e8b843fa799a39f0720d90532d32448bad07c61bDeleted: sha256:bb1fcbd4ba9789e7c8648f36feb4ba70f6c2971f5b71d2f0c4aec3240346574a[root@master ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEmongo latest cda2c466f867 10 months ago 361MBtomcat latest 365b0a528e2e 10 months ago 506MBpython 3.5 67f4589d3c88 10 months ago 908MBnginx latest ab56bba91343 10 months ago 126MBhttpd latest 19459a872194 10 months ago 154MBmysql 5.6 95e0fc47b096 10 months ago 257MBdebian jessie c9d6adb06e4d 10 months ago 129MBhello-world latest fce289e99eb9 18 months ago 1.84kBubuntu 15.10 9b9cb95443b5 3 years ago 137MB

更新镜像

从已创建的容器中更新镜像并提交镜像(新建了个testing_dir目录作为变动标识)

[root@master ~]# docker run -t -i ubuntu:15.10 /bin/bashroot@527abc181a62:/# mkdir testing_dirroot@527abc181a62:/# exitexit[root@master ~]# docker commit -m="has update" -a="runoob" 527abc181a62 runoob/ubuntu:v2sha256:6bb5f254672d2af0169c926ebe917b7b9b62a628e8f83a6beca4b3653b2388aa[root@master ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZErunoob/ubuntu       v2                  6bb5f254672d        5 seconds ago       137MBtest/ubuntu         v1                  7e7c29ee095d        4 hours ago         119MBhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBubuntu              15.10               9b9cb95443b5        3 years ago         137MBtraining/webapp     latest              6fae60ef3446        5 years ago         349MB# 用新镜像创建容器,我们从下边可以看到,刚才镜像里新建的 testing_dir 目录已经写入到新的镜像里边了# 用这个新镜像创建的容器里边也包含了 testing_dir 目录[root@master ~]# docker run -t -i runoob/ubuntu:v2 /bin/bashroot@a5699921a996:/# lsbin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  testing_dir  tmp  usr  varroot@a5699921a996:/#

构建镜像

从零开始来创建一个新的镜像

[root@master ~]# mkdir docker[root@master ~]# cd docker/[root@master docker]# touch Dockerfile[root@master docker]# vi Dockerfile # FROM,指定使用哪个镜像源# RUN 指令告诉docker 在镜像内执行命令,安装了什么[root@master docker]# cat Dockerfile FROM    centos:6.7MAINTAINER      Fisher "2392863668@qq.com"RUN     /bin/echo 'root:123456' |chpasswdRUN     useradd runoobRUN     /bin/echo 'runoob:123456' |chpasswdRUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/localEXPOSE  22EXPOSE  80CMD     /usr/sbin/sshd -D# 开始构建# -t :指定要创建的目标镜像名# . :Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径[root@master docker]# docker build -t runoob/centos:6.7 .Sending build context to Docker daemon  2.048kBStep 1/9 : FROM    centos:6.76.7: Pulling from library/centoscbddbc0189a0: Pull complete Digest: sha256:4c952fc7d30ed134109c769387313ab864711d1bd8b4660017f9d27243622df1Status: Downloaded newer image for centos:6.7 ---> 9f1de3c6ad53Step 2/9 : MAINTAINER      Fisher "2392863668@qq.com" ---> Running in ed11839748bbRemoving intermediate container ed11839748bb ---> d6caeeac7a37Step 3/9 : RUN     /bin/echo 'root:123456' |chpasswd ---> Running in c133297b4c98Removing intermediate container c133297b4c98 ---> bad804ae1a20Step 4/9 : RUN     useradd runoob ---> Running in 1620fdacb511Removing intermediate container 1620fdacb511 ---> f80e707eb0a9Step 5/9 : RUN     /bin/echo 'runoob:123456' |chpasswd ---> Running in 8f7d3ed64e19Removing intermediate container 8f7d3ed64e19 ---> cd6aa534c3d9Step 6/9 : RUN     /bin/echo -e "LANG=\"en_US.UTF-8\"" >/etc/default/local ---> Running in d2e2d8ec2524Removing intermediate container d2e2d8ec2524 ---> 4786ccee3f0aStep 7/9 : EXPOSE  22 ---> Running in ca823a455293Removing intermediate container ca823a455293 ---> 27e7ded0cda7Step 8/9 : EXPOSE  80 ---> Running in 71bed30c3da9Removing intermediate container 71bed30c3da9 ---> 7b951ff6b73aStep 9/9 : CMD     /usr/sbin/sshd -D ---> Running in 0611ad3968a4Removing intermediate container 0611ad3968a4 ---> 70c33b3dee3cSuccessfully built 70c33b3dee3cSuccessfully tagged runoob/centos:6.7# 查看构建的镜像[root@master docker]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED              SIZErunoob/centos       6.7                 70c33b3dee3c        About a minute ago   191MBrunoob/ubuntu       v2                  6bb5f254672d        15 minutes ago       137MBtest/ubuntu         v1                  7e7c29ee095d        5 hours ago          119MBhello-world         latest              bf756fb1ae65        6 months ago         13.3kBmongo               latest              cda2c466f867        10 months ago        361MBtomcat              latest              365b0a528e2e        10 months ago        506MBpython              3.5                 67f4589d3c88        10 months ago        908MBnginx               latest              ab56bba91343        10 months ago        126MBhttpd               latest              19459a872194        10 months ago        154MBmysql               5.6                 95e0fc47b096        10 months ago        257MBdebian              jessie              c9d6adb06e4d        10 months ago        129MBcentos              6.7                 9f1de3c6ad53        16 months ago        191MBubuntu              15.10               9b9cb95443b5        3 years ago          137MBtraining/webapp     latest              6fae60ef3446        5 years ago          349MB

构建镜像创建容器

[root@master docker]# docker run -it runoob/centos:6.7 /bin/bash[root@2ed5c38912e5 /]# id rootuid=0(root) gid=0(root) groups=0(root)[root@2ed5c38912e5 /]# id runoobuid=500(runoob) gid=500(runoob) groups=500(runoob)

重新设置镜像标签

[root@master docker]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZErunoob/centos       6.7                 70c33b3dee3c        6 minutes ago       191MBrunoob/ubuntu       v2                  6bb5f254672d        20 minutes ago      137MBtest/ubuntu         v1                  7e7c29ee095d        5 hours ago         119MBhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBcentos              6.7                 9f1de3c6ad53        16 months ago       191MBubuntu              15.10               9b9cb95443b5        3 years ago         137MBtraining/webapp     latest              6fae60ef3446        5 years ago         349MB[root@master docker]# docker tag 70c33b3dee3c runoob/centos:dev[root@master docker]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZErunoob/centos       6.7                 70c33b3dee3c        8 minutes ago       191MBrunoob/centos       dev                 70c33b3dee3c        8 minutes ago       191MBrunoob/ubuntu       v2                  6bb5f254672d        22 minutes ago      137MBtest/ubuntu         v1                  7e7c29ee095d        5 hours ago         119MBhello-world         latest              bf756fb1ae65        6 months ago        13.3kBmongo               latest              cda2c466f867        10 months ago       361MBtomcat              latest              365b0a528e2e        10 months ago       506MBpython              3.5                 67f4589d3c88        10 months ago       908MBnginx               latest              ab56bba91343        10 months ago       126MBhttpd               latest              19459a872194        10 months ago       154MBmysql               5.6                 95e0fc47b096        10 months ago       257MBdebian              jessie              c9d6adb06e4d        10 months ago       129MBcentos              6.7                 9f1de3c6ad53        16 months ago       191MBubuntu              15.10               9b9cb95443b5        3 years ago         137MBtraining/webapp     latest              6fae60ef3446        5 years ago         349MB

容器连接

网络端口映射

之前有用过 -P 参数来随机映射端口,当然也可以使用 -p 参数来手动建立端口映射关系:

# [root@master ~]# docker run -d -P training/webapp python app.py[root@master ~]# docker run -d -p 5000:5000 training/webapp python app.py58dc741e3a08f347b56309bf549ba156e1efc8a565d8ef937abf0eb09d125adc[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                    NAMES58dc741e3a08        training/webapp     "python app.py"     About a minute ago   Up About a minute   0.0.0.0:5000->5000/tcp   frosty_buck

当然,也可以指定容器绑定的网络地址,不过因为 docker 是在虚拟机上运行的,这时候就不能像之前那样在本地电脑上使用地址:127.0.0.1:5001去测试了,因为Windows下默认把 IP 127.0.0.1映射到了本机(localhost)而不是虚拟机对应的地址,不过可以在虚拟机使用 curl 命令来进行验证:

[root@master ~]# docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py3cf9e1679d44b45e30526a10cbbcbfb90a4150ad6da754cc99a6bfac72bbeeec[root@master ~]# curl 127.0.0.1:5001Hello world![root@master ~]# [root@master ~]# docker port frosty_buck5000/tcp -> 0.0.0.0:5000[root@master ~]# docker port flamboyant_villani5000/tcp -> 127.0.0.1:5001

新建网络

[root@master ~]# docker network lsNETWORK ID          NAME                DRIVER              SCOPE6e7962edeb74        bridge              bridge              localb116d28afaa7        host                host                locala06c6cfba31c        none                null                local[root@master ~]# docker network create -d bridge test-net1daa356d55fc97c5f820879e0b919b8c90085bdf93bdeb3b748822dd5058852a[root@master ~]# docker network lsNETWORK ID          NAME                DRIVER              SCOPE6e7962edeb74        bridge              bridge              localb116d28afaa7        host                host                locala06c6cfba31c        none                null                local1daa356d55fc        test-net            bridge              local[root@master ~]# docker run -itd --name test1 --network test-net ubuntu:15.10 /bin/bashc495bbbf56804389147c742d31a7b78bb4e4c71f93fae88baa60206a8dbbefcd[root@master ~]# docker run -itd --name test2 --network test-net ubuntu:15.10 /bin/bash3f0b5650e2d33fcbf8d4732d3697d06953df8dbf1ef66849712859db82bec28a[root@master ~]# docker psCONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                      NAMES3f0b5650e2d3        ubuntu:15.10        "/bin/bash"         17 seconds ago      Up 16 seconds                                  test2c495bbbf5680        ubuntu:15.10        "/bin/bash"         30 seconds ago      Up 27 seconds                                  test13cf9e1679d44        training/webapp     "python app.py"     13 minutes ago      Up 13 minutes       127.0.0.1:5001->5000/tcp   flamboyant_villani58dc741e3a08        training/webapp     "python app.py"     16 minutes ago      Up 16 minutes       0.0.0.0:5000->5000/tcp     frosty_buck[root@master ~]# docker exec -it test1 /bin/bashroot@c495bbbf5680:/# apt-get updateGet:1 http://archive.ubuntu.com/ubuntu focal InRelease [265 kB]                                          0% [1 InRelease 1147 B/265 kB 0%] [Waiting for headers# 我这儿使用功能 apt-get update 由于网络原因一直卡住,所以先这样了。

DNS配置

[root@master ~]# vi /etc/docker/daemon.json{   "registry-mirrors": ["https://r9xxm8z8.mirror.aliyuncs.com"]}{  "dns" : [    "114.114.114.114",    "8.8.8.8"  ]}[root@master ~]# docker run -it --rm ubuntu  cat etc/resolv.conf# Generated by NetworkManagernameserver 192.168.128.2

 

转载地址:http://ucjqi.baihongyu.com/

你可能感兴趣的文章
AspectJ Cookbook
查看>>
IntelliJ IDEA in Action
查看>>
HTML Professional Projects
查看>>
Python Cookbook, Second Edition
查看>>
Java Extreme Programming Cookbook
查看>>
XSLT Cookbook
查看>>
Java Programming with Oracle JDBC
查看>>
XML, XSLT, Java, and JSP: A Case Study in Developing a Web Application
查看>>
Java Data Access: JDBC, JNDI, and JAXP
查看>>
Using Moodle
查看>>
Concepts, Techniques, and Models of Computer Programming
查看>>
Skills for Managing Rapidly Changing It Projects
查看>>
Designing a Data Warehouse : Supporting Customer Relationship Management
查看>>
The Tomes of Delphi: Algorithms and Data Structures
查看>>
Enterprise SOA: Service-Oriented Architecture Best Practices
查看>>
JavaTech, an Introduction to Scientific and Technical Computing with Java
查看>>
Your Successful Project Management Career
查看>>
Business Process Implementation for IT Professionals and Managers
查看>>
Enterprise Java for SAP
查看>>
Taming Java Threads
查看>>