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 服务器,或数据库服务器,或进程管理器,如 systemd
或 supervisor
) 启动分离容器时。
如果您正在尝试 运行 像 sshd
这样的服务,您不能简单地 运行 service ssh start
。这将——取决于你在容器中 运行 的分布——做两件事之一:
它将尝试联系 systemd
或 upstart
等进程管理器来启动服务。因为没有服务管理器运行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
祝大家好运!
我使用以下命令创建了容器:
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 服务器,或数据库服务器,或进程管理器,如 systemd
或 supervisor
) 启动分离容器时。
如果您正在尝试 运行 像 sshd
这样的服务,您不能简单地 运行 service ssh start
。这将——取决于你在容器中 运行 的分布——做两件事之一:
它将尝试联系
systemd
或upstart
等进程管理器来启动服务。因为没有服务管理器运行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
祝大家好运!