docker container - aleksei-khitev/knowledge_base GitHub Wiki
Запуск контейнера jboss/wildfly
к примеру (его локально нет).
Если образа нет (как сейчас), docker загрузит последнюю версию
~$ sudo docker container run jboss/wildfly
[sudo] пароль для aleksei_khitev:
Unable to find image 'jboss/wildfly:latest' locally
latest: Pulling from jboss/wildfly
75f829a71a1c: Pull complete
7b11f246b3d3: Pull complete
b765648c2a58: Pull complete
506aff4a9c5a: Pull complete
7b9c6d08c8d3: Pull complete
Digest: sha256:1f39dbbe874367e008c6d70fa687f1afec00a0304a53a8cf7d832b77221f6922
Status: Downloaded newer image for jboss/wildfly:latest
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss/wildfly
JAVA: /usr/lib/jvm/java/bin/java
...
11:42:10,052 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) started in 3117ms - Started 319 of 558 services (344 services are lazy, passive or on-demand)
11:42:10,053 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
11:42:10,053 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
Курс Docker for Java Developers
Для запуска контейнера в интерактивном режиме, нужно добавить аттрибут -it
Курс Docker for Java Developers
~$ sudo docker container run -d jboss/wildfly
3cea55172ee896659df19c20c5aa7037f91deff82109f84138bf48ee0a45588a
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cea55172ee8 jboss/wildfly "/opt/jboss/wildfly/…" 10 seconds ago Up 9 seconds 8080/tcp great_tu
Курс Docker for Java Developers
~$ sudo docker container list
[sudo] пароль для aleksei_khitev:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ebe2f919f1b3 jboss/wildfly "/opt/jboss/wildfly/…" 20 seconds ago Up 20 seconds 8080/tcp agitated_poincare
$ sudo docker container list -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ebe2f919f1b3 jboss/wildfly "/opt/jboss/wildfly/…" 8 minutes ago Exited (0) 7 minutes ago agitated_poincare
f015ee8c9e35 jboss/wildfly "/opt/jboss/wildfly/…" 9 minutes ago Exited (0) 8 minutes ago zen_lamport
1b84c3d0beb8 jboss/wildfly "/opt/jboss/wildfly/…" 14 minutes ago Exited (0) 10 minutes ago hopeful_sinoussi
79fd095a4a99 27ed921be277 "/bin/sh -c 'cd /u01…" 11 months ago Exited (2) 11 months ago focused_kalam
e0aec28b03cf 5c12d483d60e "/bin/sh -c 'cd /u01…" 11 months ago Exited (2) 11 months ago vigilant_diffie
22ad500c5140 760dce04e891 "/bin/sh -c 'mkdir u…" 11 months ago Exited (1) 11 months ago condescending_antonelli
fbdc617d3b56 7f041ad9ac51 "/bin/sh -c 'mkdir -…" 11 months ago Exited (1) 11 months ago xenodochial_bose
19cd6557c723 hello-world "/hello" 12 months ago Exited (0) 12 months ago pedantic_khayyam
Курс Docker for Java Developers
Для остановки можно использовать как id контейнера, так и имя
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cea55172ee8 jboss/wildfly "/opt/jboss/wildfly/…" 10 seconds ago Up 9 seconds 8080/tcp great_tu
~$ sudo docker container stop 3cea55172ee8
3cea55172ee8
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Курс Docker for Java Developers
~$ sudo docker container rm great_tu
great_tu
Курс Docker for Java Developers
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2acbcdf27bab jboss/wildfly "/opt/jboss/wildfly/…" 4 seconds ago Up 3 seconds 8080/tcp test_app_server
~$ sudo docker container rm -f test_app_server
test_app_server
aleksei_khitev@aleksei-PC:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Курс Docker for Java Developers
~$ sudo docker container run -d --name test_app_server jboss/wildfly
2acbcdf27bab341ed3025028261d3e367172fc18fb7fee5b8184154dc8de43f8
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2acbcdf27bab jboss/wildfly "/opt/jboss/wildfly/…" 4 seconds ago Up 3 seconds 8080/tcp test_app_server
Курс Docker for Java Developers
Как я понял, при указании команды bash, команда запуска не сработает, а вместо этого будет выполнена команда bash (уточнить)
Запуск консоли не сработает с режимом detached
~$ sudo docker container run -it --name test_app_server jboss/wildfly bash
[jboss@c9047b9f01c3 ~]$ ps -aux | grep java
jboss 21 0.0 0.0 9108 848 pts/0 S+ 12:06 0:00 grep --color=auto java
[jboss@c9047b9f01c3 ~]$ exit
exit
aleksei_khitev@aleksei-PC:~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
При этом, выход из консоли контейнера останавливает контейнер Курс Docker for Java Developers
Аттрибут -P
говорит, чтобы докер назначил какие то порты из пула и прокинул его к контейнеру, ко всем expose-ным портам
~$ sudo docker container run -d --name test_app_server -P jboss/wildfly
bdf595726f7980ddb019272052fd0c38bdace6cb4ea8a926dff16ece18d32c54
~$ sudo docker container list
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bdf595726f79 jboss/wildfly "/opt/jboss/wildfly/…" 9 seconds ago Up 8 seconds 0.0.0.0:49154->8080/tcp test_app_server
~$ curl -vv http://localhost:49154/
* Trying 127.0.0.1:49154...
* Connected to localhost (127.0.0.1) port 49154 (#0)
> GET / HTTP/1.1
...
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
...
<!DOCTYPE html>
<html>
<head>
...
</head>
<body>
<div class="wrapper">
<div class="content">
<div class="logo">
<img src="wildfly_logo.png" alt="WildFly" border="0" />
</div>
В docker container list
в разделе PORTS
можно увидеть порт, по которому приложение в контейнере доступно на реальной машине
Курс Docker for Java Developers
После аттрибута -p
сначала идет порт реальной машины, а дальше порт контейнера
~$ sudo docker container run -d --name test_app_server -p 8080:8080 jboss/wildfly
cfd7adba4bfa9bd2c73f067491f88d0c054b607b2733e901b94b7d898f5f12a9
Курс Docker for Java Developers
~$ sudo docker container logs test_app_server
=========================================================================
JBoss Bootstrap Environment
JBOSS_HOME: /opt/jboss/wildfly
JAVA: /usr/lib/jvm/java/bin/java
...
11:19:47,202 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
11:19:47,204 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0025: WildFly Full 24.0.0.Final (WildFly Core 16.0.0.Final) started in 3392ms - Started 319 of 558 services (344 services are lazy, passive or on-demand)
11:19:47,205 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
11:19:47,206 INFO [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990
sudo docker container logs test_app_server -f
Курс Docker for Java Developers
chapter2$ ll
итого 28
drwxrwxr-x 3 aleksei_khitev aleksei_khitev 4096 апр 9 2017 ./
drwxrwxr-x 8 aleksei_khitev aleksei_khitev 4096 апр 9 2017 ../
drwxrwxr-x 3 aleksei_khitev aleksei_khitev 4096 апр 9 2017 myapp/
-rw-rw-r-- 1 aleksei_khitev aleksei_khitev 6490 апр 9 2017 readme.adoc
-rw-rw-r-- 1 aleksei_khitev aleksei_khitev 6599 апр 9 2017 webapp.war
chapter2$ sudo docker container run -d --name test_app_server -p 8080:8080 -v /home/aleksei_khitev/Загрузки/docker-for-java-master/chapter2/webapp.war:/opt/jboss/wildfly/standalone/deployments/webapp.war jboss/wildfly
d5e48c9c426303c1b286ce1a5cbaba76fbcea405b91453346aa9441c3559b044
chapter2$ sudo docker container logs test_app_server
=========================================================================
JBoss Bootstrap Environment
...
11:46:34,155 INFO [org.wildfly.extension.undertow] (ServerService Thread Pool -- 80) WFLYUT0021: Registered web context: '/webapp' for server 'default-server'
11:46:34,215 INFO [org.jboss.as.server] (ServerService Thread Pool -- 45) WFLYSRV0010: Deployed "webapp.war" (runtime-name : "webapp.war")
11:46:34,257 INFO [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
...
chapter2$ curl http://localhost:8080/webapp/resources/persons
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><collection><person><name>Penny</name></person><person><name>Leonard</name></person><person><name>Sheldon</name></person><person><name>Amy</name></person><person><name>Howard</name></person><person><name>Bernadette</name></person><person><name>Raj</name></person><person><name>Priya</name></person></collection>
У меня не сработал с ./webapp.war
или webapp.war
. Пришлось задать полный путь
Курс Docker for Java Developers