如何在程序中调用docker容器

发布网友

我来回答

1个回答

热心网友

  1.启动一个Docker容器

  [root@localhost ~]# docker run -i -t Ubuntu /bin/bash

  Unable to find image ‘ubuntu’ locally

  Pulling repository ubuntu

  04c5d3b7b065: Download complete

  511136ea3c5a: Download complete

  c7b7c19568: Download complete

  70c8faa62a44: Download complete

  d735006ad9c1: Download complete

  Status: Downloaded newer image for ubuntu:latest

  注:

  -i:打开容器中的STDIN

  -t:为容器分配一个伪tty终端

  从上面我们可以看出,首先Docker会检查本地是否存在ubuntu镜像,如果在本地没有找到该镜像的话,那么Docker就会去官方的
Docker Hub Registry查看Docker
Hub中是否有该镜像。Docker一旦找到该镜像,就会下载该镜像并将其保存到本地的宿主机中。

  然后,Docker在文件系统内部用这个镜像创建了一个新的容器。该容器拥有自己的网络、IP地址,以及一个用来可以和宿主机进行通信的桥接网络接口。最后,我们告诉Docker在新容器中要运行什么命令。

  当容器创建完毕之后,Docker就会执行容器中的/bin/bash命令。这时间我们就可以看到容器内的shell

  root@8c342c0c275c:/#

  注:8c342c0c275c代表容器的ID

  2.使用容器

  查看该容器的主机名

  root@8c342c0c275c:/# hostname

  8c342c0c275c

  可以看到,容器的主机名就是该容器的ID

  查看该主机的hosts文件

  root@8c342c0c275c:/# cat /etc/hosts

  172.17.0.2 8c342c0c275c

  ff00::0 ip6-mcastprefix

  ff02::1 ip6-allnodes

  ff02::2 ip6-allrouters

  127.0.0.1 localhost

  ::1 localhost ip6-localhost ip6-loopback

  fe00::0 ip6-localnet

  可以看到Docker为该容器的IP地址添加了一条主机配置项。

  查看该容器的IP地址

  root@8c342c0c275c:/# ip a

  1: lo: 《LOOPBACK,UP,LOWER_UP》 mtu 65536 qdisc noqueue state UNKNOWN group default

  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

  4: eth0: 《BROADCAST,UP,LOWER_UP》 mtu 1500 qdisc pfifo_fast state UP group default qlen 1000

  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/ scope link

  valid_lft forever preferred_lft forever

  查看容器中运行的进程

  root@8c342c0c275c:/# ps -aux

  USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

  root 1 0.0 0.1 18168 1976 ? Ss 09:38 0:00 /bin/bash

  root 19 0.0 0.0 15568 1144 ? R+ 09:55 0:00 ps -aux

  在容器中安装一个软件包

  root@8c342c0c275c:/# apt-get update && apt-get install vim

  Ign http://archive.ubuntu.com trusty InRelease

  Ign http://archive.ubuntu.com trusty-updates InRelease

  Ign http://archive.ubuntu.com trusty-security InRelease

  Hit http://archive.ubuntu.com trusty Release.gpg

  Get:1 http://archive.ubuntu.com trusty-updates Release.gpg [933 B]

  Get:2 http://archive.ubuntu.com trusty-security Release.gpg [933 B]

  Hit http://archive.ubuntu.com trusty Release

  Get:3 http://archive.ubuntu.com trusty-updates Release [62.0 kB]

  Get:4 http://archive.ubuntu.com trusty-security Release [62.0 kB]

  Get:5 http://archive.ubuntu.com trusty/main Sources [1335 kB]

  Get:6 http://archive.ubuntu.com trusty/restricted Sources [5335 B]

  Get:7 http://archive.ubuntu.com trusty/universe Sources [7926 kB]

  Get:8 http://archive.ubuntu.com trusty/main amd Packages [1743 kB]

  Get:9 http://archive.ubuntu.com trusty/restricted amd Packages [16.0 kB]

  Get:10 http://archive.ubuntu.com trusty/universe amd Packages [75 kB]

  Get:11 http://archive.ubuntu.com trusty-updates/main Sources [193 kB]

  Get:12 http://archive.ubuntu.com trusty-updates/restricted Sources [1874 B]

  Get:13 http://archive.ubuntu.com trusty-updates/universe Sources [119 kB]

  Get:14 http://archive.ubuntu.com trusty-updates/main amd Packages [493 kB]

  Get:15 http://archive.ubuntu.com trusty-updates/restricted amd Packages [14.8 kB]

  Get:16 http://archive.ubuntu.com trusty-updates/universe amd Packages [298 kB]

  Get:17 http://archive.ubuntu.com trusty-security/main Sources [70.1 kB]

  Get:18 http://archive.ubuntu.com trusty-security/restricted Sources [1874 B]

  Get:19 http://archive.ubuntu.com trusty-security/universe Sources [19.1 kB]

  Get:20 http://archive.ubuntu.com trusty-security/main amd Packages [229 kB]

  Get:21 http://archive.ubuntu.com trusty-security/restricted amd Packages [14.8 kB]

  Get:22 http://archive.ubuntu.com trusty-security/universe amd Packages [98.1 kB]

  Fetched 20.3 MB in 41s (490 kB/s)

  Reading package lists.。。 Done

  Reading package lists.。。 Done

  Building dependency tree

  Reading state information.。。 Done

  The following extra packages will be installed:

  libgpm2 libpython2.7 libpython2.7-minimal libpython2.7-stdlib vim-runtime

  Suggested packages:

  gpm ctags vim-doc vim-scripts

  The following NEW packages will be installed:

  libgpm2 libpython2.7 libpython2.7-minimal libpython2.7-stdlib vim

  vim-runtime

  0 upgraded, 6 newly installed, 0 to remove and 2 not upgraded.

  Need to get 9083 kB of archives.

  After this operation, 42.9 MB of additional disk space will be used.

  Do you want to continue? [Y/n] y

  Get:1 http://archive.ubuntu.com/ubuntu/ trusty/main libgpm2 amd 1.20.4-6.1 [16.5 kB]

  Get:2 http://archive.ubuntu.com/ubuntu/ trusty/main libpython2.7-minimal amd 2.7.6-8 [307 kB]

  Get:3 http://archive.ubuntu.com/ubuntu/ trusty/main libpython2.7-stdlib amd 2.7.6-8 [1872 kB]

  Get:4 http://archive.ubuntu.com/ubuntu/ trusty/main libpython2.7 amd 2.7.6-8 [1044 kB]

  Get:5 http://archive.ubuntu.com/ubuntu/ trusty/main vim-runtime all 2:7.4.052-1ubuntu3 [4888 kB]

  Get:6 http://archive.ubuntu.com/ubuntu/ trusty/main vim amd 2:7.4.052-1ubuntu3 [956 kB]

  Fetched 9083 kB in 51s (175 kB/s)

  Selecting previously unselected package libgpm2:amd.

  (Reading database 。。。 11527 files and directories currently installed.)

  Preparing to unpack 。。。/libgpm2_1.20.4-6.1_amd.deb 。。。

  Unpacking libgpm2:amd (1.20.4-6.1) 。。。

  Selecting previously unselected package libpython2.7-minimal:amd.

  Preparing to unpack 。。。/libpython2.7-minimal_2.7.6-8_amd.deb 。。。

  Unpacking libpython2.7-minimal:amd (2.7.6-8) 。。。

  Selecting previously unselected package libpython2.7-stdlib:amd.

  Preparing to unpack 。。。/libpython2.7-stdlib_2.7.6-8_amd.deb 。。。

  Unpacking libpython2.7-stdlib:amd (2.7.6-8) 。。。

  Selecting previously unselected package libpython2.7:amd.

  Preparing to unpack 。。。/libpython2.7_2.7.6-8_amd.deb 。。。

  Unpacking libpython2.7:amd (2.7.6-8) 。。。

  Selecting previously unselected package vim-runtime.

  Preparing to unpack 。。。/vim-runtime_2%3a7.4.052-1ubuntu3_all.deb 。。。

  Adding ‘diversion of /usr/share/vim/vim74/doc/help.txt to /usr/share/vim/vim74/doc/help.txt.vim-tiny by vim-runtime’

  Adding ‘diversion of /usr/share/vim/vim74/doc/tags to /usr/share/vim/vim74/doc/tags.vim-tiny by vim-runtime’

  Unpacking vim-runtime (2:7.4.052-1ubuntu3) 。。。

  Selecting previously unselected package vim.

  Preparing to unpack 。。。/vim_2%3a7.4.052-1ubuntu3_amd.deb 。。。

  Unpacking vim (2:7.4.052-1ubuntu3) 。。。

  Setting up libgpm2:amd (1.20.4-6.1) 。。。

  Setting up libpython2.7-minimal:amd (2.7.6-8) 。。。

  Setting up libpython2.7-stdlib:amd (2.7.6-8) 。。。

  Setting up libpython2.7:amd (2.7.6-8) 。。。

  Setting up vim-runtime (2:7.4.052-1ubuntu3) 。。。

  Processing /usr/share/vim/addons/doc

  Setting up vim (2:7.4.052-1ubuntu3) 。。。

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vim (vim) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vimdiff (vimdiff) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rvim (rvim) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/rview (rview) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/vi (vi) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/view (view) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/ex (ex) in auto mode

  update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode

  Processing triggers for libc-bin (2.19-0ubuntu6.4) 。。。

  退出容器

  root@8c342c0c275c:/# exit

  exit

  当我们输入exit后,容器就停止工作了。只有在指定的/bin/bash命令处于运行状态的时间,容器才会相应地处于运行状态。一旦退出容器,/bin/bash命令也就结束了,这时容器也就停止了。

  查看系统中容器的列表

  [root@localhost ~]# docker ps -a

  CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  8c342c0c275c ubuntu:latest “/bin/bash” 26 minutes ago Exited (0) 5 minutes ago sharp_bohr

  8c342c0c275c:代表容器的ID,

  ubuntu:latest :创建容器的镜像

  “/bin/bash”  :容器最后执行的命令

  26 minutes ago :创建时间

  Exited (0) 5 minutes :容器退出的状态

  sharp_bohr     :容器的名称

  Docker中容器的命名

  Docker在创建容器时会自动为容器生成一个随机的名称。那么如果我们想在创建一个容器时指定该容器的名称可以使用如下命令:

  [root@localhost ~]# docker run --name ovcer_the_container -i -t ubuntu /bin/bash

  root@1ce9f0478d:/#

  上面的命令将会创建一个名为ovcer_the_container的容器。对于一个合法的容器的名称来说只可以包括以下字符:小写字母a~z、大写字母A-Z、数字0~9、下划线、圆点、横线。

如何在容器中运行docker命令 如何在程序中调用docker容器 如何在 Windows 操作系统中运行 Docker 客户端 java程序怎么访问到docker 中的redis Docker容器运行 “图形界面” 教程来了! 如何在 Windows 操作系统中运行 Docker 客户端 Docker 容器使用 前端程序员如何学习 Docker ?(二) 如何启动一个已经创建的docker容器,并进入SHELL对其操作 如何在docker容器中运行一个jar而不会被退出 docker如何调试程序 docker exec 进入容器 docker web程序本地化 docker运行go程序 docker 容器 比docker更好的容器 除了docker还有什么容器 容器技术 docker 进入docker容器的内部
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com