Coder Social home page Coder Social logo

tiryoh / docker-ros2-desktop-vnc Goto Github PK

View Code? Open in Web Editor NEW
379.0 10.0 76.0 157 KB

🐳 Dockerfiles to provide HTML5 VNC interface to access Ubuntu Desktop + ROS 2

Home Page: https://memoteki.net/archives/2955

License: Apache License 2.0

Dockerfile 31.28% Shell 68.72%
docker dockerfile ros2 vnc desktop

docker-ros2-desktop-vnc's Introduction

docker-ros2-desktop-vnc

Publish to Registry (Humble) Publish to Registry (Iron) Publish to Registry (Jazzy) Publish to Registry (Rolling)

Docker Automated build Contributor Covenant

Dockerfiles to provide HTML5 VNC interface to access Ubuntu Desktop + ROS2, based on AtsushiSaito/docker-ubuntu-sweb

ROS 1 version: https://github.com/Tiryoh/docker-ros-desktop-vnc

Image from Gyazo

There are official ROS 2 Docker images provided by Open Robotics.
https://github.com/osrf/docker_images/blob/master/README.md#official-library

このツールの詳細については以下の記事で紹介しています。
The details of these tools are written in Japanese on this page.
https://memoteki.net/archives/2955

Quick Start

Run the docker container and access with port 6080.
Change the shm-size value depending on the situation.

NOTE: --security-opt seccomp=unconfined flag is required to launch humble image. See #56.

docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble

Browse http://127.0.0.1:6080/.

Image from Gyazo

Build

To build Docker image from this Dockerfile, run the following command.

  • dashing (deprecated)
cd dashing && docker build -t tiryoh/ros2-desktop-vnc:dashing .
  • eloquent (deprecated)
cd eloquent && docker build -t tiryoh/ros2-desktop-vnc:eloquent .
  • foxy (deprecated)
cd foxy && docker build -t tiryoh/ros2-desktop-vnc:foxy .
  • galactic (deprecated)
cd galactic && docker build -t tiryoh/ros2-desktop-vnc:galactic .
  • humble
# using "docker build"
cd humble && docker build -t tiryoh/ros2-desktop-vnc:humble .
# using "docker buildx" (amd64)
cd humble && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:humble-amd64 .
# using "docker buildx" (arm64)
cd humble && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:humble-arm64 .
  • iron
# using "docker build"
cd iron && docker build -t tiryoh/ros2-desktop-vnc:iron .
# using "docker buildx" (amd64)
cd iron && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:iron-amd64 .
# using "docker buildx" (arm64)
cd iron && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:iron-arm64 .
  • jazzy
# using "docker build"
cd jazzy && docker build -t tiryoh/ros2-desktop-vnc:jazzy .
# using "docker buildx" (amd64)
cd jazzy && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:jazzy-amd64 .
# using "docker buildx" (arm64)
cd jazzy && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:jazzy-arm64 .
  • rolling
# using "docker build"
cd rolling && docker build -t tiryoh/ros2-desktop-vnc:rolling .
# using "docker buildx" (amd64)
cd rolling && docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:rolling-amd64 .
# using "docker buildx" (arm64)
cd rolling && docker buildx build --platform=linux/arm64 --progress=plain -t tiryoh/ros2-desktop-vnc:rolling-arm64 .

Docker tags on hub.docker.com

Docker tags and build logs are listed on this page.
https://github.com/Tiryoh/docker-ros2-desktop-vnc/wiki

Related projects

License

This repository is released under the Apache License 2.0, see LICENSE.
Unless attributed otherwise, everything in this repository is under the Apache License 2.0.

Copyright 2020-2023 Tiryoh <[email protected]>

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Acknowledgements

docker-ros2-desktop-vnc's People

Contributors

cardboardcode avatar dependabot[bot] avatar sbarcelona11 avatar takasehideki avatar tiryoh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

docker-ros2-desktop-vnc's Issues

`/dev/shm` mount error on Windows

> docker run -p 6080:80 -v /dev/shm:/dev/shm tiryoh/ros2-desktop-vnc
C:\Program Files\Docker\Docker\resources\bin\docker.exe: Error response from daemon: error while creating mount source path '/dev/shm': mkdir /dev/shm: file exists.

/bin/bash: /entrypoint.sh: /bin/bash^M: bad interpreter: No such file or directory - Unable to run on Windows 10

Issue Description 🐛

Kept encountering the following error output upon running the docker container for ROS 2 Humble using the command below in Windows 10:

Command

docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble

Error ⚠️

/bin/bash: /entrypoint.sh: /bin/bash^M: bad interpreter: No such file or directory

Environment 📚

  1. Microsoft Windows 10 Home - 10.0.19045 N/A Build 19045
  2. Docker - 25.0.3

Steps To Reproduce 🔨

Please follow the instructions below to recreate the issue highlighted:

  1. Download the repository
cd %USERPROFILE%/Downloads
git clone https://github.com/Tiryoh/docker-ros2-desktop-vnc.git --depth 1
  1. Build the docker image:
cd %USERPROFILE%/Downloads/docker-ros2-desktop-vnc/humble
docker build -t tiryoh/ros2-desktop-vnc:humble .
  1. Build and run the docker container from docker image:
docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble

Expected Behaviour 🟢

The command prompt terminal should output a similar output as below:

* enable custom user: ubuntu
  set default password to "ubuntu"
============================================================================================
NOTE: --security-opt seccomp=unconfined flag is required to launch Ubuntu Jammy based image.
See https://github.com/Tiryoh/docker-ros2-desktop-vnc/pull/56
============================================================================================
2024-03-25 01:53:27,095 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2024-03-25 01:53:27,096 INFO Set uid to user 0 succeeded
2024-03-25 01:53:27,098 INFO RPC interface 'supervisor' initialized
2024-03-25 01:53:27,099 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2024-03-25 01:53:27,100 INFO supervisord started with pid 44
2024-03-25 01:53:28,102 INFO spawned: 'novnc' with pid 45
2024-03-25 01:53:28,105 INFO spawned: 'vnc' with pid 46
2024-03-25 01:53:29,316 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-03-25 01:53:29,316 INFO success: vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

Actual Behaviour 🔴

Docker container fails to build and run, giving the aforementioned error:

/bin/bash: /entrypoint.sh: /bin/bash^M: bad interpreter: No such file or directory

Rough Workaround 🩹

Make sure that the humble/entrypoint.sh is indented with LF, instead of CRLF. See this article below for more details as to why there is a difference between CRLF and LF, pertaining to different operating systems:

https://dhwaneetbhatt.com/blog/why-crlf-vs-lf/

  1. Open the file humble/entrypoint.sh in your preferred text editor. Search for a setting to convert line ending character from CRLF to LF.

Eg. I used Visual Studio 2019 and it is found on the bottom right as shown below:
image

  1. Once you have the above, rebuild the docker image to load the new entrypoint.sh:
cd %USERPROFILE%/Downloads/docker-ros2-desktop-vnc/humble
docker build -t tiryoh/ros2-desktop-vnc:humble .
  1. Build and run the new docker container from new image:
docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble

Remarks 💬

Going to try and figure out a long term solution since it is slightly annoying to do the Rough Workaround every time. Will update here accordingly once I have done so.

unable to launch with docker compose in pycharm windows 10

here is the snippet of .yml

  nv_ros2_humble_issac:
    #image: tiryoh/ros2-desktop-vnc:humble
    image: tiryoh/ros2-desktop-vnc:humble
    networks:
      - ros_network
    #network_mode: bridge
#    ipc: "host"
#    pid: "host"
#    user: "admin"
    stdin_open: true
    tty: true
    restart: "unless-stopped"
    shm_size: '10G'
    security_opt:
      - seccomp:unconfined
    privileged: true
    environment:
      - FASTRTPS_DEFAULT_PROFILES_FILE=/root/humble_ws/fastdds.xml
      - ROS_DOMAIN_ID=0
      #ros2_act : "alias ros2_activate='source /opt/ros/humble/x64/setup.sh'
    ports:
      - "6080:80"

Suggestion: add terminator

I think "terminator" is an essential tool for ROS developers🤖
Of course the user can install it later if necessary, but for hands-on use of this Docker environment, it is very convenient to have it installed from the beginning.
What do you think about adding this?

ModuleNotFoundError: No module named 'rclpy' when running Docker Image as PyCharm's remote Python interpreter

Hello! Thanks for the wonderful Dockerfiles.

I was just wondering what I can do to make the Python interpreter from these docker images work as a remote Python interpreter in PyCharm?
image

When I just try to run a python file main.py, let's say this one:

import sys
import numpy as np
import rclpy

I get this error in PyCharm's console:

1f229640f3d3:python -u /opt/project/main.py
Traceback (most recent call last):
  File "/opt/project/main.py", line 6, in <module>
    import rclpy
ModuleNotFoundError: No module named 'rclpy'

Process finished with exit code 1

However, when I manually append the missing python packages from ros:

import sys
sys.path.append("/opt/ros/foxy/lib/python3.8/site-packages")
import numpy as np
import rclpy

I get this error:

95eddbfd10a4:python -u /opt/project/main.py
Traceback (most recent call last):
  File "/opt/project/main.py", line 8, in <module>
    from rclpy.node import Node
  File "/opt/ros/foxy/lib/python3.8/site-packages/rclpy/node.py", line 41, in <module>
    from rclpy.client import Client
  File "/opt/ros/foxy/lib/python3.8/site-packages/rclpy/client.py", line 22, in <module>
    from rclpy.impl.implementation_singleton import rclpy_implementation as _rclpy
  File "/opt/ros/foxy/lib/python3.8/site-packages/rclpy/impl/implementation_singleton.py", line 31, in <module>
    rclpy_implementation = _import('._rclpy')
  File "/opt/ros/foxy/lib/python3.8/site-packages/rclpy/impl/__init__.py", line 28, in _import
    return importlib.import_module(name, package='rclpy')
  File "/usr/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
ImportError: librclpy_common.so: cannot open shared object file: No such file or directory
The C extension '/opt/ros/foxy/lib/python3.8/site-packages/rclpy/_rclpy.cpython-38-aarch64-linux-gnu.so' failed to be imported while being present on the system. Please refer to 'https://index.ros.org/doc/ros2/Troubleshooting/Installation-Troubleshooting/#import-failing-even-with-library-present-on-the-system' for possible solutions

Process finished with exit code 1

The same error occurs when I append RUN bash -c "source /opt/ros/foxy/setup.bash" to the Dockerfile.

it is clear that the PyCharm's interpreter is not properly sourced. Any idea how to fix this?

Why `rm /etc/apt/apt.conf.d/docker-clean` is needed?

This may not be a suggestion but a question.

I came across the following line and comment and wondered why they were added and how it works.
https://github.com/Tiryoh/docker-ros2-desktop-vnc/blob/master/humble/Dockerfile#L64-L65

The RUN line seems to have been added with #79 (file) and the relevant comment with #92 (file).

According to these web pages, /etc/apt/apt.conf.d/ contributes to faster builds, and removing it may increase the image size.
https://dev.classmethod.jp/articles/apt-get-magic-spell-in-docker/
https://askubuntu.com/questions/735189/enabling-auto-completion-for-apt-get-install-in-docker-ubuntu-14-04

When tested on an arm64 PC (MacBook), removing this RUN line does indeed significantly reduce the image size (-1 is the RUN line removed).

% docker images
REPOSITORY                      TAG                                            IMAGE ID       CREATED        SIZE
tiryoh/ros2-desktop-vnc-1       humble                                         87ddf8e30560   2 hours ago    6.33GB
tiryoh/ros2-desktop-vnc         humble                                         c5cb1a2daf3c   2 hours ago    7.28GB

I briefly checked the built image with this and it does not seem to have a significant effect on the operation of its container.
My concern is in why you have added this line or thought it is necessary. At least the comment doesn't seem to make sense,,, but if you have a sound reason to do so, I'm fine with it as it is (because the image size is large to begin with :D

If you don't mind, I would be happy to send you a PR about this (as I am already prepared to do so).
https://github.com/takasehideki/docker-ros2-desktop-vnc/tree/rm_docker-clean
takasehideki@6384312

Suggestion: add web browser

The desktop switched to Ubuntu Mate by #92.
On the other hands, web browser was not installed.
So, I suggest to add web browser.

  • Firefox
  • Chrome
  • Chromium etc...

How to start foxy in ubuntu 18?

I want to run foxy container in ubuntu 18.
docker run -p 6080:80 -v /dev/shm:/dev/shm tiryoh/ros2-desktop-vnc:foxy

But it doesn't work, follow as log:

  • enable custom user: ubuntu
    useradd: user 'ubuntu' already exists
    set default password to "ubuntu"
    cp: cannot stat '/root/.config': No such file or directory
    2020-07-07 04:18:55,311 CRIT Supervisor is running as root. Privileges were not dropped because no user is specified in the config file. If you intend to run as root, you can set user=root in the config file to avoid this message.
    2020-07-07 04:18:55,311 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
    2020-07-07 04:18:55,314 INFO RPC interface 'supervisor' initialized
    2020-07-07 04:18:55,314 CRIT Server 'unix_http_server' running without any HTTP authentication checking
    2020-07-07 04:18:55,314 INFO supervisord started with pid 18
    2020-07-07 04:18:56,319 INFO spawned: 'nginx' with pid 20
    2020-07-07 04:18:56,325 INFO spawned: 'web' with pid 21
    2020-07-07 04:18:56,330 INFO spawned: 'xvfb' with pid 22
    2020-07-07 04:18:56,331 INFO spawned: 'wm' with pid 23
    2020-07-07 04:18:56,333 INFO spawned: 'lxpanel' with pid 24
    2020-07-07 04:18:56,336 INFO spawned: 'pcmanfm' with pid 25
    2020-07-07 04:18:56,338 INFO spawned: 'x11vnc' with pid 26
    2020-07-07 04:18:56,339 INFO spawned: 'novnc' with pid 27
    2020-07-07 04:18:56,513 INFO Listening on http://localhost:6079 (run.py:87)
    2020-07-07 04:18:57,349 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,349 INFO success: web entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,349 INFO success: xvfb entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,349 INFO success: wm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,350 INFO success: lxpanel entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,350 INFO success: pcmanfm entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,350 INFO success: x11vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2020-07-07 04:18:57,350 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)

How to solve it?
Thank you for your time.

Run with --net=host break access to vnc

Hi everyone,

I have a new issue which also breaks vnc startup.

For my project, I need to show my network (Ethernet and Wifi e.g. enp2s0 and wlp4s0) inside the container. With another image without vnc it's working when I add this parameter --net=host but with vnc doesn't work and break the startup.

Screenshot inside vnc container without --net=host parameter with ifconfig command (sudo update and sudo apt install net-tools) :
Screenshot from 2024-03-19 09-47-24

How to reproduce

Add --net=host parameter to run a new container :

docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m --net=host tiryoh/ros2-desktop-vnc:humble-amd64

And this appear

WARNING: Published ports are discarded when using host network mode
* enable custom user: ubuntu
  set default password to "ubuntu"
============================================================================================
NOTE: --security-opt seccomp=unconfined flag is required to launch Ubuntu Jammy based image.
See https://github.com/Tiryoh/docker-ros2-desktop-vnc/pull/56
============================================================================================
2024-03-19 13:48:35,463 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
2024-03-19 13:48:35,464 INFO Set uid to user 0 succeeded
2024-03-19 13:48:35,471 INFO RPC interface 'supervisor' initialized
2024-03-19 13:48:35,471 CRIT Server 'unix_http_server' running without any HTTP authentication checking
2024-03-19 13:48:35,471 INFO supervisord started with pid 44
2024-03-19 13:48:36,475 INFO spawned: 'novnc' with pid 45
2024-03-19 13:48:36,479 INFO spawned: 'vnc' with pid 46
2024-03-19 13:48:37,481 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-03-19 13:48:37,481 INFO success: vnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-03-19 13:48:40,372 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:41,376 INFO spawned: 'novnc' with pid 233
2024-03-19 13:48:41,611 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:42,613 INFO spawned: 'novnc' with pid 462
2024-03-19 13:48:44,029 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2024-03-19 13:48:44,029 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:45,033 INFO spawned: 'novnc' with pid 610
2024-03-19 13:48:45,416 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:46,422 INFO spawned: 'novnc' with pid 678
2024-03-19 13:48:46,918 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:48,923 INFO spawned: 'novnc' with pid 696
2024-03-19 13:48:49,223 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:52,229 INFO spawned: 'novnc' with pid 709
2024-03-19 13:48:52,486 INFO exited: novnc (exit status 1; not expected)
2024-03-19 13:48:53,488 INFO gave up: novnc entered FATAL state, too many start retries too quickly

As you can see, a warning appears : WARNING: Published ports are discarded when using host network mode

I found a same Issue here : solarkennedy/ipmi-kvm-docker#10 but the solution with IPv6 doesn't work.
Another solution is to make some change inside vnc_startup.sh VNC_IP=$(ip route get 1 | awk '{print $NF;exit}') ConSol/docker-headless-vnc-container#31

Can you help me ?

Best regards,

lmontagnon

Commit from container error vnc

Hello and thanks for your job !

I have a question : when do you have finish with my container made from your image (tiryoh/ros2-desktop-vnc:humble) how to commit correctly my docker container with vnc ? because i have some issue when i commit and run the new image :

  • enable custom user: ubuntu
    useradd: user 'ubuntu' already exists
    set default password to "ubuntu"
    source /opt/ros/humble/setup.bash
    source /usr/share/colcon_argcomplete/hook/colcon-argcomplete.bash
    ============================================================================================
    NOTE: --security-opt seccomp=unconfined flag is required to launch Ubuntu Jammy based image.
    See #56
    ============================================================================================
    2024-01-25 14:25:19,861 INFO Included extra file "/etc/supervisor/conf.d/supervisord.conf" during parsing
    2024-01-25 14:25:19,861 INFO Set uid to user 0 succeeded
    2024-01-25 14:25:19,872 INFO RPC interface 'supervisor' initialized
    2024-01-25 14:25:19,872 CRIT Server 'unix_http_server' running without any HTTP authentication checking
    2024-01-25 14:25:19,873 INFO supervisord started with pid 37
    2024-01-25 14:25:20,877 INFO spawned: 'novnc' with pid 38
    2024-01-25 14:25:20,880 INFO spawned: 'vnc' with pid 39
    2024-01-25 14:25:21,104 INFO exited: vnc (exit status 1; not expected)
    2024-01-25 14:25:22,286 INFO success: novnc entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
    2024-01-25 14:25:22,288 INFO spawned: 'vnc' with pid 60
    2024-01-25 14:25:22,425 INFO exited: vnc (exit status 1; not expected)
    2024-01-25 14:25:24,430 INFO spawned: 'vnc' with pid 69
    2024-01-25 14:25:24,525 INFO exited: vnc (exit status 1; not expected)
    2024-01-25 14:25:27,531 INFO spawned: 'vnc' with pid 78
    2024-01-25 14:25:27,626 INFO exited: vnc (exit status 1; not expected)
    2024-01-25 14:25:28,628 INFO gave up: vnc entered FATAL state, too many start retries too quickly

How to reproduce

  1. run build docker container of tiryoh/ros2-desktop-vnc:humble-amd64
    docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble-amd64

  2. make some change inside it, stop it (ctrl+c) and commit the container
    docker commit 766f3e47cf4b lmontagnon/testimagevnc:v1

  3. Relaunch step 1. but with my new image lmontagnon/testimagevnc:v1
    docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m lmontagnon/testimagevnc:v1

I'm using ubuntu 22.04 LTS and docker version 25.0.3

Thank you for your help,

lmontagnon

docker push fails sometimes

https://github.com/Tiryoh/docker_ros2-desktop-vnc/runs/1017271211?check_suite_focus=true

2020-08-23T02:24:34.1808472Z ##[group]Run echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin > /dev/null 2>&1
2020-08-23T02:24:34.1808766Z �[36;1mecho "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin > /dev/null 2>&1�[0m
2020-08-23T02:24:34.1808925Z �[36;1mdocker push $DOCKER_USERNAME/$DOCKER_IMAGENAME:$DOCKER_TAGNAME�[0m
2020-08-23T02:24:34.1809067Z �[36;1mTIMESTAMP=$(date '+%Y%m%dT%H%M')�[0m
2020-08-23T02:24:34.1809225Z �[36;1mdocker tag $DOCKER_USERNAME/$DOCKER_IMAGENAME:$DOCKER_TAGNAME $DOCKER_USERNAME/$DOCKER_IMAGENAME:$DOCKER_TAGNAME-$TIMESTAMP�[0m
2020-08-23T02:24:34.1809570Z �[36;1mdocker push $DOCKER_USERNAME/$DOCKER_IMAGENAME:$DOCKER_TAGNAME-$TIMESTAMP�[0m
2020-08-23T02:24:34.1809739Z �[36;1mecho ::set-output name=timestamp::$TIMESTAMP�[0m
2020-08-23T02:24:34.1809918Z �[36;1mecho ::set-output name=digest::$(docker inspect --format='{{index .RepoDigests 0}}' $DOCKER_USERNAME/$DOCKER_IMAGENAME:$DOCKER_TAGNAME-$TIMESTAMP)�[0m
2020-08-23T02:24:34.1903723Z shell: /bin/bash -e {0}
2020-08-23T02:24:34.1903934Z env:
2020-08-23T02:24:34.1904061Z   DOCKER_USERNAME: tiryoh
2020-08-23T02:24:34.1904188Z   DOCKER_IMAGENAME: ros2-desktop-vnc
2020-08-23T02:24:34.1904315Z   GIT_CONFIG_USER: Tiryoh@GitHubActions
2020-08-23T02:24:34.1904554Z   GIT_CONFIG_EMAIL: [email protected]
2020-08-23T02:24:34.1904662Z   DOCKER_TAGNAME: foxy
2020-08-23T02:24:34.1905154Z   DOCKER_PASSWORD: ***
2020-08-23T02:24:34.1905263Z ##[endgroup]
2020-08-23T02:24:35.2458888Z The push refers to repository [docker.io/tiryoh/ros2-desktop-vnc]
2020-08-23T02:24:35.2463749Z fc0452fbd934: Preparing
2020-08-23T02:24:35.2464058Z 994764ca4b49: Preparing
2020-08-23T02:24:35.2464487Z 720a571e4bce: Preparing
2020-08-23T02:24:35.2464746Z e48ba81b0921: Preparing
2020-08-23T02:24:35.2464992Z fdbd84c432a0: Preparing
2020-08-23T02:24:35.2465240Z b85408e327d5: Preparing
2020-08-23T02:24:35.2465488Z a0469ed3f639: Preparing
2020-08-23T02:24:35.2465729Z 1fb9878a1b05: Preparing
2020-08-23T02:24:35.2465972Z 729070424034: Preparing
2020-08-23T02:24:35.2466403Z 90467b4d7ce1: Preparing
2020-08-23T02:24:35.2466649Z 4e4878229cfe: Preparing
2020-08-23T02:24:35.2466894Z 075666e47854: Preparing
2020-08-23T02:24:35.2467136Z 370982b166f8: Preparing
2020-08-23T02:24:35.2467380Z f58ca73dc92c: Preparing
2020-08-23T02:24:35.2467625Z f1939d0544b0: Preparing
2020-08-23T02:24:35.2467867Z 6298bf1f475f: Preparing
2020-08-23T02:24:35.2468109Z 58405a3e44b2: Preparing
2020-08-23T02:24:35.2468398Z 982227cef4ba: Preparing
2020-08-23T02:24:35.2468649Z 544a70a875fc: Preparing
2020-08-23T02:24:35.2468890Z cf0f3facc4a3: Preparing
2020-08-23T02:24:35.2469136Z 132bcd1e0eb5: Preparing
2020-08-23T02:24:35.2469384Z d22cfd6a8b16: Preparing
2020-08-23T02:24:35.2469735Z b85408e327d5: Waiting
2020-08-23T02:24:35.2469946Z a0469ed3f639: Waiting
2020-08-23T02:24:35.2470159Z 1fb9878a1b05: Waiting
2020-08-23T02:24:35.2470371Z 729070424034: Waiting
2020-08-23T02:24:35.2470582Z 90467b4d7ce1: Waiting
2020-08-23T02:24:35.2470794Z 4e4878229cfe: Waiting
2020-08-23T02:24:35.2471005Z 075666e47854: Waiting
2020-08-23T02:24:35.2471221Z 370982b166f8: Waiting
2020-08-23T02:24:35.2471418Z f58ca73dc92c: Waiting
2020-08-23T02:24:35.2471629Z f1939d0544b0: Waiting
2020-08-23T02:24:35.2471837Z 544a70a875fc: Waiting
2020-08-23T02:24:35.2472048Z cf0f3facc4a3: Waiting
2020-08-23T02:24:35.2472255Z 6298bf1f475f: Waiting
2020-08-23T02:24:35.2472464Z 58405a3e44b2: Waiting
2020-08-23T02:24:35.2472673Z 132bcd1e0eb5: Waiting
2020-08-23T02:24:35.2472881Z d22cfd6a8b16: Waiting
2020-08-23T02:24:35.2473090Z 982227cef4ba: Waiting
2020-08-23T02:24:36.9356179Z 720a571e4bce: Pushed
2020-08-23T02:24:37.0155372Z 994764ca4b49: Pushed
2020-08-23T02:24:37.1155806Z fdbd84c432a0: Pushed
2020-08-23T02:24:37.3529158Z b85408e327d5: Layer already exists
2020-08-23T02:24:37.4188897Z a0469ed3f639: Layer already exists
2020-08-23T02:24:37.5990341Z 1fb9878a1b05: Layer already exists
2020-08-23T02:24:37.7484746Z 729070424034: Layer already exists
2020-08-23T02:24:37.9890500Z 90467b4d7ce1: Layer already exists
2020-08-23T02:24:38.0083642Z 4e4878229cfe: Layer already exists
2020-08-23T02:24:38.2570704Z 075666e47854: Layer already exists
2020-08-23T02:24:38.6175758Z f58ca73dc92c: Layer already exists
2020-08-23T02:24:38.6624052Z 370982b166f8: Layer already exists
2020-08-23T02:24:38.9004340Z f1939d0544b0: Layer already exists
2020-08-23T02:24:39.2086882Z 6298bf1f475f: Layer already exists
2020-08-23T02:24:39.2492261Z 58405a3e44b2: Layer already exists
2020-08-23T02:24:39.4114024Z 982227cef4ba: Layer already exists
2020-08-23T02:24:39.7658980Z 544a70a875fc: Layer already exists
2020-08-23T02:24:39.9018342Z cf0f3facc4a3: Layer already exists
2020-08-23T02:24:39.9892166Z 132bcd1e0eb5: Layer already exists
2020-08-23T02:24:40.1506157Z d22cfd6a8b16: Layer already exists
2020-08-23T02:25:08.2862430Z e48ba81b0921: Retrying in 5 seconds
2020-08-23T02:25:08.2933779Z fc0452fbd934: Retrying in 5 seconds
2020-08-23T02:25:09.2865568Z e48ba81b0921: Retrying in 4 seconds
2020-08-23T02:25:09.2937409Z fc0452fbd934: Retrying in 4 seconds
2020-08-23T02:25:10.2866470Z e48ba81b0921: Retrying in 3 seconds
2020-08-23T02:25:10.2937203Z fc0452fbd934: Retrying in 3 seconds
2020-08-23T02:25:11.2866584Z e48ba81b0921: Retrying in 2 seconds
2020-08-23T02:25:11.2935851Z fc0452fbd934: Retrying in 2 seconds
2020-08-23T02:25:12.2865714Z e48ba81b0921: Retrying in 1 second
2020-08-23T02:25:12.2936581Z fc0452fbd934: Retrying in 1 second
2020-08-23T02:26:02.4619644Z e48ba81b0921: Pushed
2020-08-23T02:26:05.5594421Z fc0452fbd934: Retrying in 10 seconds
2020-08-23T02:26:06.5597615Z fc0452fbd934: Retrying in 9 seconds
2020-08-23T02:26:07.5596650Z fc0452fbd934: Retrying in 8 seconds
2020-08-23T02:26:08.5595393Z fc0452fbd934: Retrying in 7 seconds
2020-08-23T02:26:09.5595472Z fc0452fbd934: Retrying in 6 seconds
2020-08-23T02:26:10.5598702Z fc0452fbd934: Retrying in 5 seconds
2020-08-23T02:26:11.5597111Z fc0452fbd934: Retrying in 4 seconds
2020-08-23T02:26:12.5595885Z fc0452fbd934: Retrying in 3 seconds
2020-08-23T02:26:13.5594351Z fc0452fbd934: Retrying in 2 seconds
2020-08-23T02:26:14.5595435Z fc0452fbd934: Retrying in 1 second
2020-08-23T02:28:05.1274870Z fc0452fbd934: Retrying in 15 seconds
2020-08-23T02:28:06.1278055Z fc0452fbd934: Retrying in 14 seconds
2020-08-23T02:28:07.1280138Z fc0452fbd934: Retrying in 13 seconds
2020-08-23T02:28:08.1278662Z fc0452fbd934: Retrying in 12 seconds
2020-08-23T02:28:09.1278787Z fc0452fbd934: Retrying in 11 seconds
2020-08-23T02:28:10.1279205Z fc0452fbd934: Retrying in 10 seconds
2020-08-23T02:28:11.1281202Z fc0452fbd934: Retrying in 9 seconds
2020-08-23T02:28:12.1278680Z fc0452fbd934: Retrying in 8 seconds
2020-08-23T02:28:13.1277667Z fc0452fbd934: Retrying in 7 seconds
2020-08-23T02:28:14.1281565Z fc0452fbd934: Retrying in 6 seconds
2020-08-23T02:28:15.1278020Z fc0452fbd934: Retrying in 5 seconds
2020-08-23T02:28:16.1279647Z fc0452fbd934: Retrying in 4 seconds
2020-08-23T02:28:17.1279295Z fc0452fbd934: Retrying in 3 seconds
2020-08-23T02:28:18.1277461Z fc0452fbd934: Retrying in 2 seconds
2020-08-23T02:28:19.1277982Z fc0452fbd934: Retrying in 1 second
2020-08-23T02:29:06.7787163Z fc0452fbd934: Retrying in 20 seconds
2020-08-23T02:29:07.7787552Z fc0452fbd934: Retrying in 19 seconds
2020-08-23T02:29:08.7786619Z fc0452fbd934: Retrying in 18 seconds
2020-08-23T02:29:09.7789721Z fc0452fbd934: Retrying in 17 seconds
2020-08-23T02:29:10.7786356Z fc0452fbd934: Retrying in 16 seconds
2020-08-23T02:29:11.7788037Z fc0452fbd934: Retrying in 15 seconds
2020-08-23T02:29:12.7788573Z fc0452fbd934: Retrying in 14 seconds
2020-08-23T02:29:13.7788236Z fc0452fbd934: Retrying in 13 seconds
2020-08-23T02:29:14.7787093Z fc0452fbd934: Retrying in 12 seconds
2020-08-23T02:29:15.7787483Z fc0452fbd934: Retrying in 11 seconds
2020-08-23T02:29:16.7786686Z fc0452fbd934: Retrying in 10 seconds
2020-08-23T02:29:17.7790272Z fc0452fbd934: Retrying in 9 seconds
2020-08-23T02:29:18.7786682Z fc0452fbd934: Retrying in 8 seconds
2020-08-23T02:29:19.7784989Z fc0452fbd934: Retrying in 7 seconds
2020-08-23T02:29:20.7786388Z fc0452fbd934: Retrying in 6 seconds
2020-08-23T02:29:21.7785593Z fc0452fbd934: Retrying in 5 seconds
2020-08-23T02:29:22.7787229Z fc0452fbd934: Retrying in 4 seconds
2020-08-23T02:29:23.7786134Z fc0452fbd934: Retrying in 3 seconds
2020-08-23T02:29:24.7786069Z fc0452fbd934: Retrying in 2 seconds
2020-08-23T02:29:25.7787394Z fc0452fbd934: Retrying in 1 second
2020-08-23T02:31:05.7592655Z EOF
2020-08-23T02:31:05.7596505Z ##[error]Process completed with exit code 1.

gazebo was blackout when I run docker image with humble tag

I tryied humble and galactic docker image, and I found that only in humble image, gazebo window is blackout.

docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:galactic

Screenshot from 2023-02-11 21-12-35

docker run -p 6080:80 --shm-size=512m tiryoh/ros2-desktop-vnc:humble

Screenshot from 2023-02-11 21-10-04

Can't connect to local host after 1st time

I was trying to run ros foxy on a docker container. It works fine launching it for the first time, but after I run docker stop container it doesn’t connect anymore to the localhost port. It still works in terminal, but doesn’t work with novnc in the browser.

The command I ran to initialize it was docker create -it -p 6080:80 -v $(pwd):/home/ubuntu/Desktop/yondu_ros --name ros2_gazebo --volumes-from ros2_practice tiryoh/ros2-desktop-vnc:foxy

I'm running it on MacOS Ventura 13.1

I’m not getting any errors except on the browser where it says “failed to connect to server”

OCI Image Format Specification / Label SchemaのLABELを追加

Docker イメージの LABEL 情報は Label-Schema が標準になる - blog.ayakumo.net
https://blog.ayakumo.net/entry/2018/02/06/014647

label-schema-automated-build/build at master · rossf7/label-schema-automated-build
https://github.com/rossf7/label-schema-automated-build/blob/master/hooks/build

Dockerイメージにつけておきたいコメント - galife
https://garafu.blogspot.com/2019/11/docker-image-comments.html

Docker image に OCI で定義されているラベルをつける - zenn
https://zenn.dev/termoshtt/articles/1e0063c1147b3ca631eb

OCI Image Format Specification v1.0.1を読んで | うなすけとあれこれ
https://blog.unasuke.com/2018/read-oci-image-spec-v101/

apt-get install error

------
 > [5/7] RUN apt-get update -q &&     apt-get install -y curl gnupg2 lsb-release &&     curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg &&     echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null &&     apt-get update -q &&     apt-get install -y ros-humble-desktop     python3-argcomplete     python3-colcon-common-extensions     python3-rosdep python3-vcstool &&     rosdep init &&     rm -rf /var/lib/apt/lists/*:
#8 91.96 Get:157 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy/universe amd64 libboost-atomic-dev amd64 1.74.0.3ubuntu7 [3544 B]
#8 91.96 Get:541 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy/universe amd64 libspdlog-dev amd64 1:1.9.2+ds-0.2 [181 kB]
#8 92.01 Get:426 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy/universe amd64 libopencv-flann-dev amd64 4.5.4+dfsg-9ubuntu4 [210 kB]
#8 92.06 Get:496 https://ftp.udx.icscoe.jp/Linux/ubuntu jammy/universe amd64 libpcl-recognition1.12 amd64 1.12.1+dfsg-3build1 [704 kB]
#8 92.88 Get:139 http://ftp.tsukuba.wide.ad.jp/Linux/ubuntu jammy/main amd64 libasound2-dev amd64 1.2.6.1-1ubuntu1 [110 kB]
Fetched 701 MB in 1min 14s (9420 kB/s)
#8 92.99 : Failed to fetch https://jp.mirror.coganng.com/ubuntu/pool/universe/b/boost-defaults/libboost-locale-dev_1.74.0.3ubuntu7_amd64.deb  rename failed, No such file or directory (/var/cache/apt/archives/partial/libboost-locale-dev_1.74.0.3ubuntu7_amd64.deb -> /var/cache/apt/archives/libboost-locale-dev_1.74.0.3ubuntu7_amd64.deb).
#8 92.99 E: Failed to fetch https://jp.mirror.coganng.com/ubuntu/pool/universe/n/nose2/python3-nose2_0.9.2-1_all.deb  rename failed, No such file or directory (/var/cache/apt/archives/partial/python3-nose2_0.9.2-1_all.deb -> /var/cache/apt/archives/python3-nose2_0.9.2-1_all.deb).
#8 92.99 E: Failed to fetch https://jp.mirror.coganng.com/ubuntu-ports/pool/universe/p/python-mccabe/python3-mccabe_0.6.1-3_all.deb  rename failed, No such file or directory (/var/cache/apt/archives/partial/python3-mccabe_0.6.1-3_all.deb -> /var/cache/apt/archives/python3-mccabe_0.6.1-3_all.deb).
#8 92.99 E: Unable to fetch some archives, maybe run apt-get update or try with --fix-missing?
------
ERROR: failed to solve: executor failed running [/bin/bash -c apt-get update -q &&     apt-get install -y curl gnupg2 lsb-release &&     curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg &&     echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/ros2.list > /dev/null &&     apt-get update -q &&     apt-get install -y ros-${ROS_DISTRO}-${INSTALL_PACKAGE}     python3-argcomplete     python3-colcon-common-extensions     python3-rosdep python3-vcstool &&     rosdep init &&     rm -rf /var/lib/apt/lists/*]: exit code: 100
Error: Process completed with exit code 1.

full log: 4_build-and-deploy (humble, amd64).txt

codium install error

 > [linux/amd64 13/16] RUN wget -qO - https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg     | gpg --dearmor     | dd of=/usr/share/keyrings/vscodium-archive-keyring.gpg &&     echo 'deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.gpg ] https://download.vscodium.com/debs vscodium main'     | tee /etc/apt/sources.list.d/vscodium.list &&     apt-get update -q &&     apt-get install -y codium &&     apt-get autoclean &&     apt-get autoremove &&     rm -rf /var/lib/apt/lists/*:
0.853 Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/multiverse amd64 Packages [61.2 kB]
0.854 Get:16 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [1920 kB]
0.867 Get:17 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [2104 kB]
0.882 Get:18 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1358 kB]
0.901 Get:19 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [80.9 kB]
0.901 Get:20 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.3 kB]
1.059 Get:21 https://ppa.launchpadcontent.net/mozillateam/ppa/ubuntu jammy/main amd64 Packages [43.5 kB]

4.235 E: Failed to fetch https://download.vscodium.com/debs/dists/vscodium/InRelease  Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
4.235 E: The repository 'https://download.vscodium.com/debs vscodium InRelease' is not signed.

https://github.com/Tiryoh/docker-ros2-desktop-vnc/actions/runs/8495664213/job/23272192701

Full log: 0_build-and-deploy.txt

Browser does not work

In humble and rolling versions:

Google chrome browser does not work. The icon appears but it is not installed. You should install it downloading using wget and after use option --no-sandbox. Could it be fixed? Maybe installing Firefox correctly, it seems to be installed but it doesn't work either.

Thank you!

Unable to communicate with ROS 2 system outside of docker container.

😊
Once again, thank you for the help in a previous issue @Tiryoh.

This repository has been very helpful thus far, particularly for those getting started with ROS 2 in general and do not want to worry about dependency conflict and environmental setup.

Issue Description

Attempting to run the docker Container does not allow ROS 2 nodes to communicate outside of it on the Host.

The reason why this could be important for it to be able to do so is such that ROS 2 systems developed within the Container can interact and thus integrate better with ROS 2 systems running outside of it.

Steps To Reproduce 🔨

1. Download repository:

cd $HOME
git clone https://github.com/Tiryoh/docker-ros2-desktop-vnc.git --depth 1 --single-branch

2. Build tiryoh/ros2-desktop-vnc:humble-amd64 docker image:

cd $HOME
cd docker-ros2-desktop-vnc/humble
docker buildx build --platform=linux/amd64 --progress=plain -t tiryoh/ros2-desktop-vnc:humble-amd64 .

3. Build docker container:

docker run -p 6080:80 --security-opt seccomp=unconfined --shm-size=512m tiryoh/ros2-desktop-vnc:humble-amd64

4. Access the docker VNC Container:

Open your preferred browser and go to http://127.0.0.1:6080/

5. Within the VNC Container, run demo_node_cpp's talker node:

# In VNC Container, open a new terminal
source /opt/ros/humble/setup.bash
ros2 run demo_node_cpp talker

5. On Host, run demo_node_cpp's listener node:

# In Host, open a new terminal
source /opt/ros/humble/setup.bash
ros2 run demo_node_cpp listener

Expected Behaviour 🟢

While the talker ROS 2 node produces the following output in Container:

[INFO] [1710645559.924575295] [talker]: Publishing: 'Hello World: 1'
[INFO] [1710645560.924465180] [talker]: Publishing: 'Hello World: 2'
[INFO] [1710645561.924515463] [talker]: Publishing: 'Hello World: 3'
[INFO] [1710645562.924504052] [talker]: Publishing: 'Hello World: 4'
...

The listener ROS 2 node in Host should output the following similar output:

[INFO] [1710645638.035280113] [listener]: I heard: [Hello World: 1]
[INFO] [1710645639.035206794] [listener]: I heard: [Hello World: 2]
[INFO] [1710645640.035271774] [listener]: I heard: [Hello World: 3]
[INFO] [1710645641.035294416] [listener]: I heard: [Hello World: 4]
...

Actual Behaviour 🔴

While the talker ROS 2 node produces the following output in Container:

[INFO] [1710645559.924575295] [talker]: Publishing: 'Hello World: 1'
[INFO] [1710645560.924465180] [talker]: Publishing: 'Hello World: 2'
[INFO] [1710645561.924515463] [talker]: Publishing: 'Hello World: 3'
[INFO] [1710645562.924504052] [talker]: Publishing: 'Hello World: 4'
...

Running ros2 run demo_nodes_cpp listener in Host does not output anything.

Remarks 💬

Will be updating below shortly with my own attempts to debug the issue. I am aware of the changes suggested in Issue #138. However, implementing them only resolved the issue partially as you will see below in my various attempts.

I believe, by resolving this issue, it could make it even easier to develop ROS 2 applications for many users since many developers prefer a GUI-based workflow, similar to what is achieved in this repository.

Appreciate any help on this issue. Thank you 🙏

Run with Docker on ARM64

I got the error message below when the command below is issued on ARM64 Linux
sudo docker run -it -p 6080:80 -v /new_folder --name ros2_new_folder tiryoh/ros2-desktop-vnc:foxy

The error message

Digest: sha256:2db597366a4b6efbaeb14079a42624d5fa4f7a15c35dca12015bfaeaa6e9ab35
Status: Downloaded newer image for tiryoh/ros2-desktop-vnc:foxy
standard_init_linux.go:211: exec user process caused "exec format error"

Environment:

  • The board is Toradex Verdin Mini
  • OS is Torizon Linux cretaed with Yocto

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.