In our last article I shared the steps to install docker and configure storage to use a thin pool LVM for our docker. Now let's talk about how to run different Docker container.
Before I show you some command line examples of managing docker containers, let me give you a brief overview on the important terminologies
- Docker daemon: The daemon managing your Docker containers and images. We call it shortly Docker.
- Docker engine: This is the Docker infrastructure and workflow process
- Docker host or Docker node: This is the machine that is running Docker engine.
- Docker image: This is the contents or the package that we can run as a container. It provides the base operating system, and the application, and it contains only read only layers, and no read write layers.
- Container: An instantiated version of an image. It is the instance that we run on top of the image, and that contains all the read only layers, plus the read write layer that is added on top.
So an image is instantiated, and is called a container when it's running on Docker. Images are just immutable contents, and containers are instantiated, get a mutable layer added on the top, and it can have states like stopped, and start, and running, and so on.
Let me show you some examples
Check status of docker
Before we start with the configuration it is important to make sure our docker service is running
[root@node1 ~]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2018-12-20 20:20:49 IST; 16h ago
Docs: https://docs.docker.com
Main PID: 1153 (dockerd)
Tasks: 32
Memory: 147.3M
CGroup: /system.slice/docker.service
├─1153 /usr/bin/dockerd -H unix://
├─1289 containerd --config /var/run/docker/containerd/containerd.toml --log-level info
└─4299 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc71...
Dec 21 12:29:12 node1.example.com dockerd[1153]: time="2018-12-21T12:29:12.179448931+05:30" level=info msg="shim reaped" id=9c79938cb73755e96de571bcd3a513a6262e1005f5e2679...25b48357aa2
Dec 21 12:29:12 node1.example.com dockerd[1153]: time="2018-12-21T12:29:12.189968766+05:30" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/task...TaskDelete"
Dec 21 12:29:22 node1.example.com dockerd[1153]: time="2018-12-21T12:29:22.762710751+05:30" level=info msg="shim containerd-shim started" address="/containerd-shim/moby/e2...se pid=3843
Dec 21 12:29:23 node1.example.com dockerd[1153]: time="2018-12-21T12:29:23.180260570+05:30" level=info msg="shim reaped" id=e28f5a6fd1cbf8c04cefd94fdf8cdf8cdc40dd7723f83e8...4ee43925900
Dec 21 12:29:23 node1.example.com dockerd[1153]: time="2018-12-21T12:29:23.190553007+05:30" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/task...TaskDelete"
Dec 21 12:29:41 node1.example.com dockerd[1153]: time="2018-12-21T12:29:41.052677343+05:30" level=info msg="shim containerd-shim started" address="/containerd-shim/moby/9e...se pid=3957
Dec 21 12:29:41 node1.example.com dockerd[1153]: time="2018-12-21T12:29:41.383996326+05:30" level=info msg="shim reaped" id=9edcb088fe31716fc727b7291e7972f4cb030ff51e29db8...cdaa53bd807
Dec 21 12:29:41 node1.example.com dockerd[1153]: time="2018-12-21T12:29:41.394072301+05:30" level=info msg="ignoring event" module=libcontainerd namespace=moby topic=/task...TaskDelete"
Dec 21 12:31:31 node1.example.com dockerd[1153]: time="2018-12-21T12:31:31.571196111+05:30" level=error msg="Error setting up exec command in container 9edcb088fe31716fc72...ot running"
Dec 21 12:33:12 node1.example.com dockerd[1153]: time="2018-12-21T12:33:12.263039550+05:30" level=info msg="shim containerd-shim started" address="/containerd-shim/moby/13...se pid=4299
Hint: Some lines were ellipsized, use -l to show in full.
Use normal user to manage docker
Once docker is installed, we will have a group 'docker
' available on our system. Any user which is part of docker group will be allowed to execute docker related commands
[root@node1 ~]# grep docker /etc/group
docker:x:980:deepak
So let us add 'deepak
' to docker group
[root@node1 ~]# usermod -aG docker deepak
Next switch user to 'deepak
'
[root@node1 ~]# su - deepak Last login: Wed Dec 19 15:41:51 IST 2018 from 10.0.2.2 on pts/1
Get information on available docker containers
Docker info is providing information about the current docker environment that we are running. So we have no containers and images that are stored on this machine, we can see the storage driver
that we have just configured, and all the different storage capacities, like data space that is used, and we can find more information about the entire docker environment. The docker info
command is a useful command to verify what exactly it is that docker currently is doing
[deepak@node1 ~]$ docker info Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 0 Server Version: 18.09.0 Storage Driver: devicemapper Pool Name: vg_docker-thinpool Pool Blocksize: 524.3kB Base Device Size: 10.74GB Backing Filesystem: xfs Udev Sync Supported: true Data Space Used: 20.45MB Data Space Total: 8.154GB Data Space Available: 8.133GB Metadata Space Used: 8.434MB Metadata Space Total: 83.89MB Metadata Space Available: 75.45MB Thin Pool Minimum Free Space: 815.3MB Deferred Removal Enabled: true Deferred Deletion Enabled: true Deferred Deleted Device Count: 0 Library Version: 1.02.149-RHEL7 (2018-07-20) Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: bridge host macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: runc Default Runtime: runc Init Binary: docker-init containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39 runc version: 4fc53a81fb7c994640722ac585fa9ca548971871 init version: fec3683 Security Options: seccomp Profile: default Kernel Version: 3.10.0-957.1.3.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 3.701GiB Name: node1.example.com ID: 2JHJ:HICZ:HHVG:NUOA:FCAK:EFJI:RDAF:LFPH:XZUA:WFER:DI7I:LOEI Docker Root Dir: /var/lib/docker Debug Mode (client): false Debug Mode (server): false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Live Restore Enabled: false Product License: Community Engine
Docker Hello World
Now let's start with the first command, which is docker run hello-world
. Docker Hub provides a docker image with the name hello world that allows you to run hello world.
Since the docker image is not available on our system, it is pulling (downloading) the image from it's repo which will take some time.
[deepak@node1 ~]$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
You can see the summary of what this image has done displayed here on my screen.
- So Docker client contacted the Docker daemon,
- Docker daemon pulled hello world from Docker Hub,
- and Docker daemon created a new container from that image, which runs the executable that produces the output that we are currently reading.
So basically, it downloaded an image, it started container, it ran the commands, and then it exited.
To get an overview of currently running Docker containers, use 'docker ps
'
[deepak@node1 ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
and if you want to get an overview of all Docker containers that have been running, but who are exited, use 'docker ps -a
'
[deepak@node1 ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea540759dd3c hello-world "/hello" 31 seconds ago Exited (0) 29 seconds ago eloquent_chandrasekhar
Now this is useful information as well, because we can see the hello world images we used to run the command hello
.
It was created 31 seconds ago, and it exited 29 seconds ago, and it has a logical name, eloquent_chandrasekhar
.
These logical names are generated automatically, and you can use them to manage containers in an easier way. I mean, dazzling gates is a little bit easier to type than this container id.
Download ubuntu container image
To try something more ambitious, you can run an Ubuntu container with 'bash
'. This command will download the Ubuntu image, in case it's not yet present on this local machine, and it will start an interactive terminal mode, in which the command bash is executed, and the result is that we suddenly are in bash shell.
[deepak@node1 ~]$ docker run -it ubuntu bash
Unable to find image 'ubuntu:latest' locally
latest: Pulling from library/ubuntu
32802c0cfa4d: Pull complete
da1315cffa03: Pull complete
fa83472a3562: Pull complete
f85999a86bef: Pull complete
Digest: sha256:6d0e0c26489e33f5a6f0020edface2727db9489744ecc9b4f50c7fa671f23c49
Status: Downloaded newer image for ubuntu:latest
root@3cf05b3c26b7:/# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.3 0.0 18496 2004 pts/0 Ss 05:53 0:00 bash root 10 0.0 0.0 34388 1464 pts/0 R+ 05:53 0:00 ps aux
Also, other commands do relate to what we have in this container. You can see the thin provision volume that this container is using, with the size of 10 GB, and a used size of 107 MB. It's thin provisioned, so this is not really using any storage on your computer.
root@3cf05b3c26b7:/# df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/docker-253:0-529717-a4cf6f4fbccc8c390d4558e357ecb99574fc8bcebaf6b0df498a6a1811ada898 10G 107M 9.9G 2% / tmpfs 64M 0 64M 0% /dev tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup /dev/mapper/centos-root 16G 8.2G 6.5G 56% /etc/hosts shm 64M 0 64M 0% /dev/shm tmpfs 1.9G 0 1.9G 0% /proc/acpi tmpfs 1.9G 0 1.9G 0% /proc/scsi tmpfs 1.9G 0 1.9G 0% /sys/firmware
How to exit from container?
To exit from a container, use control+p followed by control+q, and that will bring you back to a normal shell environment.
root@3cf05b3c26b7:/# [deepak@node1 ~]$
Now if we check for any running containers using ps
, we will see 'ubuntu
'
[deepak@node1 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cf05b3c26b7 ubuntu "bash" 2 minutes ago Up 2 minutes suspicious_lamport
How to stop a container?
Now to stop a container you can simply run docker stop
followed by the name of the container which for us is suspicious_lamport
[deepak@node1 ~]$ docker stop suspicious_lamport
suspicious_lamport
Next check the status again, which shows nothing. So there are no running containers at the moment
[deepak@node1 ~]$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Now let us get an history of containers which were running on our system. It shows that ubuntu was created 4 minutes ago but exited 33 seconds ago
[deepak@node1 ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cf05b3c26b7 ubuntu "bash" 4 minutes ago Exited (0) 33 seconds ago suspicious_lamport
ea540759dd3c hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago eloquent_chandrasekhar
[deepak@node1 ~]$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cf05b3c26b7 ubuntu "bash" 9 seconds ago Up 9 seconds suspicious_lamport
How to connect to a docker container?
Once you have started a docker container that is not in interactive mode, if you want to run something within it, you can use docker exec
[deepak@node1 ~]$ docker exec -it suspicious_lamport bash root@3cf05b3c26b7:/# read escape sequence
So docker exec
is a useful command that allows you to get into a container, and to perform specific tasks within the container.
Now to exit from a container, use control+p
followed by control+q
, and that will bring you back to a normal shell environment.
How to remove docker container?
If you want to remove the docker container from your system to save some disk space, that is possible as well. You should use docker rm
, followed by the name of the container, which is suspicious_lamport
for our case.
[deepak@node1 ~]$ docker rm suspicious_lamport
suspicious_lamport
This has removed the container.
[deepak@node1 ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ea540759dd3c hello-world "/hello" 7 minutes ago Exited (0) 7 minutes ago eloquent_chandrasekhar
If you also want to remove the image, that is also possible, and you will use docker rmi
to do so. So docker rmi ubuntu
will delete all of the different layers that are available in the Ubuntu image
[deepak@node1 ~]$ docker rmi ubuntu Untagged: ubuntu:latest Untagged: ubuntu@sha256:6d0e0c26489e33f5a6f0020edface2727db9489744ecc9b4f50c7fa671f23c49 Deleted: sha256:93fd78260bd1495afb484371928661f63e64be306b7ac48e2d13ce9422dfee26 Deleted: sha256:1c8cd755b52d6656df927bc8716ee0905853fada7ca200e4e6954bd010e792bb Deleted: sha256:9203aabb0b583c3cf927d2caf6ba5b11124b0a23f8d19afadb7b071049c3cf26 Deleted: sha256:32f84095aed5a2e947b12a3813f019fc69f159cb5c7eae5dad69b2d98ffbeca4 Deleted: sha256:bc7f4b25d0ae3524466891c41cefc7c6833c533e00ba80f8063c68da9a8b65fe
How to query Docker Hub?
Now let's query the Docker Hub some more. This allows us to look for different CentOS images that are available.
[deepak@node1 ~]$ docker search CentOS
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 5062 [OK]
ansible/centos7-ansible Ansible on Centos7 119 [OK]
jdeathe/centos-ssh CentOS-6 6.10 x86_64 / CentOS-7 7.5.1804 x86… 102 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 73 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 48 [OK]
centos/mysql-57-centos7 MySQL 5.7 SQL database server 44
tutum/centos Simple CentOS docker image with SSH access 43
gluster/gluster-centos Official GlusterFS Image [ CentOS-7 + Glust… 38 [OK]
openshift/base-centos7 A Centos7 derived base image for Source-To-I… 37
centos/postgresql-96-centos7 PostgreSQL is an advanced Object-Relational … 35
centos/python-35-centos7 Platform for building and running Python 3.5… 32
kinogmt/centos-ssh CentOS with SSH 25 [OK]
openshift/jenkins-2-centos7 A Centos7 based Jenkins v2.x image for use w… 19
centos/php-56-centos7 Platform for building and running PHP 5.6 ap… 17
pivotaldata/centos-gpdb-dev CentOS image for GPDB development. Tag names… 9
openshift/wildfly-101-centos7 A Centos7 based WildFly v10.1 image for use … 6
openshift/jenkins-1-centos7 DEPRECATED: A Centos7 based Jenkins v1.x ima… 4
darksheer/centos Base Centos Image -- Updated hourly 3 [OK]
pivotaldata/centos Base centos, freshened up a little with a Do… 2
pivotaldata/centos-mingw Using the mingw toolchain to cross-compile t… 2
pivotaldata/centos-gcc-toolchain CentOS with a toolchain, but unaffiliated wi… 1
blacklabelops/centos CentOS Base Image! Built and Updates Daily! 1 [OK]
smartentry/centos centos with smartentry 0 [OK]
pivotaldata/centos7-build CentosOS 7 image for GPDB compilation 0
pivotaldata/centos7-test CentosOS 7 image for GPDB testing 0
Here we can see that the name is CentOS, the description is the official build of CentOS.
If it says it's the official build of CentOS, and normally this is created by the provider of the software. The start indicates the appreciation level, it has 5,062 starts, which means that this is a pretty reliable image. You can see other images as well, such as this one, which have not been appreciated with any start, which means that nobody has approved of it so far. That doesn't mean anything, it just means that this is not a commonly used container image. So if you are using for something reliable, then this is probably the thing that you wanna use. Officially it's indicating that it's the official release.
Similarly if you want to find a specific operating system, or search for a solution, like docker search mariadb
, and then you can see a lot of mariadb results are being displayed. Now let us download the different image layers of mariadb, and run the Docker container on this system.
[root@node1 ~]# docker run mariadb
Unable to find image 'mariadb:latest' locally
latest: Pulling from library/mariadb
32802c0cfa4d: Already exists
da1315cffa03: Already exists
fa83472a3562: Already exists
f85999a86bef: Already exists
a2434d5c8419: Already exists
181debc3d23d: Already exists
7b5b2b6de4ee: Already exists
6f830a8cb936: Already exists
c6becfb25371: Already exists
a57998e3e98d: Already exists
26444682043c: Already exists
9bbb07a72de5: Pull complete
84b75eddf6b1: Pull complete
9f45ae7e5c8d: Pull complete
Digest: sha256:12e32f8d1e8958cd076660bc22d19aa74f2da63f286e100fb58d41b740c57006
Status: Downloaded newer image for mariadb:latest
error: database is uninitialized and password option is not specified
You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
Now you can see that the container is complaining about the database, this uninitialized impassive option is not specified, so this container apparently need some more information in order to do its work.
Here as you see our mariadb container exited 17 minutes ago.
[deepak@node1 ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e67a25166ff mariadb "docker-entrypoint.s…" 17 minutes ago Exited (1) 17 minutes ago angry_poitras
ea540759dd3c hello-world "/hello" About an hour ago Exited (0) About an hour ago eloquent_chandrasekhar
How to check Docker logs?
There's one more thing that I would like to discuss about managing containers, and that is debugging, finding out what is happening within a container. Docker logs may be useful. You can use these commands on a container to get information from the standard out and the standard error on the container's console, provided that any such thing has been generated
[deepak@node1 ~]$ docker logs suspicious_lamport
Here suspicious_lamport was our ubuntu container. Now since there are no errors the output is blank.
Let us check the logs of mariadb container
[deepak@node1 ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3cf05b3c26b7 ubuntu "bash" 2 minutes ago Up 2 minutes suspicious_lamport 4e67a25166ff mariadb "docker-entrypoint.s…" 37 minutes ago Exited (1) 37 minutes ago angry_poitras ea540759dd3c hello-world "/hello" About an hour ago Exited (0) About an hour ago eloquent_chandrasekhar
Now as you see the error message which we observed while running the mariadb container
[deepak@node1 ~]$ docker logs angry_poitras error: database is uninitialized and password option is not specified You need to specify one of MYSQL_ROOT_PASSWORD, MYSQL_ALLOW_EMPTY_PASSWORD and MYSQL_RANDOM_ROOT_PASSWORD
To get more information on the container. This is all the information that has been used while creating the container.
[deepak@node1 ~]$ docker inspect suspicious_lamport [ { "Id": "3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2", "Created": "2018-12-21T07:03:12.007684767Z", "Path": "bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 4318, "ExitCode": 0, "Error": "", "StartedAt": "2018-12-21T07:03:12.548723701Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:93fd78260bd1495afb484371928661f63e64be306b7ac48e2d13ce9422dfee26", "ResolvConfPath": "/var/lib/docker/containers/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2/resolv.conf", "HostnamePath": "/var/lib/docker/containers/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2/hostname", "HostsPath": "/var/lib/docker/containers/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2/hosts", "LogPath": "/var/lib/docker/containers/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2/3cf05b3c26b75eb15f181b9c35d55808e49e1935c4e9d3dedbc7180261c41fe2-json.log", "Name": "/suspicious_lamport", "RestartCount": 0, "Driver": "devicemapper", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": [ "cb6e6974f1513f7ea509a1f657838741b129a167771779c078119dbbc79a6129" ], "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "json-file", "Config": {} }, "NetworkMode": "default", "PortBindings": {}, "RestartPolicy": { "Name": "no", "MaximumRetryCount": 0 }, "AutoRemove": false, "VolumeDriver": "", "VolumesFrom": null, "CapAdd": null, "CapDrop": null, "Dns": [], "DnsOptions": [], "DnsSearch": [], "ExtraHosts": null, "GroupAdd": null, "IpcMode": "shareable", "Cgroup": "", "Links": null, "OomScoreAdj": 0, "PidMode": "", "Privileged": false, "PublishAllPorts": false, "ReadonlyRootfs": false, "SecurityOpt": null, "UTSMode": "", "UsernsMode": "", "ShmSize": 67108864, "Runtime": "runc", "ConsoleSize": [ 0, 0 ], "Isolation": "", "CpuShares": 0, "Memory": 0, "NanoCpus": 0, "CgroupParent": "", "BlkioWeight": 0, "BlkioWeightDevice": [], "BlkioDeviceReadBps": null, "BlkioDeviceWriteBps": null, "BlkioDeviceReadIOps": null, "BlkioDeviceWriteIOps": null, "CpuPeriod": 0, "CpuQuota": 0, "CpuRealtimePeriod": 0, "CpuRealtimeRuntime": 0, "CpusetCpus": "", "CpusetMems": "", "Devices": [], "DeviceCgroupRules": null, "DiskQuota": 0, "KernelMemory": 0, "MemoryReservation": 0, "MemorySwap": 0, "MemorySwappiness": null, "OomKillDisable": false, "PidsLimit": 0, "Ulimits": null, "CpuCount": 0, "CpuPercent": 0, "IOMaximumIOps": 0, "IOMaximumBandwidth": 0, "MaskedPaths": [ "/proc/acpi", "/proc/kcore", "/proc/keys", "/proc/latency_stats", "/proc/timer_list", "/proc/timer_stats", "/proc/sched_debug", "/proc/scsi", "/sys/firmware" ], "ReadonlyPaths": [ "/proc/asound", "/proc/bus", "/proc/fs", "/proc/irq", "/proc/sys", "/proc/sysrq-trigger" ] }, "GraphDriver": { "Data": { "DeviceId": "36", "DeviceName": "docker-253:0-529717-1443554881a9ad438000d94d8b883ca60ed5a75ebcdd9e9a1f8ed40b2840b03b", "DeviceSize": "10737418240" }, "Name": "devicemapper" }, "Mounts": [], "Config": { "Hostname": "3cf05b3c26b7", "Domainname": "", "User": "", "AttachStdin": true, "AttachStdout": true, "AttachStderr": true, "Tty": true, "OpenStdin": true, "StdinOnce": true, "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" ], "Cmd": [ "bash" ], "Image": "ubuntu", "Volumes": null, "WorkingDir": "", "Entrypoint": null, "OnBuild": null, "Labels": {} }, "NetworkSettings": { "Bridge": "", "SandboxID": "e30994015e7aca47e373bc0a45daed8b46b7b62ee5c78a6842ed35d17513619f", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": {}, "SandboxKey": "/var/run/docker/netns/e30994015e7a", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "d51c7efd781bbec0524030c731d5bcefe1677a5ddc5a31fde1f51effb23d0ab5", "Gateway": "172.17.0.1", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "MacAddress": "02:42:ac:11:00:02", "Networks": { "bridge": { "IPAMConfig": null, "Links": null, "Aliases": null, "NetworkID": "5a92284fb69d2fff9dd226e8dd962e199b8e6f76b92737e9cf867f21bbbb84ac", "EndpointID": "d51c7efd781bbec0524030c731d5bcefe1677a5ddc5a31fde1f51effb23d0ab5", "Gateway": "172.17.0.1", "IPAddress": "172.17.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:11:00:02", "DriverOpts": null } } } } ] ]
So we can see some current state information. We can see the image that is currently used. We can also see the storage it is using in a var lib container, followed by the container ID. We can see information about the configuration of the container, and if you scroll down, we can also see information about networking, for instance. So here we can see the network settings, including the IP address that is being used by this container, which is 172.17.0.2.
Can you show how to containerize the on-prime applications to run as a container?
Can you please give some more details on what exactly is that you are looking for?
Kindly enable/add copy script button as well in the script if possible!!!
Thanks for the suggestion. I will try to add in one.