首页 \ 问答 \ windows服务启动提示1053错误,求助

windows服务启动提示1053错误,求助

更新时间:2022-10-05 20:10

最满意答案

docker如果安装成功,会有一块虚拟网卡,ip地址默认是172.17.42.1

用docker search centos6命令搜索githup中的容器

使用docker pull weepee/centos6下载容器到本地

使用docker images查看本地所有的容器

使用run命令启动容器
/usr/bin/docker  run -d -v /root:/root -p 81:80 -p 2222:22 -p 10050:10050 -p 10051:10051  centos6.5_zabbix:v1.3
一定要记住centos6.5_zabbix:v1.3就是第四步查询到的名称和版本号
81:80 前面的宿主机的端口,后面是docker中容器所开的端口,两个端口之间是映射关系
docker ps 查看运行状态的容器

如果提交修改用docker commit 859549d3f157命令 859549d3f157就是使用docker ps查询到的CONTAINER ID

其他回答

在前几篇文章[1,2,3]里,lukas pustina简单地介绍了使用docker进行系统级虚拟化。在这篇文章里,我将讨论四种连接docker容器并与其进行交互的方法。例子中所有的代码都可以在github中找到,你可以亲自对它们进行测试。

nsenter

    从util-linux版本2.23开始,nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。很不幸,ubuntu 14.4仍然使用的是util-linux版本2.20。安装最新版本的util-linux(2.24)版,请按照以下步骤:
?
1
2
cd /tmp
curl https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz | tar -zxf-cd util-linux-2.24./configure --without-ncursesmake nsentercp nsenter /usr/local/bin

    为了连接到容器,你还需要找到容器的第一个进程的pid。
?
1
docker inspect --format "{{ .state.pid }}" 
           

 
            

    通过这个pid,你就可以连接到这个容器:
?
1
nsenter --target $pid --mount --uts --ipc --net --pid

nsinit

    从0.9版本开始,docker自身就具有一个管理容器的库,名字为 libcontainer。libcontainer中的nsinit工具允许用户直接访问linux名字空间和cgroup内核。在安装nsinit之前,你首先需要安装go运行时环境: 
?
1
2
3
4
apt-get install git golang-go
 mkdir -p $home/go-dev/binmkdir -p $home/go-dev/src
 echo "export gopath=\$home/go-dev" >> ~/.profileecho "path=\$path:\$gopath/bin" >> ~/.profile
 source ~/.profile

    接下来才安装nsinit:
?
1
2
3
mkdir -p $gopath/src/github.com/dotcloudcd $gopath/src/github.com/dotcloud
 git clone https://github.com/dotcloud/docker.gitcd $gopath/src/github.com/dotcloud/docker
 /usr/bin/go get -v github.com/dotcloud/docker/vendor/src/github.com/docker/libcontainer/nsinit

    nsinit读取的是位于/var/lib/docer/execdriver/native/
            
 
  
             容器目录下的配置数据。要运行nsinit,你需要切换到容器目录下。由于/var/lib/docker目录对于root用户是只读权限,因此你还需要root权限。通过docker的ps命令,你可以确定容器id。一旦你进入/var/lib/docker目录,你就可以连接容器了:
?
1
nsinit exec /bin/bash

lxc(-attach)

    直到docker 0.8.1版本为止,lxc一直是管理容器的基本工具,docker一直支持这个工具。但是从0.9.0版本开始,docker默认使用libcontainer管理容器,不再依赖lxc了。因此默认情况下,你不能使用lxc-attach了。
    如果你仍然希望使用lxc-attach,那么你需要使用-e lxc选项来重新启动docker服务进程。使用这个选项,docker的内部将再次使用lxc管理容器了。完成这个任务最简单的做法就是创建/etc/default/docker文件(如果这个文件仍然不存在),并添加以下内容:
docker_opts=" -e lxc"
    现在你可以重新启动docker服务了。要连接容器,你需要知道完整的容器id:
?
1
docker ps --no-trunc

    接下来,你就可以连接这个容器了。要完成下面工作,你还需要root权限:
?
1
lxc-attach -n 
             
  
   
               -- /bin/bash

sshd

    上面所有三种方法都要求具有主机系统的root权限。为了不采用root权限,通过ssh访问容器将是一个很好的选择。

    要做到这一点,你需要构建一个支持ssh服务的基础映像。此时,我们可能遇到这样的问题:我们是不是用docker cmd或者entrypoint运行一条命令就可以了?如果此时有sshd进程运行,那么我们就不要再运行其他进程了。接下来的工作是创建一个脚本或者使用像supervisord这样的进程管理工具来启动其它所有需要启动的进程。有关如何使用supervisord的 优秀的文档可以在docker的web站点上找到。一旦你启动了具有sshd进程的容器,你就可以像以往一样通过ssh客户端了连接这个容器了。

结论

    sshd方法可能是最简单的连接容器的方法,而且大多数用户习惯通过ssh连接虚拟机。另外,连接容器时你也不需要一定使用root权限。不过,对于是否一个容器是否应当管理不止一个进程仍然存在许多争议。这种方法最终使得每个容器了多了一个sshd进程,这从根本上来说不是进程虚拟化的所提倡的。

    另外三种方法都需要root权限。到0.8.1版本为止,docker都是使用lxc来管理容器的。正是由于这个原因,使用lxc-attach连接容器就非常容易。不过从版本0.9.0开始docker服务就必须使用 -e lxc选项启动才能在内部支持lxc管理容器。不过,由于设置了这个选项,docker将再次依赖lxc,而lxc可能随着发布或者安装的不同可能被剔除。

    nsenter和nsinit总的来说是相同的。这两个工具的主要区别是nsinit在本身的容器了建立了一个新的进程,而nsenter只是访问了名字空间。jerome petazzoni在docker博客文章里对这一点说的很透彻。
             
  
            
 
           

相关问答

更多
  • docker如果安装成功,会有一块虚拟网卡,ip地址默认是172.17.42.1 用docker search centos6命令搜索githup中的容器 使用docker pull weepee/centos6下载容器到本地 使用docker images查看本地所有的容器 使用run命令启动容器 /usr/bin/docker run -d -v /root:/root -p 81:80 -p 2222:22 -p 10050:10050 -p 10051:10051 centos6.5_zabbix: ...
  • Docker容器运行后,如何进入容器进行操作呢?起初我是用SSH。如果只启动一个容器,用SSH还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容器后,每个容器默认是没有配置SSH Server的,安装配置SSHD
  • Docker 进入 ubuntu 容器 我们可以使用 docker run命令进入 ubuntu 容器: $ sudo docker run
  • 对于Docker特定的解决方案,您可以使用Swarm和Compose。 创建包含3个节点的Docker Swarm集群,并将您的环境更改为该Swarm。 (以下假设每个主机正在侦听2375,这对于专用网络是可以的,但是您需要TLS设置并切换到2376以获得更高的安全性。) cat >cluster.txt <
  • 对于持久性数据,实际上,您必须将主机目录作为数据卷挂载或将数据存储在云存储上。 除非在销毁数据容器后无法回滚数据。 将主机目录安装为数据卷。 或者,您允许仅数据容器装入主机目录或创建新容器,并使用--volumes-from执行备份。 看看这个: https : //docs.docker.com/userguide/dockervolumes/#mount-a-host-directory-as-a-data-volume For persistent data, practically, you hav ...
  • 您可以使用Cake.Docker社区插件从Cake脚本构建和运行Docker镜像。 将#addin nuget:?package=Cake.Docker添加到构建脚本的顶部,然后您可以使用DockerBuild别名来构建容器。 您也可以选择使用DockerRun来运行容器。 您可以在网站上找到有关此插件的完整文档,包括DockerBuild (和DockerRun )。 例如,假设您的Dockerfile位于名为Dockerfile的文件夹中: #addin nuget:?package=Cake.Dock ...
  • docker CLI还使用API与守护进程进行通信。 查找CLI执行哪些请求的简单方法是以调试模式运行守护程序,该守护程序将在守护程序日志中记录API调用。 如果您不想在调试模式下运行常规守护程序,则可以使用docker-in-docker。 Docker Hub上的官方Docker镜像( https://hub.docker.com/_/docker/ )可用于此目的。 例如,查看Docker 1.13.1守护进程的请求; 首先,用docker 1.13.1启动一个容器; 以交互模式启动容器,并提供sh作 ...
  • 在docker中,不变性通常指的是图像层。 它们是不可变的,任何更改都会被推送到文件系统的容器特定的copy-on-write层。 该容器特定层将持续容器的生命周期。 因此,要让这些文件保持不变,您有两种选择: 重新创建容器而不是重新启动它 不要将更改写入容器文件系统,也不要将它们写入任何持久卷。 根据它的定义,你不能用重启策略做#1。 重新启动策略为您提供相同的容器文件系统,并重新启动应用程序。 但是如果你使用docker的swarm模式,它会在它们退出时重新创建容器,所以如果你可以迁移到swarm模式, ...
  • 你有没有试图重建你的单个postgres容器? docker build -t 或者用码头工人撰写: docker-compose up --build 重新创建图像,而不是使用旧的“已使用”的图像。 have you tried to rebuild your single postgres container? docker build -t or with docker-compose: docker-compo ...
  • 您需要挖掘其他图像的docker history输出,以查看链接的内容。 有一个图像可以自动执行大部分操作,您可以使用以下命令运行: docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock \ nate/dockviz images -t -l 关于上述命令的更多细节可以在这个github repo上找到。 You need to dig through the docker history output for other ...

相关文章

更多

最新问答

更多
  • 您如何使用git diff文件,并将其应用于同一存储库的副本的本地分支?(How do you take a git diff file, and apply it to a local branch that is a copy of the same repository?)
  • 将长浮点值剪切为2个小数点并复制到字符数组(Cut Long Float Value to 2 decimal points and copy to Character Array)
  • OctoberCMS侧边栏不呈现(OctoberCMS Sidebar not rendering)
  • 页面加载后对象是否有资格进行垃圾回收?(Are objects eligible for garbage collection after the page loads?)
  • codeigniter中的语言不能按预期工作(language in codeigniter doesn' t work as expected)
  • 在计算机拍照在哪里进入
  • 使用cin.get()从c ++中的输入流中丢弃不需要的字符(Using cin.get() to discard unwanted characters from the input stream in c++)
  • No for循环将在for循环中运行。(No for loop will run inside for loop. Testing for primes)
  • 单页应用程序:页面重新加载(Single Page Application: page reload)
  • 在循环中选择具有相似模式的列名称(Selecting Column Name With Similar Pattern in a Loop)
  • System.StackOverflow错误(System.StackOverflow error)
  • KnockoutJS未在嵌套模板上应用beforeRemove和afterAdd(KnockoutJS not applying beforeRemove and afterAdd on nested templates)
  • 散列包括方法和/或嵌套属性(Hash include methods and/or nested attributes)
  • android - 如何避免使用Samsung RFS文件系统延迟/冻结?(android - how to avoid lag/freezes with Samsung RFS filesystem?)
  • TensorFlow:基于索引列表创建新张量(TensorFlow: Create a new tensor based on list of indices)
  • 企业安全培训的各项内容
  • 错误:RPC失败;(error: RPC failed; curl transfer closed with outstanding read data remaining)
  • C#类名中允许哪些字符?(What characters are allowed in C# class name?)
  • NumPy:将int64值存储在np.array中并使用dtype float64并将其转换回整数是否安全?(NumPy: Is it safe to store an int64 value in an np.array with dtype float64 and later convert it back to integer?)
  • 注销后如何隐藏导航portlet?(How to hide navigation portlet after logout?)
  • 将多个行和可变行移动到列(moving multiple and variable rows to columns)
  • 提交表单时忽略基础href,而不使用Javascript(ignore base href when submitting form, without using Javascript)
  • 对setOnInfoWindowClickListener的意图(Intent on setOnInfoWindowClickListener)
  • Angular $资源不会改变方法(Angular $resource doesn't change method)
  • 在Angular 5中不是一个函数(is not a function in Angular 5)
  • 如何配置Composite C1以将.m和桌面作为同一站点提供服务(How to configure Composite C1 to serve .m and desktop as the same site)
  • 不适用:悬停在悬停时:在元素之前[复制](Don't apply :hover when hovering on :before element [duplicate])
  • 常见的python rpc和cli接口(Common python rpc and cli interface)
  • Mysql DB单个字段匹配多个其他字段(Mysql DB single field matching to multiple other fields)
  • 产品页面上的Magento Up出售对齐问题(Magento Up sell alignment issue on the products page)