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

Linux系统Docker命令怎么用

下面是安装 Docker 客户端并在上面运行容器的简单步骤。

1. 下载 Boot2Docker

在我们开始安装之前,我们需要 Boot2Docker 的可执行文件。可以从 它的 Github 下载最新版本的 Boot2Docker。在这篇指南中,我们从网站中下载版本 v1.6.1。我们从那网页中用我们喜欢的浏览器或者下载管理器下载了名为 docker-install.exe 的文件。

2. 安装 Boot2Docker

现在我们运行安装文件,它会安装 Window Docker 客户端、用于 Windows 的 Git(MSYS-git)、VirtualBox、Boot2Docker Linux ISO 以及 Boot2Docker 管理工具,这些对于开箱即用地运行全功能的 Docker 引擎都至关重要。

3. 运行 Boot2Docker

安装完成必要的组件之后,我们从桌面上的“Boot2Docker Start”快捷方式启动 Boot2Docker。它会要求你输入以后用于验证的 SSH 密钥。然后会启动一个配置好的用于管理在虚拟机中运行的 Docker 的 unix shell。

为了检查是否正确配置,运行下面的 docker version 命令。

docker version

4. 运行 Docker

由于 Boot2Docker Start 自动启动了一个已经正确设置好环境变量的 shell,我们可以马上开始使用 Docker。请注意,如果我们要将 Boot2Docker 作为一个远程 Docker 守护进程,那么不要在 docker 命令之前加 sudo。

现在,让我们来试试 hello-world 例子镜像,它会下载 hello-world 镜像,运行并输出 "Hello from Docker" 信息。

$ docker run hello-world

5. 使用命令提示符(CMD) 运行 Docker

现在,如果你想开始用命令提示符使用 Docker,你可以打开命令提示符(CMD.exe)。由于 Boot2Docker 要求 ssh.exe 在 PATH 中,我们需要在命令提示符中输入以下命令使得 %PATH% 环境变量中包括 Git 安装目录下的 bin 文件夹。

set PATH=%PATH%;"c:\Program Files (x86)\Git\bin"

运行上面的命令之后,我们可以在命令提示符中运行 boot2docker start 启动 Boot2Docker 虚拟机。

boot2docker start

注意: 如果你看到 machine does no exist 的错误信息,就运行 boot2docker init 命令。

然后复制上图中控制台标出命令到 cmd.exe 中为控制台窗口设置环境变量,然后我们就可以像平常一样运行 docker 容器了。

6. 使用 PowerShell 运行 Docker

为了能在 PowerShell 中运行 Docker,我们需要启动一个 PowerShell 窗口并添加 ssh.exe 到 PATH 变量。

$Env:Path="${Env:Path};c:\Program Files (x86)\Git\bin"

运行完上面的命令,我们还需要运行

boot2docker start

这会打印用于设置环境变量连接到虚拟机内部运行的 Docker 的 PowerShell 命令。我们只需要在 PowerShell 中运行这些命令就可以和平常一样运行 docker 容器。

7. 用 PUTTY 登录

Boot2Docker 会在%USERPROFILE%.ssh 目录生成和使用用于登录的公共和私有密钥,我们也需要使用这个文件夹中的私有密钥。私有密钥需要转换为 PuTTY 的格式。我们可以通过 puttygen.exe 实现。

我们需要打开 puttygen.exe 并从 %USERPROFILE%.ssh\id_boot2docker 中导入("File"-"Load" 菜单)私钥,然后点击 "Save Private Key"。然后用保存的文件通过 PuTTY 用 docker@127.0.0.1:2022 登录。

8. Boot2Docker 选项

Boot2Docker 管理工具提供了一些命令,如下所示。

如何进入 Docker 容器

如何进入Docker容器

概述

在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。

进入Docker容器比较常见的几种做法如下:

使用docker attach

使用SSH

使用nsenter

使用exec

下面我们来逐一讲一下每种方式。

一、使用docker attach进入Docker容器

Docker提供了attach命令来进入Docker容器。

接下来我们创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。

[plain] view plain copy

$ sudo docker run -itd ubuntu:14.04 /bin/bash

然后我们使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器

[plain] view plain copy

$ sudo docker attach 44fc0f0582d9

可以看到我们已经进入到该容器中了。

但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。下来我们来演示一下。打开两个窗口,都使用attach命令进入同一个容器里面。如下所示:

接下来我们只在第一个窗口进行操作,可以看到第一个窗口的操作同步到第二个窗口显示了,如下:

因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。

二、使用SSH进入Docker容器

在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容器内。关于为什么不建议使用,请参考如下几篇文章:

Why you don't need to run SSHd in your Docker containers

上面这篇文章是英文的,如果英语不好的话可以参考如下译文

为什么不需要在 Docker 容器中运行 sshd

三、使用nsenter进入Docker容器

在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:

在了解了什么是nsenter之后,我们需要把nsenter安装到主机中(注意是主机而非容器或镜像),具体的安装命令如下:

[plain] view plain copy

$ wget https:/。。。r.gz

$ tar -xzvf util-linux-2.24.tar.gz

$ cd util-linux-2.24/

$ ./configure --without-ncurses

$ make nsenter

$ sudo cp nsenter /usr/local/bin

安装好nsenter之后可以查看一下该命令的使用。

nsenter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。

docker inspect命令使用如下:

[plain] view plain copy

$ sudo docker inspect --help

inspect命令可以分层级显示一个镜像或容器的信息。比如我们当前有一个正在运行的容器

可以使用docker inspect来查看该容器的详细信息。

[plain] view plain copy

$ sudo docker inspect 44fc0f0582d9

由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式

[plain] view plain copy

$ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9

在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了。

[plain] view plain copy

$ sudo nsenter --target 3326 --mount --uts --ipc --net --pid

其中的3326即刚才拿到的进程的PID

当然,如果你认为每次都输入那么多参数太麻烦的话,网上也有许多做好的脚本供大家使用。

地址如下:

四、使用docker exec进入Docker容器

除了上面几种做法之外,docker在1.3.X版本之后还提供了一个新的命令exec用于进入容器,这种方式相对更简单一些,下面我们来看一下该命令的使用:

[plain] view plain copy

$ sudo docker exec --help

接下来我们使用该命令进入一个已经在运行的容器

[plain] view plain copy

$ sudo docker ps

$ sudo docker exec -it 775c7c9ee1e1 /bin/bash

网上还有一种做法是使用nsinit,没有亲身实践过所以不在此罗列了,有兴趣的话可以尝试一下。

如何用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


网页题目:Linux进容器命令,进容器的命令
分享网址:http://myzitong.com/article/dsigcpp.html