Showing posts with label Windows. Show all posts
Showing posts with label Windows. Show all posts

Sunday, December 1, 2019

Docker


1. docker container can be find / downloaded from docker hub / docker store.

    http://hub.docker.com
 
    i.e
        $docker run ansible
        $docker run mogodb
        $docker run redis
        $docker run nodejs
     
2. Docker have two addition
    i. Community Edition
    ii. Enterprise Edition
 
3. Community Edition are availble for mac/windows/cloud (AWS)

4. Install docker desktop for windows / mac from http://docs.docker.com/install

5.  It will be eaiser to install docker through convenience script, instruction must  be found on http://docs.docker.com/install

6. Download images/container from http://hub.docker.com

7. To test visit the hub.docker and search for whalesay image to test the docker installation.

 $sudo docker run docker/whalesay cowsay HelloWorld

 Docker will pull the image and runs it.

 8. Docker Command
    i. $docker run <<container-name>> : to run the image, the image will be downloaded if not available.
 
    ii. $docker ps : will list all the containers
             -a : show the status and other details
           
    iii. $docker stop <<container-name>>
 
    iv. $docker rm <<container-name>> : remove the installed docker.
 
    v. $docker images : list down the downloaded images.
 
    vi. $docker rmi <<image-name>> : to remove the downloaded image.
        a. Stop and delete all the dependent container to remove image.
     
    vii. $docker pull <<image-name>> : just to pull the image without running it.
 
    viii. $docker run ubuntu : to run the container
 
    ix. $docker ps -a : list down the running container.
 
    x. Why the containers are in Exited status?
        Containers are ment to run process / tasks /webserer / application server/database instance not operating system once the task / process is completed the container exists.
     
        $docker run ubuntu sleep 5 : the ubuntun imaghe will start and sleep for 5 seconds one the task is completed the ubuntu iamge will be in Existed.
     
    xi. $docker exec distracted_mcclintock cat /etc/hosts : execute command inside the container to display the file content.
 
    xii. Processes runs either on four ground / active mode.
        a. $docker run kodekloud/simple-webapp : Run the image on attached mode.
     
        b. $docker run -d kodekloud/simple-webapp : Run the image in detach mode (backgroundm ode).
 
        - $kdocker attach <<image-name>> / <<image-id>> : to connect the detach container run the following command

        - first five character of docker image id are enough to run any docker command.
     
    ix. $docker run redis : to run the latest redis server
        $docker run redis:4.0 : to run the older version redis use the tag, the tag can be used with any image.
     
    xx. The hub.docker.com listdown all the versions / tags for all the available images.
 
    xxi. $docker run -i my/simple-prompt-docker : where -i is for an interactive mode to receive command line input and pass as parameter in application.
         $docker run -it my/simple-prompt-docker : for more interactive mode where you will see the application asking for input and you need to type you value and application will process that input further.
       
    xxii. Port forwarding:
 
    $docker run my/webapp: to start the web application image, the webapp is running on 5000 port (i.e http://172.17.0.2:5000/). Every machine have default IP and only accessable from docker host and not accessable outside the host.
 
    $docker run -p 80:5000 my/webapp : Map the port to access docker webapp image instance running on 5000 port.
 
    - this way you can run multipule instance of application using different ports.
    i.e
      $docker run -p 8000:5000 my/webapp
      $docker run -p 9000:5000 my/webapp
   
      $docker run -p 3306:3306 mysql
      $docker run -p 8306:3306 mysql
      $docker run -p 9306:3306 mysql
   
      - all above host ports are forwarded to one post of docker image.
 
    xxiii. Volume Mapping
 
    i.e $docker run mysql
        $docker stop mysql
        $docker rm mysql
     
        Onec the container removed all the data inside mysql database will be removed as well to prevent this we need to map the mysql data files with host file path.
     
        $docker run -v /opt/datadir:/var/lib/mysql mysql
     
        one the container starts with volume mapping all the data will be stored in the host system. Removing the mysql container will not effect the stored data.
     
    xxiv. Inspect Container:
        $docker inspect <<container-name>> : will return the json contain the details about container.
     
    xxv. Container logs (Processing running in detach mode)
     
        $ docker logs <<container-name>>
     
    xxvi. Set Environment Variables:
        The environment varabiles can be used inside the application and to set those run the following command:
     
        $docker run -e APP_COLOR=blue myweb
        $docker run -e APP_COLOR=red myweb
        $docker run -e APP_COLOR=green myweb
     
        to view the envrionment variable of container use inspect command
     
        $docker inspect <<container-name>>
        You will find the list of ENV in config tag of josn returned by inspect command.
 
     
9. Free lab to prectise the lab and quiz http://kodekloud.com/p/docker-labs

10. Create your own docker image.
    - Task list
        i. Install OS (ubuntu)
        ii. Update apt repository
        iii. Install apt updates
        iv. Install the python and its dependencies
        v. Copy the source
        vi. Run the application
     
       
    - Process
        i. Create docker file 'Dockerfile' and put all the commands are you will execute on OS.
     
            i.e
            --------------------------------
            FROM Ubuntu

            RUN apt-get update
            RUN apt-get install python
            RUN pip install flask
            RUN pip install flask-mysql

            COPY ./opt/source-code

            ENTRYPOINT FLASK_APP=/opt/source-code/app.py flask run
            ----------------------------------
         
            - In the above file, everything on left (i.e FORM, RUN, COPY) are instruction and text on the right side are Argument.
         
            -FROM Ubuntu: deifne the base OS required for docker image.

        ii. Build you image with docker build command using Dockerfile as parameter.
     
        $docker build Dockerfile -t isyed/my-python-app

        or
     
        $docker build .
            - If you want to re-run / contine if the building image failed on any step.
     
        iii. Run the push command to push the newly created image to public hub docker repository.
     
        $docker push isyed/my-python-app
            - here isyed is my account name which is created on docker website.
     
        $docker history isyed/my-python-app
            - to know the history and size of container image.
        

Monday, February 15, 2016

Error while domain creation - Weblogic



Preparing...
Extracting Domain Contents...
Creating Domain Security Information...
Domain Creation Failed!

Domain Location: C:\Oracle\Middleware\user_projects\domains\custom_domain

Reason: null

Exception:

Traceback (innermost last):
  File "<iostream>", line 155, in ?
  File "<iostream>", line 53, in writeUcmAutoInstallFile
  File "C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/javaos$py.class", line 334, in system
  File "C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/popen2.py", line 235, in system
  File "C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/popen2.py", line 72, in __init__
  File "C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules\jython-modules.jar\Lib/javashell.py", line 64, in execute
OSError: (0, 'Failed to execute command ([\'sh\', \'-c\', \'chmod 755 C:\\\\Oracle\\\\Middleware\\\\user_projects\\\\domains\\\\hassad/ucm/cs/bin/autoinstall.cfg\']): java.io.IOException: Cannot run program "sh": CreateProcess error=2, The system cannot find the file specified')


Solution:

To solve this we need to patch the jython-modules.jar. For default JDeveloper installation path we need to go to C:\Oracle\Middleware\wlserver_10.3\common\wlst\modules and extract the jython-modules.jar using a utility like 7-zip. Then we need to open the javashell.py python script inside lib folder and add at line 139 a String for Windows 8 OS:

_osTypeMap = (
        ( "nt", ( 'nt', 'Windows NT', 'Windows NT 4.0', 'WindowsNT',
                  'Windows 2000', 'Windows 2003', 'Windows XP', 'Windows CE',
                  'Windows Vista', 'Windows Server 2008', 'Windows 7', 'Windows 8' )),
        ( "dos", ( 'dos', 'Windows 95', 'Windows 98', 'Windows ME' )),
        ( "mac", ( 'mac', 'MacOS', 'Darwin' )),
        ( "None", ( 'None', )),
        )



Remove Domain from Weblogic Server


As of now there is no out of the box feature with Weblogic Configuration wizard to remove or delete a domain.

These are basically manual steps.
For example if I want to delete a domain named geo_domain below are the steps you need to remove the domain.

1. Open domain-registry.xml under $Middleware_HOME .Remove the corresponding entry referring to geo_domain.
CodeSnippet :: domain-registry.xml
<?xml version="1.0" encoding="UTF-8"?>
<domain-registry xmlns="http://xmlns.oracle.com/weblogic/domain-registry">
<domain location="C:\Oracle\Middleware\user_projects\domains\soa_domain"/>
<domain location="C:\Oracle\Middleware\user_projects\domains\geo_domain"/>
</domain-registry>

2. Open nodemanager.domains file under $Middleware_HOME \wlserver_10.3\common\nodemanager\ folder. Remove the corresponding entry referring to geo_domain.
CodeSnippet :: nodemanager.domains
#Domains and directories created by Configuration Wizard
geo_domain=C\:\\Oracle\\Middleware\\user_projects\\domains\\geo_domain

3. Delete the domain folder under domains folder manually.
        $Middleware_HOME\user_projects\domains\geo_domain

4. Delete the domain folder under applications folder manually.
        $Middleware_HOME\user_projects\ applications\geo_domain

Installing the NodeManager service


1.    Open the Command Prompt
2.    Run %WL_HOME%\wlserver_10.3\server\bin\setWLSEnv.cmd to set Weblogic Environment variables like WL_HOME, JAVA_HOME, PATH, CLASSPATH etc.
3.    Edit the installNodeMgrSvc.cmd to bind to a hostname for remote starts 
set NODEMGR_HOST=localhost
4.    Now run the %WL_HOME%\wlserver_10.3\server\bin\installNodeMgrSvc.cmd Validate the service from the services list as well using the services.msc utility.


5.    Start the NodeManager service named as above “Oracle WebLogic NodeManager…”
6.    Make sure starting the NodeManager service should create a  nodemanager.properties file under %WL_HOME%\wlserver_10.3\common\nodemanager.

Setup NodeManager to restore servers to their last known state after a reboot

1.   
Open nodemanager.properties located at %WL_HOME%\wlserver_10.3\common\nodemanager
2.    Set CrashRecoveryEnabled property value to true CrashRecoveryEnabled=true 
3.    Set StartScriptEnabled property value to true to invoke the startWeblogic script StartScriptEnabled=true
4.    Set StopScriptEnabled property value to true to invoke the stopWeblogic script and get the managed servers to shutdown cleanly StopScriptEnabled=false
5.    Set ListenAddress property value ListenAddress=localhost
6.    Set SecureListener property value (In case you selected plan for as communication type) SecureListener=false
7.    Restart of NodeManager service for each change to this nodemanager.properties file



Setup the machine

1.    Login to the AdminServer console

2.    Navigate through Domain Structure to %DOMAIN_NAME% -> Environment -> Machines

3.    Create a new machine Name : localhost, OS : Other - as my operating system is Windows Node Manager - Type: Plan

4.    Create one machine for each instance of OS for a different host.

5.    Assign the ManagedServer to machines based on which machine the ManagedServer is hosted. Take Lock & Edit and navigate through %DOMAIN_NAME% -> Environment -> Machines -> %MACHINE_NAME% -> Configuration tab -> Servers tab

6.    Do not forget to save and Activate the changes.

Enrolling the domain with NodeManager      

1.    Open command prompt

2.    Run %DOMAIN_HOME%\bin\setDomainEnv.cmd to set domain specific environment variables

3.    Start WLST using java weblogic.WLST

4.    At WLS prompt connect to AdminServer using connect ('weblogic','weblogic','t3://localhost:7001')

5.    Run nmEnroll(domainDir='C:/oracle/Middleware/user_projects/domains/base_domain',nmHome='C:/oracle/Middleware/common/nodemanager'). Make sure that you use forward slashes "/" instead of backward "\" as WLST does not recognize forward slashes. If you use backward slashes "\" you get the following error.



6.    Once the domain is successfully enrolled with NodeManager the nodemanager.domains should be updated too with below values.

#Thu Apr 28 11:54:41 MDT 2014
            base_domain=C\:\\Oracle\\Middleware\\user_projects\\domains\\base_domain 
            Also NodeManager should be reachable in AdminServer console. To validate this,

a)    Login to AdminServer console

b)   Navigate through %DOMAIN_NAME% -> Environment -> Machines -> %MACHINE_NAME% -> Monitoring -> Node Manager Status it should be Reachable (If not please check the nodemanager.log in  C:\Oracle\Middleware\wlserver_10.3\common\nodemanager)
               


Server Startup Configuration

1.    Login to the AdminServer console
2.    Navigate through Domain Structure to %DOMAIN_NAME% -> Environment -> Servers -> ManagedServer_1 -> Configuration tab -> Server Start tab
3.    Take Lock & Edit and input values as appropriate.
Java Home - C:\oracle\Middleware\jdk160_14_R27.6.5-32
Java Vendor - Sun - As I am using Sun JDK 
Weblogic Home - C:\oracle\Middleware
Root Directory -C:\oracle\Middleware\user_projects\domains\base_domain 
Classpath - Can be left blank as we have configured the nodemanager.properties to use startWeblogic script in  Setup nodeManager to restore servers to their last known state after a reboot  step 3 and you can setup necessary values in that script.
Arguments - Can be left blank as we have configured the nodemanager.properties to use startWeblogic script in  Setup NodeManager to restore servers to their last known state after a reboot  step 3 and you can setup necessary values in that script. But i am using memory arguments as input here "-Xms64m -Xmx128m" 
Security Policy - File - C:\oracle\Middleware\wlserver_10.3\server\lib\weblogic.policy
User Name – weblogic
Password – weblogic
Confirm Password – weblogic
4.    Save and activate the changes
5.    Repeat steps 1-4 for each ManagedServer in the domain.



NodeManager Domain Username and password

1.    Login to the AdminServer console

2.    Click on Domain name in the Domain Structure and navigate through %DOMAIN_NAME% (cs_domain) -> Security tab -> General tab -> Advanced link

3.    Take Lock & Edit  and input the NodeManager username/password/confirm passwords fields and these could be unique from your weblogic console password. I have chosen to input same as my console credentials username: weblogic & password: weblogic. This setup would help user who use WLST to connect to NodeManager via nmConnect()

4.    Save and Activate the changes


Complete Setup

Finally the setup is complete and now its time to start your ManagedServer in Admin console using NodeManager.
Starting the ManagedServer using the NodeManager setup
1.    Login to the AdminServer console
2.    Navigate through Domain Structure to %DOMAIN_NAME% -> Environment -> Servers -> ManagedServer_1 -> Control tab -> Start/Stop tab
3.    Under the Server Status section select the ManagedServer and click on start button
4.    When prompted to confirm the Action to be performed, click yes button.
5.    Monitor the server logs and after a while the server should be in RUNNING state


AWS EC2 - SSH locked with UFW

Need to update the instance's user data: 1. Stop the instance 2. Right click (windows) or ctrl + click (Mac) on the instance to open a c...