Changes

Jump to: navigation, search

User Guide/Operations on Containers

2,147 bytes added, 20:53, 1 September 2015
fix man page link
# '''vzctl set 101 --userpasswd root:test'''
In this example, we set the root password for Container 101 to "test", and you can log in to the Container via SSH as root and administer it in the same way as you administer a standalone Linux server: install additional software, add users, set up services, and so on. The password will be set inside the Container in the <code>/etc/shadow</code> file in an encrypted form and will not be stored in the Container configuration file. Therefore, if you forget the password, you have to reset it. Note that <code>--userpasswd</code> ignores the <code>--save</code> switch, the password is anyway persistently set for the given Container.
While you can create users and set passwords for them using the <code>vzctl exec</code> or <code>vzctl set</code> commands, it is suggested that you delegate user management to the Container administrator advising him/her of the Container root account password.
# The Container on the Destination Node is started.
'''WARNING: By default, after the migration process is completed, the Container private area and configuration file are deleted on the Source Node!''' However, if you wish the Container private area on the Source Node to not be removed after the successful Container migration, you can override the default <code>vzmigrate</code> behavior by using the <code>–r no</code> switch.
There is a short downtime needed to stop the Container on the Source Node, copy the Container private data changes to the Destination Node, and start the Container on the Destination Node. However, this time is very short and does not usually exceed one minute.
{{Note|For the command to be successful, a direct SSH connection (on port 22) should be allowed between the Source and Destination Nodes.}}
 
By default, after the migration process is completed, the Container private area and configuration file are removed on the Source Node. However, if you wish the Container private area on the Source Node to be removed after the successful Container migration, you can override the default <code>vzmigrate</code> behavior by using the <code>–r no</code> switch.
=== Zero-downtime (online) migration ===
During the command execution, the <code>/vz/dump/Dump.101</code> file containing the entire state of Container 101 is created and the Container itself is stopped.
Note: You can set another directory to store dump files for your Containers by changing the value of the DUMPDIR parameter in the OpenVZ global file. Detailed information on the OpenVZ global file and the parameters you can specify in it is provided in the {{man|vz.conf|5}}.
At any time, you can resume Container 101 by executing the following command:
== Running Commands in Container ==
 
Usually, a Container administrator logs in to the Container via network and executes any commands in the Container as on any other Linux box. However, you might need to execute commands inside Containers bypassing the normal login sequence. This can be helpful if:
 
* You do not know the Container login information, and you need to run some diagnosis commands inside the Container in order to verify that it is operational.
* Network access is absent for a Container. For example, the Container administrator might have accidentally applied incorrect firewalling rules or stopped the SSH daemon.
 
The OpenVZ software allows you to execute commands in a Container in these cases. Use the <code>vzctl exec</code> command for running a command inside the Container with the given ID. The session below illustrates the situation when the SSH daemon is not started:
 
# '''vzctl exec 103 /etc/init.d/sshd status'''
openssh-daemon is stopped
# '''vzctl exec 103 /etc/init.d/sshd start'''
Starting sshd: [ OK ]
# '''vzctl exec 103 /etc/init.d/sshd status'''
openssh-daemon (pid 9899) is running...
 
Now Container users can log in to the Container via SSH (assuming that networking and firewall are not misconfigured).
 
When executing commands inside a Container from shell scripts, use the <code>vzctl exec2</code> command. It has the same syntax as <code>vzctl exec</code> but returns the exit code of the command being executed instead of the exit code of <code>vzctl</code> itself. You can check the exit code to find out whether the command has completed successfully.
 
If you wish to execute a command in all running Containers, you can use the following script:
 
# '''for CT in $(vzlist -H -o ctid); do echo "== CT $CT =="; vzctl exec $CT ''command''; done'''
 
where ''<code>command</code>'' is the command to be executed in all the running Containers. For example:
 
# '''for CT in $(vzlist -H -o ctid); do echo "== CT $CT =="; vzctl exec $CT uptime; done'''
== CT 103 ==
15:17:19 up 13 min, 0 users, load average: 0.00, 0.00, 0.00
== CT 123123123 ==
15:17:19 up 22:00, 0 users, load average: 0.00, 0.00, 0.00
<noinclude>{{UG/Footer}}</noinclude>

Navigation menu