设为首页 收藏本站
查看: 1211|回复: 0

[经验分享] 【转】docker install on windows

[复制链接]

尚未签到

发表于 2016-1-11 13:02:16 | 显示全部楼层 |阅读模式
Docker with boot2docker for Windows Tutorial

This tutorial walks you through the basics of using a Java app server (WildFly) via a Linux container, running on Windows with boot2docker. We have been testing this tutorial on Windows 7 and 8.1, you will notice that the screenshots come from either of those versions as this document has been tested and maintained.
There are notes for people running on Macs as well.
First follow installation steps for boot2docker:

Unless you already have VirtualBox installed, install all the components.


Mac: The docker and boot2docker binaries are in /usr/local/bin which you can access from your terminal. Windows: The boot2docker binary lands in C:\Program Files\Boot2Docker for Windows




Tip 1: where does the boot2docker VM ISO land on a Windows?


Windows: C:\Users\Burr\.boot2docker\boot2docker.iso
Mac: ~/.boot2docker/boot2docker.iso



Tip 2: where does the boot2docker instance land on Windows installation of VirtualBox


C:\Users\Burr\VirtualBox VMs\boot2docker-vm



Tip 3: Window Size Width 160 - docker ps is best displayed with lots of width


You can make this change on the Boot2Docker Start command window as well




Tip 4: VirtualBox before boot2docker init





VirtualBox installed prior to boot2docker has no mention of boot2docker until we useboot2docker init. Also, if you have previously installed boot2docker, you can often useboot2docker upgrade to simply update to the latest version.




Explore Docker




  • Look for and select the Boot2Docker Start menu option in your Start Menu



    Or use start.sh to launch the command prompt (not the normal Windows command prompt)
    You should be able to double-click on start.sh in C:\Program Files\Boot2Docker for Windows





    If you successfully launch start.sh, it will execute up, status and ip, therefore you can skip to step 8 below. Do make note of the IP address that is printed out, you will need it later.





    If there are error messages (and there normally are for a brand new installation), read steps 2 through 7 for some alternative ways to get boot2docker up and happy



  • You might also execute boot2docker commands from the Windows (DOS) Command Prompt aka "cmd.exe" and type
    boot2docker version



    Note: We have seen this fail on some systems. There will be some workarounds listed in step 3 below.
    Tip: on Windows 8.1, the Command Prompt is accessible if you hit the Windows key and X then C on the keyboard



  • boot2docker init 


    You should see the boot2docker-vm listed in VirtualBox Manager





    Note: This might result in


    error in run: Error generating new SSH Key into C:\Users\Burr\.ssh\id_boot2docker: exec: "ssh-keygen": executable file not found in %PATH%


    If so, then fall back to the Boot2Docker Start menu option calling "start.sh".


    There is another SSH related error that shows up, basically ssh.exe can not be found in the %PATH%. Use Control Panel to add the C:\Program Files(x86)\Git\bin to your PATH



  • boot2docker up
    Look for the following on Windows:



    Now, if you check the VirtualBox GUI you will see the boot2docker-vm running:





    Watch out for "VT-x is disabled in BIOS" errors If virtualization has not been enabled in your machines BIOS, you could see the following error:





    Or, if you hit the Start button inside the VirtualBox Manager directly





    If you see this error, you will need to update your BIOS settings accordingly.
    BIOS for Lenovo T440s



    Watch for the following on Mac OSX:

    Copy and paste the export statements you are provided with in to your terminal. If you get this step wrong, when you try further commands, you may see an error message like:



  • boot2docker status


    Note: When it is time to shutdown, run boot2docker down



  • boot2docker ip 


    You will need this later!



  • boot2docker ssh 


    From this point forward, you will be inside of a Linux shell, using Linux commands



  • docker version


  • docker info 


  • docker 


  • docker images


  • docker ps -a 


  • docker run centos /bin/echo "Hello World"

    This will take some time if this is the first run of the "centos" image
    If you run the same command again, you will notice that is runs immediately, no download required. A Docker container starts incredibly fast when compared to traditional virtual machine technology.
    To prove that point, run the same command again.


    Note: the container stops as soon as it finishes the /bin/echo command



  • On Windows, with boot2docker 1.3.x, the Users directory is shared as /c/Users
    ls /c/Users 
    This shared folder will allow you to add and edit files using your traditional Windows tools instead of having to learn vi or nano.
    Using your File Explorer, create a demo sub-directory to your home directory and then use a ls -l to see it via the boot2docker-vm (in this example Burr is the username):
    ls -l /c/Users/Burr/demo

    In this screenshot, I already some sample projects in my C:\Users\Burr\demo directory

    Note: We won't be using "demo" in this tutorial, the goal here was to let you see the connection between /c/Users and C:\Users


  • docker run -i -t centos /bin/bash

    -i means interactive and
    -t allows your keyboard input

    You can also use -it as well as -i -t. Remember this trick - if you have an app server failing to start, you can see the console output and review the logs by using "-it"
    If this is your first time running the centos image, it may take over a minute to download.
    You are now running inside of the Centos-based container, to prove that point, use the following command
    cat /etc/system-release

    Type exit to leave the container and drop back into the boot2docker-vm shell.


  • docker ps
    There should be no currently running containers since exit terminated the last centos container 


  • docker ps -a
    but there have been previously run containers



  • docker images
    shows local images 


  • docker pull centos/wildfly
    Docker Hub contains a large number of pre-configured images that are ready to use via a simple "pull" e.g. https://registry.hub.docker.com/u/centos/wildfly/


    run does an implicit "pull" if the image is not already downloaded


    Docker images are typically identified by two words "owner"/"imagename" The centos/wildflyimage includes nice documentation on how to use it - we will be following several of those steps next.



  • docker run -it centos/wildfly

    The t is important so you can Ctrl-C to stop wildfly and the container.
    Hit Ctrl-C and run a docker ps to see that the container has been stopped.
    In this particular case, the WildFly instance does not expose any ports to the outside world, let's try that next.


  • docker run -it -p 8080:8080 centos/wildfly

    If you remember the IP address you can use your favorite browser to hit the server. If you forgot to make note of your IP address earlier, you can open another session into boot2docker. Just go back to the Windows Start menu and select Boot2Docker Start or run start.sh. You might wish to keep both boot2docker sessions open as it allows you to docker run an app server via "-it" in one window and then "docker ps" or "docker logs" in another window.

    Press Ctrl-C to terminate the WildFly container.


  • docker history centos/wildfly
    The history command allows you to see more detail into how the image was crafted 



Modify the image and provide our own custom Java application




  • If you remember way back to ls /c/Users/Burr/demo, the Users directory on your Windows host is shared with the boot2docker-vm (thanks to VirtualBox Guest Additions). In your home directory, create a directory called docker_projects that is a sibling of demo. You can create the directory from within the boot2docker-vm with the following command (or just use File Explorer).

    mkdir /c/Users/Burr/docker_projects


    Use your home directory name in place of "Burr"


    and then create a sub-directory called myapp

    mkdir /c/Users/Burr/docker_projects/myapp


    You can create the "myapp" directory via Windows Explorer or the boot2docker-vm shell



    and then change to the directory, it is important that you do this inside of the boot2docker-vm shell

    cd /c/Users/Burr/docker_projects/myapp

  • In the myapp directory, create a text file called Dockerfile, with no extension.


    On Windows you might use the Atom editor from Atom.io for text editing.





  • Edit the newly created Dockerfile and add the following two lines:

    FROM centos/wildfly
    COPY javaee6angularjs.war /opt/wildfly/standalone/deployments/


    Note: On Macs, we have seen Wildfly have a permissions problem with the .war. The workaround is to switch to Root and use chown to make the ajustment to the .war file by adding the following two lines:


    USER root
    RUN chown wildfly:wildfly /opt/wildfly/standalone/deployments/javaee6angularjs.war


    The trailing "/" does matter
    You can find javaee6angularjs.war athttps://github.com/burrsutter/docker_tutorial/blob/master/javaee6angularjs.war?raw=trueDownload the war and copy it to the myapp directory.



  • Back in the boot2docker ssh session

    docker build --tag=myapp .


    the trailing "." is important


    Use the docker docker images command to see if the image was created



  • Let's see if that worked

    docker run -it -p 8080:8080 myapp

    you should see the deployment of javaee6angularjs.war in the wildfly console logging



  • And test the app via your browser http://192.168.59.105:8080/javaee6angularjs


    The IP address in my screenshots change from time to time as this document has been maintained. Just make sure to remember YOUR IP address as seen via start.sh or boot2docker ip





    Now it is time for a victory dance around the room! You have your first Java EE application deployed as part of a Docker container. Remember, Ctrl-C to shut down the app server.




Extra Credit




  • Run detached


    You could also use a -d instead of -it to run the container detached, in the background


    docker run -d -p 8080:8080 myapp




    If detached, you will need to use docker ps to see the active containers and then usedocker stop CONTAINER_ID and docker rm CONTAINER_ID
    Note: Docker automatically generated the name "agitated_hawking" which you can use instead of the CONTAINER_ID





  • Container naming


    Adding a --name=some_name allows you to give override the default name of agitated_hawking or whatever was randomly assigned to your container by Docker


    docker run --name=myapp_is_running -d -p 8080:8080 myapp




  • Viewing logs

    docker logs myapp_is_running


    and you can docker stop myapp_is_running when it is time to shutdown the -d detached app server container





  • Dive into a live container

    docker exec -it myapp_is_running bash
    cd /opt/wildfly/standalone/log
    tail server.log


    This is a very useful technique if you find things are misbehaving and you wish poke around inside the running container.






Cleanup


OPTIONAL - Clean Slate: If you wish to completely clean up and run through the above steps again:



  • Remove/Delete all containers

    docker rm `docker ps -a -q`


    the back ticks are important! You might also need to "stop" or "kill" any containers that are running and will not remove.


    docker ps -a
    docker stop CONTAINER_ID
    docker kill CONTAINER_ID

    Replace CONTAINER_ID with the id seen in the docker ps results.


  • Remove/Delete all images

    docker rmi `docker images -a -q`


    watch those back ticks again



  • Exit the boot2docker-vm shell, back at the Windows Command Prompt

    boot2docker down
    boot2docker destroy

    or if boot2docker from the command line is causing you problems, there is "Delete Boot2Docker VM" Start menu option which maps to delete.sh
    and to re-make the boot2docker-vm

    boot2docker init
    boot2docker up


    On Windows C:\Users\burr\.boot2docker contain files associated with your installation and I have seen .boot2docker not be uninstalled properly, manual deletion may be necessary



Check out the follow-on tutorial for adding MySQL.https://github.com/burrsutter/docker_mysql_tutorial
 
 
 
from:https://github.com/burrsutter/docker_tutorial

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-163067-1-1.html 上篇帖子: (转)Docker 终极指南 下篇帖子: docker index服务概述
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表