Docker容器未启动(docker start)

时间:2015-04-30 01:46:02

标签: docker

我使用以下命令创建了容器:

docker run -d -p 52022:22 basickarl/docker-git-test

以下是命令:

root@basickarl:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
root@basickarl:~# docker ps -a
CONTAINER ID        IMAGE                              COMMAND             CREATED             STATUS                           PORTS               NAMES
e4ac54468455        basickarl/docker-git-test:latest   "/bin/bash"         7 minutes ago       Exited (0) 26 seconds ago                            adoring_lumiere     
22d7c5d83871        basickarl/docker-git-test:latest   "/bin/bash"         2 hours ago         Exited (127) About an hour ago                       thirsty_wright      
root@basickarl:~# docker attach --sig-proxy=false e4
FATA[0000] You cannot attach to a stopped container, start it first 
root@basickarl:~# docker start e4
e4
root@basickarl:~# docker attach --sig-proxy=false e4
FATA[0000] You cannot attach to a stopped container, start it first 
root@basickarl:~# 

没什么好说的,我期待容器启动并保持优势。这是日志:

root@basickarl:~# docker logs e4
root@basickarl:~# 

2 个答案:

答案 0 :(得分:52)

您正在尝试运行bash,这是一个需要tty才能运行的交互式shell。在"分离的"中运行它并没有多大意义。使用-d的模式,但您可以通过向命令行添加-it来执行此操作,这可确保容器具有与之关联的有效tty并且stdin保持连接:

docker run -it -d -p 52022:22 basickarl/docker-git-test

您通常会运行某种长期非交互式流程(如sshd,Web服务器,数据库服务器或流程管理器,如systemd或{{1启动分离的容器时。

如果您尝试运行supervisor之类的服务,则无法简单地运行sshd。这将取决于您在容器内运行的分布 - 执行以下两项操作之一:

  • 它会尝试联系service ssh startsystemd等流程管理器来启动该服务。由于没有服务管理器在运行,因此会失败。

  • 它实际上会启动upstart,但会在后台启动。这意味着(a)sshd命令退出,这意味着(b)Docker认为您的容器已经失败,因此它会清除所有内容。

如果您想在容器中运行 ssh,请考虑像this这样的示例。

如果要在容器内运行service sshd start 和其他进程,则需要调查某种流程主管。

答案 1 :(得分:1)

我需要的是在我的Ubuntu机器上的不同端口/ 3301 /上使用Docker和MariaDb,因为我已经安装了MySql并在3306上运行。

要在半天搜索后执行此操作,请使用:

docker run -it -d -p 3301:3306 -v ~/mdbdata/mariaDb:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mariaDb mariadb

这将使用最新的MariaDb拉取图像,创建名为mariaDb的容器,并在端口3301上运行mysql。其所有数据都位于/ mdbdata / mariaDb的主目录中。

之后登录mysql可以使用:

mysql -u root -proot -h 127.0.0.1 -P3301

使用的来源是:

Iarks在本文/使用-it -d中的答案是关键:) /

how-to-install-and-use-docker-on-ubuntu-16-04

installing-and-using-mariadb-via-docker

mariadb-and-docker-use-cases-part-1

祝你好运!