189 8069 5689

linux退出容器命令,linux怎么退出容器

linux服务器端有一个mysql,如何部署到docker容器里

步骤1:为我们的容器创建第一个镜像

创新互联公司服务项目包括头屯河网站建设、头屯河网站制作、头屯河网页制作以及头屯河网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,头屯河网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到头屯河省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

# 以 centos 镜像作为基础镜像,我们启动自己的容器并在其中执行/bin/bash命令

# 注:-t -i 参数用于创建一个虚拟的命令行。

sudo docker run -t -i centos /bin/bash

现在我们已经成功的运行了自己的第一个容器,并且进入到容器的命令行界面中。在容器中,我们执行下面的命令:

yum -y update # 更新软件包

yum install which # 安装which命令

yum install git # 安装Git

安装完成后,按 Ctrl + d 来退出容器的命令行。

# 执行sudo docker ps -a,可以看到被我们终止的容器

CONTAINER ID IMAGE COMMAND CREATED……

da9031d3568f centos:6.4 /bin/bash 5 minutes ago…..

把我们所做的改变提交到一个新的容器:

# 这里我们创建一个自己的基础容器,容器中安装好了文章中所需的常用工具。读者的容器 id 可能与文章中的有所不同,以上一步 docker ps -a 的结果为准。

sudo docker commit da90 custom/base

容器成功提交后,执行 sudo docker images ,我们会看到刚才提交的容器(如下面的结果所示)。我们就以这个容器为基础容器,再来创建一个新的容器。

REPOSITORY TAG IMAGE ID CREATED

custom/base latest 05b6cecd370b 2 minutes ago

centos 6.4 539c0211cd76 10 months ago

centos latest 539c0211cd76 10 months ago…

步骤2:创建新的容器,并安装 apache

# 以 custom/base 容器为基础,运行一个新的容器。

sudo docker run -t -i custom/base /bin/bash

# 安装 httpd

yum install httpd

步骤3:再次提交新的容器

按 Ctrl + d 来退出容器的命令行,然后执行命令:

# 这个命令会把步骤2中我们安装 httpd 带来的改变提交到新的名为 custom/httpd 的容器镜像中。你的容器 id 可能会和文章中有所不同,以 sudo docker ps -a 命令的结果为准。

sudo docker commit aa6e2fc0b94c custom/httpd

你应该已经发现了,我们创建了一个带有 http 服务器并可以复用的容器镜像。你可以根据这种思想,为自己所需的每个组件都创建一个容器,然后把这些容器复用于开发环境或者生产环境。

步骤7:运行 http 服务器

# -v will Mount a volume from VM to the container which was also shared from host to Vagrant VM.

# -v 参数把主机共享给虚拟机的一个卷挂载到容器中

# -p forward VM port 80 to container port 80; VM port 80 is mapped to host port 8080 in Vagrantfile

# -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080-虚拟机80-容器80

sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash

# 启动 Apache

apachectl -k start

如何用Docker 管理 Linux Container 容器与网络设置

当前Ubuntu 系统下的 Docker 的安装包只提供64位。如果你想运行32位的 Docker,你需要。

安装 Docker

通过 apt-get 安装 Docker 简直是小菜一碟。

$ sudo apt-get install docker.io

如果你不是 root 组的用户,你可以把自己加入到 docker 用户组。下面的命令可以让没有 root 权限的用户使用 Docker:

$ sudo usermod -a -G docker $USER

重新登录,以便让你的用户组权限生效。

下一步是编辑 Docker 配置文件,确定 Docker 可执行文件的路径:

$ sudo vi /etc/default/docker.io

DOCKER= /usr/bin/docker.io

重启 Docker 服务:

$ sudo service docker.io restart

管理 Docker Container 容器

如果你想在新的 Docker 容器下创建一个新的 Ubuntu 操作系统,你首先需要 pull 一个 的 Docker 镜像。下面的命令可以通过网络下载 Docker 镜像:

$ docker pull ubuntu

你可以使用下面的命令启动 Docker 里面的 Ubuntu 系统。最后的参数 /bin/bash 表示一旦容器启动,首先会执行简单的 bash。

$ docker run -i -t ubuntu /bin/bash

上面的命令会立即启动 Ubuntu container 容器(这是一个完美的容器!),然后它会提供一个 shell 提示符运行环境给你。现在开始你可以通过这个沙箱环境访问一个完整的 Ubuntu 系统了。

输入 exit 命令退出 Docker 容器。

你也可以用下面的命令进入不同的系统。比如 Fedora:

$ docker.io run -i -t fedora /bin/bash

如果系统中还不存在 Fedora Docker 镜像,这个命令会自动下载它,然后启动这个 Fedora 的 Docker 容器。

如果你想要开启指定版本的系统,比如 Ubuntu 13.04,你可以使用下面的命令:

$ docker.io run -i -t ubuntu:13.04 /bin/bash

Container 容器网络设置

Docker 使用 Linux 桥接技术与其他容器通信,以及连通外网。安装完 Docker 后你应该可以看到 docker0 这个网桥,这是 Docker 默认创建的。你创建的每个容器都会通过这个网桥连接到网络。

自定义 Linux 网桥

如果你想自定义网桥,你可以执行以下步骤。你可以在这个网桥后面分配一个子网,并为这个子网分配地址。下面的命令会为 Docker 子网分配 10.0.0.0/24 地址段:

$ sudo apt-get install bridge-utils

$ sudo brctl addbr br0

$ sudo ifconfig br0 10.0.0.1 netmask 255.255.255.0

然后在 /etc/default/docker.io 文件的 DOCKER_OPTS 变量里添加 -b=br0 选项,并重启 Docker 服务:

$ sudo service docker.io restart

到目前为止,任何创建的容器都会连上 br0 网桥,它们的 IP 地址会从 10.0.0.0/24 中自动分配(译注:在10.0.0.2到10.0.0.254之间随机分配)。

其他自定义设置

你可以通过 /etc/default/docker.io 文件的 DOCKER_OPTS 变量设置其他一些属性:

-dns 8.8.8.8 -dns 8.8.4.4 : 为容器指定 DNS 服务器。

-icc=false : 将容器与其他容器隔离出来

疑难解答

1、当你运行 docker.io 命令时,你可能会遇到以下问题:

dial unix /var/run/docker.sock: no such file or directory

这个错误可能是由于 Docker 后台进程没有启动。检查下 Docker 后台进程的状态,确认它已经处于启动状态:

$ sudo service docker.io status$ sudo service docker.io start

php如何通过linux命令,在docker中执行一个文件并且接收docker容器中执行之后,控制台的返回的结果?

Docker中我们一般会有两种执行命令的方式,一种是直接进入容器的命令行,在终端执行并查看结果,一种是在后台执行,并不会在终端查看结果。

1、进入容器命令行

su root

docker run -i -t ubuntu:16.04/bin/bash#或者执行下面这句docker run -it ubuntu:16.04/bin/bash

-i和-t的作用是帮助你进入交互模式,如果不加这部分,你将无法进入容器内部,更别说使用命令行了。/bin/bash的意思就是使用容器的命令行来输入命令。执行结果如下:

root@7d150a0fb029:/#

root后面跟的就是容器id,表明你已经进入容器,可以输入命令了,你可以输入一些常用命令试试:

root@7d150a0fb029:/# docker run -i -t ubuntu:16.04 /bin/bash

结果输出了镜像的内核版本信息:

Linux version 4.13.0-36-generic (buildd@lgw01-amd64-033)(gcc version 5.4.020160609(Ubuntu5.4.0-6ubuntu1~16.04.9))#40~16.04.1-Ubuntu SMP Fri Feb 16 23:25:58 UTC 2018

通过exit可退出容器。

2、后台执行命令

输入下面的代码,-d表示的就是后台运行,这点可以直接通过docker run –help查看该命令的功能。下面这句话的意思就是在镜像的程序中添加引号内的代码,并在后台运行。

docker run -d ubuntu:16.04 /bin/sh -c "while true; do echo hello world; sleep 1;done"

输出结果不会显示运行的结果,而是给出新建的容器id,这里说明一下,每次输入docker run命令都会新建一个容器,产生一个新的id。

输出结果如下:

c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99

查看一下正在运行的容器:

root@cdl-XPS15R:/home/cdl# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

c7188be9bd7b ubuntu:16.04"/bin/sh -c 'while t…"13 seconds ago Up11 seconds keen_vaughan1b6ba17f7df7 ubuntu:16.04"/bin/bash"2 minutes ago Exited(0)2 minutes ago cocky_noether7d150a0fb029 ubuntu:16.04"/bin/bash"4 minutes ago Exited(0)2 minutes ago hopeful_banach

这里会发现,第一个容器的id和后台运行的容器id前几位一模一样,但是长度要长很多,其实是一样的,只不过通过ps命令打印输出时为了方便显示只显示了前几位。

如果想要进入后台运行的容器的命令行而不创建新的容器,只需要输入以下命令:

#Exec是进入已经存在的容器,run是创建新容器docker Exec-it c7188be9bd7b /bin/bash

输入哪个更长的id也是一样的效果:

docker Exec -it c7188be9bd7b5c0aa91c5eeb72013996c89bfdc2181d1a5ff7f880af6f8aff99 /bin/bash

输出结果都是:

root@c7188be9bd7b:/#


当前文章:linux退出容器命令,linux怎么退出容器
文章分享:http://cdxtjz.com/article/hojpse.html

其他资讯