Docker 容器未启动(docker 启动)

Docker container not starting (docker start)

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

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:~# 

您正在尝试 运行 bash,一个需要 tty 才能运行的交互式 shell。在 "detached" 模式下使用 -d 运行 确实没有意义,但是您可以通过在命令行中添加 -it 来做到这一点,这确保了容器有一个与之关联的有效 tty,并且 stdin 保持连接:

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

您更常见的是 运行 某种长期存在的非交互式进程(如 sshd,或 Web 服务器,或数据库服务器,或进程管理器,如 systemdsupervisor) 启动分离容器时。

如果您正在尝试 运行 像 sshd 这样的服务,您不能简单地 运行 service ssh start。这将——取决于你在容器中 运行 的分布——做两件事之一:

  • 它将尝试联系 systemdupstart 等进程管理器来启动服务。因为没有服务管理器运行ning,所以这个会失败

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

如果你想 运行 只是 在一个容器中 ssh,考虑一个像 this.

这样的例子

如果你想运行 sshd 和容器内的其他进程,你需要调查某种进程主管。

我需要在我的 Ubuntu 机器上的不同端口 /3301/ 上使用 Docker 和 MariaDb,因为我已经安装了 MySql 并且 运行ning 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 的回答 /using -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

祝大家好运!